X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodemanager.py;h=e998a0488a02263e15c19922315f4cb94a79380f;hb=7f15d76b299a996cd8501de1a2f3411696e6bb0b;hp=162d1fd340d7343dd8fed39d5f45b41ce8fad5eb;hpb=08d6f2b70b86a10b222a5afe80945598296196ad;p=nodemanager.git diff --git a/nodemanager.py b/nodemanager.py index 162d1fd..e998a04 100755 --- a/nodemanager.py +++ b/nodemanager.py @@ -1,8 +1,5 @@ #!/usr/bin/python # -# $Id$ -# $URL$ -# # Useful information can be found at https://svn.planet-lab.org/wiki/NodeManager # @@ -18,16 +15,16 @@ import xmlrpclib import socket import os import sys -import resource import glob import pickle +import random +import resource import logger import tools from config import Config from plcapi import PLCAPI -import random class NodeManager: @@ -202,7 +199,16 @@ If this is not the case, please remove the pid file %s. -- exiting""" % (other_p m.start() self.loaded_modules.append(m) except ImportError, err: - print "Warning while loading module %s:" % module, 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: + logger.log("FATAL : failed to start core module %s"%module) # sort on priority (lower first) def sort_module_priority (m1,m2): @@ -241,10 +247,13 @@ If this is not the case, please remove the pid file %s. -- exiting""" % (other_p while True: # Main nodemanager Loop + work_beg=time.time() logger.log('nodemanager: mainloop - calling GetSlivers - period=%d random=%d'%(iperiod,irandom)) self.GetSlivers(config, plc) delay=iperiod + random.randrange(0,irandom) - logger.log('nodemanager: mainloop - sleeping for %d s'%delay) + work_end=time.time() + 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")