X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2FBootManager.py;h=b49d978ffa0966178349376b36a2f5e8e13cf264;hb=88cfdd881bbd5191eaaf6408e0b8d57bfdf51438;hp=ea8015a05de7a4d8587ca3abb69e8000a64d1d63;hpb=3d3501347eac5ca2db4bfd37d0af471984c56b48;p=bootmanager.git diff --git a/source/BootManager.py b/source/BootManager.py index ea8015a..b49d978 100755 --- a/source/BootManager.py +++ b/source/BootManager.py @@ -56,13 +56,13 @@ from gzip import GzipFile from steps import * from Exceptions import * import notify_messages +import BootServerRequest # all output is written to this file LOG_FILE= "/tmp/bm.log" -CURL_PATH= "curl" -UPLOAD_LOG_URL = "http://boot.planet-lab.org/alpina-logs/upload.php" +UPLOAD_LOG_PATH = "/alpina-logs/upload.php" # the new contents of PATH when the boot manager is running BIN_PATH= ('/usr/local/bin', @@ -86,9 +86,6 @@ class log: print( "Unable to open output file for log, continuing" ) self.OutputFile= None - # for upload - os.system( "ifconfig eth0 > /tmp/ifconfig" ) - def LogEntry( self, str, inc_newline= 1, display_screen= 1 ): if self.OutputFile: @@ -122,15 +119,16 @@ class log: """ if self.OutputFile is not None: - self.LogEntry( "Uploading logs to %s" % UPLOAD_LOG_URL ) + self.LogEntry( "Uploading logs to %s" % UPLOAD_LOG_PATH ) self.OutputFile.close() self.OutputFile= None - - curl_cmd= "%s -s --connect-timeout 60 --max-time 600 " \ - "--form log=@%s --form ifconfig=\ function hash table + states = {'new':_newRun, + 'inst':_newRun, + 'rins':_rinsRun, + 'boot':_bootRun, + 'dbg':_debugRun} try: InitializeBootManager.Run( self.VARS, self.LOG ) ReadNodeConfiguration.Run( self.VARS, self.LOG ) AuthenticateWithPLC.Run( self.VARS, self.LOG ) GetAndUpdateNodeDetails.Run( self.VARS, self.LOG ) - - if self.VARS['BOOT_STATE'] == 'new' or \ - self.VARS['BOOT_STATE'] == 'inst': - if not ConfirmInstallWithUser.Run( self.VARS, self.LOG ): - return 0 - - self.VARS['BOOT_STATE']= 'rins' - UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) - - if not CheckHardwareRequirements.Run( self.VARS, self.LOG ): - self.VARS['BOOT_STATE']= 'dbg' - UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) - raise BootManagerException, "Hardware requirements not met." - - self.RunInstaller() - - if ValidateNodeInstall.Run( self.VARS, self.LOG ): - SendHardwareConfigToPLC.Run( self.VARS, self.LOG ) - ChainBootNode.Run( self.VARS, self.LOG ) - else: - self.VARS['BOOT_STATE']= 'dbg' - self.VARS['STATE_CHANGE_NOTIFY']= 1 - self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \ - notify_messages.MSG_NODE_NOT_INSTALLED - UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) - - - elif self.VARS['BOOT_STATE'] == 'rins': - if not CheckHardwareRequirements.Run( self.VARS, self.LOG ): - self.VARS['BOOT_STATE']= 'dbg' - UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) - raise BootManagerException, "Hardware requirements not met." - - self.RunInstaller() - - if ValidateNodeInstall.Run( self.VARS, self.LOG ): - SendHardwareConfigToPLC.Run( self.VARS, self.LOG ) - ChainBootNode.Run( self.VARS, self.LOG ) - else: - self.VARS['BOOT_STATE']= 'dbg' - self.VARS['STATE_CHANGE_NOTIFY']= 1 - self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \ - notify_messages.MSG_NODE_NOT_INSTALLED - UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) - - elif self.VARS['BOOT_STATE'] == 'boot': - if ValidateNodeInstall.Run( self.VARS, self.LOG ): - UpdateNodeConfiguration.Run( self.VARS, self.LOG ) - CheckForNewDisks.Run( self.VARS, self.LOG ) - SendHardwareConfigToPLC.Run( self.VARS, self.LOG ) - ChainBootNode.Run( self.VARS, self.LOG ) - else: - self.VARS['BOOT_STATE']= 'dbg' - self.VARS['STATE_CHANGE_NOTIFY']= 1 - self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \ - notify_messages.MSG_NODE_NOT_INSTALLED - UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) - - elif self.VARS['BOOT_STATE'] == 'dbg': - StartDebug.Run( self.VARS, self.LOG ) + + stateRun = states.get(self.VARS['BOOT_STATE'],_badRun) + stateRun() except KeyError, e: self.LOG.write( "\n\nKeyError while running: %s\n" % str(e) ) @@ -308,7 +316,6 @@ class BootManager: InstallInit.Run( self.VARS, self.LOG ) InstallPartitionDisks.Run( self.VARS, self.LOG ) InstallBootstrapRPM.Run( self.VARS, self.LOG ) - InstallBase.Run( self.VARS, self.LOG ) InstallWriteConfig.Run( self.VARS, self.LOG ) InstallBuildVServer.Run( self.VARS, self.LOG ) InstallNodeInit.Run( self.VARS, self.LOG )