VARS_FILE = "configuration"
# the set of valid node run states
- NodeRunStates = {'install':None,
- 'reinstall':None,
+ NodeRunStates = {'reinstall':None,
'boot':None,
- 'failboot':None,
'safeboot':None,
'disabled':None,
}
at the top of each of the invididual step functions.
"""
- def _nodeNotInstalled():
+ def _nodeNotInstalled(message='MSG_NODE_NOT_INSTALLED'):
# called by the _xxxState() functions below upon failure
- self.VARS['BOOT_STATE']= 'failboot'
+ self.VARS['RUN_LEVEL']= 'failboot'
+ notify = getattr(notify_messages, message)
self.VARS['STATE_CHANGE_NOTIFY']= 1
- self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \
- notify_messages.MSG_NODE_NOT_INSTALLED
- raise BootManagerException, \
- notify_messages.MSG_NODE_NOT_INSTALLED
+ self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= notify
+ raise BootManagerException, notify
def _bootRun():
# implements the boot logic, which consists of first
pass
InstallInit.Run( self.VARS, self.LOG )
- if ValidateNodeInstall.Run( self.VARS, self.LOG ):
+ ret = ValidateNodeInstall.Run( self.VARS, self.LOG )
+ if ret == 1:
WriteModprobeConfig.Run( self.VARS, self.LOG )
MakeInitrd.Run( self.VARS, self.LOG )
WriteNetworkConfig.Run( self.VARS, self.LOG )
CheckForNewDisks.Run( self.VARS, self.LOG )
SendHardwareConfigToPLC.Run( self.VARS, self.LOG )
ChainBootNode.Run( self.VARS, self.LOG )
+ elif ret == -1:
+ _nodeNotInstalled('MSG_NODE_FILESYSTEM_CORRUPT')
+ elif ret == -2:
+ _nodeNotInstalled('MSG_NODE_MOUNT_FAILED')
+ elif ret == -3:
+ _nodeNotInstalled('MSG_NODE_MISSING_KERNEL')
else:
_nodeNotInstalled()
# software, and upon correct installation will switch too
# 'boot' state and chainboot into the production system
if not CheckHardwareRequirements.Run( self.VARS, self.LOG ):
- self.VARS['BOOT_STATE']= 'failboot'
+ self.VARS['RUN_LEVEL']= 'failboot'
raise BootManagerException, "Hardware requirements not met."
# runinstaller
if not ConfirmInstallWithUser.Run( self.VARS, self.LOG ):
return 0
self.VARS['BOOT_STATE']= 'reinstall'
- UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
+ UpdateRunLevelWithPLC.Run( self.VARS, self.LOG )
_reinstallRun()
def _debugRun(state='failboot'):
# implements debug logic, which starts the sshd and just waits around
- self.VARS['BOOT_STATE']=state
- UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
+ 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 )
_debugRun()
# setup state -> function hash table
- BootManager.NodeRunStates['install'] = _installRun
BootManager.NodeRunStates['reinstall'] = _reinstallRun
BootManager.NodeRunStates['boot'] = _bootRun
- BootManager.NodeRunStates['failboot'] = _bootRun # should always try to boot.
BootManager.NodeRunStates['safeboot'] = lambda : _debugRun('safeboot')
BootManager.NodeRunStates['disabled'] = lambda : _debugRun('disabled')
InitializeBootManager.Run( self.VARS, self.LOG )
ReadNodeConfiguration.Run( self.VARS, self.LOG )
AuthenticateWithPLC.Run( self.VARS, self.LOG )
+ StartRunlevelAgent.Run( self.VARS, self.LOG )
GetAndUpdateNodeDetails.Run( self.VARS, self.LOG )
# override machine's current state from the command line
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()