update run level rather than the boot state
only upudate boot state for manual calls and reinstall->boot
VARS_FILE = "configuration"
# the set of valid node run states
VARS_FILE = "configuration"
# the set of valid node run states
- NodeRunStates = {'install':None,
- 'reinstall':None,
+ NodeRunStates = {'reinstall':None,
'safeboot':None,
'disabled':None,
}
'safeboot':None,
'disabled':None,
}
def _nodeNotInstalled():
# called by the _xxxState() functions below upon failure
def _nodeNotInstalled():
# called by the _xxxState() functions below upon failure
- self.VARS['BOOT_STATE']= 'failboot'
+ self.VARS['RUN_LEVEL']= 'failboot'
self.VARS['STATE_CHANGE_NOTIFY']= 1
self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_NODE_NOT_INSTALLED
self.VARS['STATE_CHANGE_NOTIFY']= 1
self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_NODE_NOT_INSTALLED
# software, and upon correct installation will switch too
# 'boot' state and chainboot into the production system
if not CheckHardwareRequirements.Run( self.VARS, self.LOG ):
# 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
raise BootManagerException, "Hardware requirements not met."
# runinstaller
if not ConfirmInstallWithUser.Run( self.VARS, self.LOG ):
return 0
self.VARS['BOOT_STATE']= 'reinstall'
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
_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 )
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
_debugRun()
# setup state -> function hash table
- BootManager.NodeRunStates['install'] = _installRun
BootManager.NodeRunStates['reinstall'] = _reinstallRun
BootManager.NodeRunStates['boot'] = _bootRun
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')
BootManager.NodeRunStates['safeboot'] = lambda : _debugRun('safeboot')
BootManager.NodeRunStates['disabled'] = lambda : _debugRun('disabled')
if self.forceState is not None:
self.VARS['BOOT_STATE']= self.forceState
UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
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()
stateRun = BootManager.NodeRunStates.get(self.VARS['BOOT_STATE'],_badstateRun)
stateRun()
-import UpdateBootStateWithPLC
import UpdateNodeConfiguration
from Exceptions import *
import utils
import UpdateNodeConfiguration
from Exceptions import *
import utils
['boot_state', 'nodegroup_ids', 'interface_ids', 'model', 'site_id']))[0]
vars['BOOT_STATE']= node_details['boot_state']
['boot_state', 'nodegroup_ids', 'interface_ids', 'model', 'site_id']))[0]
vars['BOOT_STATE']= node_details['boot_state']
+ vars['RUN_LEVEL']= node_details['boot_state']
vars['NODE_MODEL']= string.strip(node_details['model'])
vars['SITE_ID'] = node_details['site_id']
log.write( "Successfully retrieved node record.\n" )
vars['NODE_MODEL']= string.strip(node_details['model'])
vars['SITE_ID'] = node_details['site_id']
log.write( "Successfully retrieved node record.\n" )
import BootServerRequest
import BootAPI
import notify_messages
import BootServerRequest
import BootAPI
import notify_messages
-import UpdateBootStateWithPLC
+import UpdateRunLevelWithPLC
# two possible names of the configuration files
# two possible names of the configuration files
if can_make_api_call:
log.write( "Notifying contacts of problem.\n" )
if can_make_api_call:
log.write( "Notifying contacts of problem.\n" )
- vars['BOOT_STATE']= 'failboot'
+ vars['RUN_LEVEL']= 'failboot'
vars['STATE_CHANGE_NOTIFY']= 1
vars['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_HOSTNAME_NOT_RESOLVE
vars['STATE_CHANGE_NOTIFY']= 1
vars['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_HOSTNAME_NOT_RESOLVE
- UpdateBootStateWithPLC.Run( vars, log )
+ UpdateRunLevelWithPLC.Run( vars, log )
log.write( "\n\n" )
log.write( "The hostname and/or ip in the network configuration\n" )
log.write( "\n\n" )
log.write( "The hostname and/or ip in the network configuration\n" )
"""
Change this nodes boot state at PLC.
"""
Change this nodes boot state at PLC.
+ The only valid transition is from reinstall to boot. All other changes to
+ the boot state of a node should be performed by the Admin, Tech or PI
+ through the API or Web interface.
+
The current value of the BOOT_STATE key in vars is used.
Optionally, notify the contacts of the boot state change.
If this is the case, the following keys/values
The current value of the BOOT_STATE key in vars is used.
Optionally, notify the contacts of the boot state change.
If this is the case, the following keys/values
if eth_count == 0:
log.write( "\nIt appears we don't have any network drivers. Aborting.\n" )
if eth_count == 0:
log.write( "\nIt appears we don't have any network drivers. Aborting.\n" )
- vars['BOOT_STATE']= 'failboot'
+ vars['RUN_LEVEL']= 'failboot'
vars['STATE_CHANGE_NOTIFY']= 1
vars['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_NO_DETECTED_NETWORK
vars['STATE_CHANGE_NOTIFY']= 1
vars['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_NO_DETECTED_NETWORK
"GetAndUpdateNodeDetails",
"ConfirmInstallWithUser",
"UpdateBootStateWithPLC",
"GetAndUpdateNodeDetails",
"ConfirmInstallWithUser",
"UpdateBootStateWithPLC",
+ "UpdateRunLevelWithPLC",
"CheckHardwareRequirements",
"SendHardwareConfigToPLC",
"InitializeBootManager",
"CheckHardwareRequirements",
"SendHardwareConfigToPLC",
"InitializeBootManager",