-#!/usr/bin/python2 -u
+#!/usr/bin/python -u
# Copyright (c) 2003 Intel Corporation
# All rights reserved.
import string
import sys, os, traceback
-from time import gmtime, strftime
-from gzip import GzipFile
+import time
+import gzip
from steps import *
from Exceptions import *
class log:
+ format="%H:%M:%S(%Z) "
+
def __init__( self, OutputFilePath= None ):
if OutputFilePath:
try:
self.OutputFilePath= OutputFilePath
- self.OutputFile= GzipFile( OutputFilePath, "w", 9 )
+ self.OutputFile= gzip.GzipFile( OutputFilePath, "w", 9 )
except:
print( "Unable to open output file for log, continuing" )
self.OutputFile= None
def LogEntry( self, str, inc_newline= 1, display_screen= 1 ):
+ now=time.strftime(log.format, time.localtime())
if self.OutputFile:
- self.OutputFile.write( str )
+ self.OutputFile.write( now+str )
if display_screen:
- sys.stdout.write( str )
+ sys.stdout.write( now+str )
if inc_newline:
if display_screen:
"""
if self.OutputFile is not None:
+ self.LogEntry( "NOTE: upload logs is known to be broken (beg)")
self.LogEntry( "Uploading logs to %s" % UPLOAD_LOG_PATH )
self.OutputFile.close()
GetVars = None, PostVars = None,
FormData = ["log=@" + self.OutputFilePath],
DoSSL = True, DoCertCheck = True)
+ self.LogEntry( "NOTE: upload logs is known to be broken (end)")
def _nodeNotInstalled():
# called by the _xxxState() functions below upon failure
- self.VARS['BOOT_STATE']= 'dbg'
+ self.VARS['BOOT_STATE']= 'failboot'
self.VARS['STATE_CHANGE_NOTIFY']= 1
self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \
notify_messages.MSG_NODE_NOT_INSTALLED
WriteModprobeConfig.Run( self.VARS, self.LOG )
MakeInitrd.Run( self.VARS, self.LOG )
WriteNetworkConfig.Run( self.VARS, self.LOG )
- # the following step should be done by NM
- 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:
_nodeNotInstalled()
- def _rinsRun():
+ def _reinstallRun():
# implements the reinstall logic, which will check whether
# the min. hardware requirements are met, install the
# 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']= 'dbg'
+ self.VARS['BOOT_STATE']= 'failboot'
raise BootManagerException, "Hardware requirements not met."
# runinstaller
InstallInit.Run( self.VARS, self.LOG )
InstallPartitionDisks.Run( self.VARS, self.LOG )
- InstallBootstrapRPM.Run( self.VARS, self.LOG )
+ InstallBootstrapFS.Run( self.VARS, self.LOG )
InstallWriteConfig.Run( self.VARS, self.LOG )
InstallUninitHardware.Run( self.VARS, self.LOG )
self.VARS['BOOT_STATE']= 'boot'
def _newRun():
# implements the new install logic, which will first check
# with the user whether it is ok to install on this
- # machine, switch to 'rins' state and then invoke the rins
- # logic. See rinsState logic comments for further
+ # machine, switch to 'reinstall' state and then invoke the reinstall
+ # logic. See reinstallState logic comments for further
# details.
if not ConfirmInstallWithUser.Run( self.VARS, self.LOG ):
return 0
- self.VARS['BOOT_STATE']= 'rins'
+ self.VARS['BOOT_STATE']= 'reinstall'
UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
- _rinsRun()
+ _reinstallRun()
- def _debugRun():
+ def _debugRun(state='failboot'):
# implements debug logic, which just starts the sshd
# and just waits around
- self.VARS['BOOT_STATE']='dbg'
+ self.VARS['BOOT_STATE']=state
UpdateBootStateWithPLC.Run( self.VARS, self.LOG )
StartDebug.Run( self.VARS, self.LOG )
global NodeRunStates
# setup state -> function hash table
- NodeRunStates['new'] = _newRun
- NodeRunStates['inst'] = _newRun
- NodeRunStates['rins'] = _rinsRun
+ NodeRunStates['install'] = _newRun
+ NodeRunStates['reinstall'] = _reinstallRun
NodeRunStates['boot'] = _bootRun
- NodeRunStates['dbg'] = _debugRun
+ NodeRunStates['failboot'] = _bootRun # should always try to boot.
+ NodeRunStates['safeboot'] = lambda : _debugRun('safeboot')
+ NodeRunStates['disabled'] = lambda : _debugRun('disabled')
success = 0
try:
def main(argv):
+
+ import utils
+ utils.prompt_for_breakpoint_mode()
+
+ #utils.breakpoint ("Entering BootManager::main")
+
global NodeRunStates
- NodeRunStates = {'new':None,
- 'inst':None,
- 'rins':None,
+ NodeRunStates = {'install':None,
+ 'reinstall':None,
'boot':None,
- 'dbg':None}
+ 'safeboot':None,
+ 'failboot':None,
+ 'disabled':None, }
# set to 1 if error occurred
error= 0
LOG= log( LOG_FILE )
LOG.LogEntry( "BootManager started at: %s" % \
- strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) )
+ time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) )
try:
forceState = None
if error:
LOG.LogEntry( "BootManager finished at: %s" % \
- strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) )
+ time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) )
LOG.Upload()
return error
traceback.print_exc()
LOG.LogEntry( "BootManager finished at: %s" % \
- strftime("%a, %d %b %Y %H:%M:%S +0000", gmtime()) )
+ time.strftime("%a, %d %b %Y %H:%M:%S +0000", time.gmtime()) )
LOG.Upload()
return error