X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2FBootManager.py;h=af5efa379e16708be6b1b683288f9919e66c8872;hb=7f60a98018578e2303a51f752721eb35a89ed461;hp=ea8015a05de7a4d8587ca3abb69e8000a64d1d63;hpb=3d3501347eac5ca2db4bfd37d0af471984c56b48;p=bootmanager.git diff --git a/source/BootManager.py b/source/BootManager.py index ea8015a..af5efa3 100755 --- a/source/BootManager.py +++ b/source/BootManager.py @@ -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: @@ -128,7 +125,7 @@ class log: 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) )