Step to hook into Ansible
[bootmanager.git] / source / BootManager.py
index 4ea06c8..32d7ba8 100755 (executable)
@@ -1,8 +1,5 @@
 #!/usr/bin/python -u
 #
-# $Id$
-# $URL$
-#
 # Copyright (c) 2003 Intel Corporation
 # All rights reserved.
 #
@@ -148,7 +145,8 @@ class log:
         if extra_file is not None:
             # NOTE: for code-reuse, evoke the bash function 'upload_logs'; 
             # by adding --login, bash reads .bash_profile before execution.
-            utils.sysexec( """bash --login -c "upload_logs %s" """ % extra_file, self)
+            # Also, never fail, since this is an optional feature.
+            utils.sysexec_noerr( """bash --login -c "upload_logs %s" """ % extra_file, self)
 
 
 ##############################
@@ -200,7 +198,7 @@ class BootManager:
         If requriements not met, but tests were succesfull, return 0.
 
         for steps that run within the installer, they are expected to either
-        complete succesfully and return 1, or throw an execption.
+        complete succesfully and return 1, or throw an exception.
 
         For exact return values and expected operations, see the comments
         at the top of each of the invididual step functions.
@@ -231,7 +229,13 @@ class BootManager:
             InstallInit.Run( self.VARS, self.LOG )                    
             ret = ValidateNodeInstall.Run( self.VARS, self.LOG )
             if ret == 1:
-                WriteModprobeConfig.Run( self.VARS, self.LOG )
+# Thierry - feb. 2013 turning off WriteModprobeConfig for now on lxc
+# for one thing this won't work at all with f18, as modules.pcimap
+# has disappeared (Daniel suggested modules.aliases could be used instead)
+# and second, in any case it's been years now that modprobe.conf was deprecated
+# so most likely this code has no actual effect
+                if self.VARS['virt'] == 'vs':
+                    WriteModprobeConfig.Run( self.VARS, self.LOG )
                 WriteNetworkConfig.Run( self.VARS, self.LOG )
                 CheckForNewDisks.Run( self.VARS, self.LOG )
                 SendHardwareConfigToPLC.Run( self.VARS, self.LOG )
@@ -273,6 +277,7 @@ class BootManager:
             self.VARS['STATE_CHANGE_NOTIFY']= 1
             self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \
                  notify_messages.MSG_INSTALL_FINISHED
+            AnsibleHook.Run( self.VARS, self.LOG )
             UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
             _bootRun()
             
@@ -285,13 +290,13 @@ class BootManager:
             if not ConfirmInstallWithUser.Run( self.VARS, self.LOG ):
                 return 0
             self.VARS['BOOT_STATE']= 'reinstall'
-            UpdateRunLevelWithPLC.Run( self.VARS, self.LOG )
+
+            AnsibleHook.Run( self.VARS, self.LOG )
             _reinstallRun()
 
         def _debugRun(state='failboot'):
             # implements debug logic, which starts the sshd and just waits around
             self.VARS['RUN_LEVEL']=state
-            UpdateRunLevelWithPLC.Run( self.VARS, self.LOG )
             StartDebug.Run( self.VARS, self.LOG )
             # fsck/mount fs if present, and ignore return value if it's not.
             ValidateNodeInstall.Run( self.VARS, self.LOG )
@@ -312,6 +317,7 @@ class BootManager:
             InitializeBootManager.Run( self.VARS, self.LOG )
             ReadNodeConfiguration.Run( self.VARS, self.LOG )
             AuthenticateWithPLC.Run( self.VARS, self.LOG )
+            UpdateLastBootOnce.Run( self.VARS, self.LOG )
             StartRunlevelAgent.Run( self.VARS, self.LOG )
             GetAndUpdateNodeDetails.Run( self.VARS, self.LOG )
 
@@ -319,7 +325,6 @@ class BootManager:
             if self.forceState is not None:
                 self.VARS['BOOT_STATE']= self.forceState
                 UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
-                UpdateRunLevelWithPLC.Run( self.VARS, self.LOG )
 
             stateRun = BootManager.NodeRunStates.get(self.VARS['BOOT_STATE'],_badstateRun)
             stateRun()
@@ -358,7 +363,7 @@ def main(argv):
     import utils
     utils.prompt_for_breakpoint_mode()
 
-    utils.breakpoint ("Entering BootManager::main")
+#    utils.breakpoint ("Entering BootManager::main")
     
     # set to 1 if error occurred
     error= 0
@@ -368,7 +373,7 @@ def main(argv):
     LOG= log( BM_NODE_LOG )
 
     # NOTE: assume CWD is BM's source directory, but never fail
-    utils.sysexec("./setup_bash_history_scripts.sh || /bin/true", LOG)
+    utils.sysexec_noerr("./setup_bash_history_scripts.sh", LOG)
 
     LOG.LogEntry( "BootManager started at: %s" % \
                   time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) )