X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=source%2FBootManager.py;h=5270c6ccc555d35ee1d8b3e64a5fbcec52f38403;hb=a583998ec42f6ba8f02bc39471e646ac746ce3c4;hp=3c3f1d4a8557b07af0f86f90d4be01fe661ca120;hpb=7a73fb13b2a2af2d470da53fbb43760ea2544638;p=bootmanager.git diff --git a/source/BootManager.py b/source/BootManager.py index 3c3f1d4..5270c6c 100755 --- a/source/BootManager.py +++ b/source/BootManager.py @@ -6,8 +6,9 @@ # Copyright (c) 2004-2006 The Trustees of Princeton University # All rights reserved. +import sys, os +import traceback import string -import sys, os, traceback import time import gzip @@ -109,6 +110,12 @@ class log: """ self.LogEntry( str, 0, 1 ) + def print_stack (self): + """ + dump current stack in log + """ + self.write ( traceback.format_exc() ) + # bm log uploading is available back again, as of nodeconfig-5.0-2 def Upload( self, extra_file=None ): """ @@ -198,7 +205,7 @@ class BootManager: If requriements not met, but tests were succesfull, return 0. for steps that run within the installer, they are expected to either - complete succesfully and return 1, or throw an execption. + complete succesfully and return 1, or throw an exception. For exact return values and expected operations, see the comments at the top of each of the invididual step functions. @@ -229,7 +236,13 @@ class BootManager: InstallInit.Run( self.VARS, self.LOG ) ret = ValidateNodeInstall.Run( self.VARS, self.LOG ) if ret == 1: - WriteModprobeConfig.Run( self.VARS, self.LOG ) +# Thierry - feb. 2013 turning off WriteModprobeConfig for now on lxc +# for one thing this won't work at all with f18, as modules.pcimap +# has disappeared (Daniel suggested modules.aliases could be used instead) +# and second, in any case it's been years now that modprobe.conf was deprecated +# so most likely this code has no actual effect + if self.VARS['virt'] == 'vs': + WriteModprobeConfig.Run( self.VARS, self.LOG ) WriteNetworkConfig.Run( self.VARS, self.LOG ) CheckForNewDisks.Run( self.VARS, self.LOG ) SendHardwareConfigToPLC.Run( self.VARS, self.LOG ) @@ -271,6 +284,7 @@ class BootManager: self.VARS['STATE_CHANGE_NOTIFY']= 1 self.VARS['STATE_CHANGE_NOTIFY_MESSAGE']= \ notify_messages.MSG_INSTALL_FINISHED + AnsibleHook.Run( self.VARS, self.LOG ) UpdateBootStateWithPLC.Run( self.VARS, self.LOG ) _bootRun() @@ -283,6 +297,8 @@ class BootManager: if not ConfirmInstallWithUser.Run( self.VARS, self.LOG ): return 0 self.VARS['BOOT_STATE']= 'reinstall' + + AnsibleHook.Run( self.VARS, self.LOG ) _reinstallRun() def _debugRun(state='failboot'): @@ -323,18 +339,20 @@ class BootManager: except KeyError, e: self.LOG.write( "\n\nKeyError while running: %s\n" % str(e) ) + self.LOG.print_stack () except BootManagerException, e: self.LOG.write( "\n\nException while running: %s\n" % str(e) ) + self.LOG.print_stack () except BootManagerAuthenticationException, e: self.LOG.write( "\n\nFailed to Authenticate Node: %s\n" % str(e) ) + self.LOG.print_stack () # sets /tmp/CANCEL_BOOT flag StartDebug.Run(self.VARS, self.LOG ) # Return immediately b/c any other calls to API will fail return success except: self.LOG.write( "\n\nImplementation Error\n") - traceback.print_exc(file=self.LOG.OutputFile) - traceback.print_exc() + self.LOG.print_stack () if not success: try: