if getattr(module,'persistent_data',False):
module_data=last_data
callback(data, config, plc)
+ except SystemExit as e:
+ sys.exit(e)
except:
logger.log_exc("nodemanager: GetSlivers failed to run callback for module %r"%module)
# set log level
if (self.options.verbose):
logger.set_level(logger.LOG_VERBOSE)
+ tools.init_signals()
# Load /etc/planetlab/plc_config
config = Config(self.options.config)
try:
m = __import__(module)
logger.verbose("nodemanager: triggering %s.start"%m.__name__)
- m.start()
+ try: m.start()
+ except: logger.log("WARNING: module %s did not start")
self.loaded_modules.append(m)
- except ImportError, err:
- logger.log_exc ("ERROR while loading module %s - skipping:" % module)
- # if we fail to load any of these, it's really no need to go on any further
- if module in NodeManager.core_modules:
- logger.log("FATAL : failed to load core module %s"%module)
- except AttributeError, err:
- # triggered when module doesn't have a 'start' method
- logger.log_exc ("ERROR while starting module %s - skipping:" % module)
- # if we fail to load any of these, it's really no need to go on any further
- if module in NodeManager.core_modules:
+ except:
+ if module not in NodeManager.core_modules:
+ logger.log_exc ("ERROR while loading module %s - skipped" % module)
+ else:
logger.log("FATAL : failed to start core module %s"%module)
+ sys.exit(1)
# sort on priority (lower first)
def sort_module_priority (m1,m2):
work_duration=int(work_end-work_beg)
logger.log('nodemanager: mainloop has worked for %s s - sleeping for %d s'%(work_duration,delay))
time.sleep(delay)
- except: logger.log_exc("nodemanager: failed in run")
+ except SystemExit:
+ pass
+ except:
+ logger.log_exc("nodemanager: failed in run")
def run():
logger.log("======================================== Entering nodemanager.py")