X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=nodemanager.py;h=8e5c2ec93007f5c7685ae95a882231d10841700e;hb=3b803c07f52a5ed6394c965d9a31e73402c439ba;hp=386776fb3aab820fa26f116eef2b98504698fe9a;hpb=22d40df4ed31c001fd58966640ed0c5079d486e6;p=nodemanager.git diff --git a/nodemanager.py b/nodemanager.py index 386776f..8e5c2ec 100755 --- a/nodemanager.py +++ b/nodemanager.py @@ -32,8 +32,6 @@ import random class NodeManager: - id="$Id$" - PLUGIN_PATH = "/usr/share/NodeManager/plugins" DB_FILE = "/var/lib/nodemanager/getslivers.pickle" @@ -42,7 +40,7 @@ class NodeManager: # NOTE: modules listed here will also be loaded in this order # once loaded, they get re-ordered after their priority (lower comes first) # for determining the runtime order - core_modules=['net','conf_files', 'sm', 'bwmon'] + core_modules=['net', 'conf_files', 'slivermanager', 'bwmon'] default_period=600 default_random=301 @@ -51,16 +49,22 @@ class NodeManager: def __init__ (self): parser = optparse.OptionParser() - parser.add_option('-d', '--daemon', action='store_true', dest='daemon', default=False, help='run daemonized') - parser.add_option('-s', '--startup', action='store_true', dest='startup', default=False, help='run all sliver startup scripts') - parser.add_option('-f', '--config', action='store', dest='config', default='/etc/planetlab/plc_config', help='PLC configuration file') - parser.add_option('-k', '--session', action='store', dest='session', default='/etc/planetlab/session', help='API session key (or file)') + parser.add_option('-d', '--daemon', action='store_true', dest='daemon', default=False, + help='run daemonized') + parser.add_option('-s', '--startup', action='store_true', dest='startup', default=False, + help='run all sliver startup scripts') + parser.add_option('-f', '--config', action='store', dest='config', default='/etc/planetlab/plc_config', + help='PLC configuration file') + parser.add_option('-k', '--session', action='store', dest='session', default='/etc/planetlab/session', + help='API session key (or file)') parser.add_option('-p', '--period', action='store', dest='period', default=NodeManager.default_period, help='Polling interval (sec) - default %d'%NodeManager.default_period) parser.add_option('-r', '--random', action='store', dest='random', default=NodeManager.default_random, help='Range for additional random polling interval (sec) -- default %d'%NodeManager.default_random) - parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False, help='more verbose log') - parser.add_option('-P', '--path', action='store', dest='path', default=NodeManager.PLUGIN_PATH, help='Path to plugins directory') + parser.add_option('-v', '--verbose', action='store_true', dest='verbose', default=False, + help='more verbose log') + parser.add_option('-P', '--path', action='store', dest='path', default=NodeManager.PLUGIN_PATH, + help='Path to plugins directory') # NOTE: BUG the 'help' for this parser.add_option() wont list plugins from the --path argument parser.add_option('-m', '--module', action='store', dest='user_module', default='', help='run a single module') @@ -84,7 +88,7 @@ class NodeManager: def GetSlivers(self, config, plc): - """Run call backs defined in modules""" + """Retrieves GetSlivers at PLC and triggers callbacks defined in modules/plugins""" try: logger.log("nodemanager: Syncing w/ PLC") # retrieve GetSlivers from PLC @@ -93,10 +97,10 @@ class NodeManager: self.getPLCDefaults(data, config) # tweak the 'vref' attribute from GetSliceFamily self.setSliversVref (data) - # log it for debug purposes, no matter what verbose is - logger.log_slivers(data) # dump it too, so it can be retrieved later in case of comm. failure self.dumpSlivers(data) + # log it for debug purposes, no matter what verbose is + logger.log_slivers(data) logger.verbose("nodemanager: Sync w/ PLC done") last_data=data except: @@ -108,7 +112,7 @@ class NodeManager: last_data=self.loadSlivers() # Invoke GetSlivers() functions from the callback modules for module in self.loaded_modules: - logger.verbose('triggering GetSlivers callback for module %s'%module.__name__) + logger.verbose('nodemanager: triggering %s.GetSlivers'%module.__name__) try: callback = getattr(module, 'GetSlivers') module_data=data @@ -185,7 +189,8 @@ class NodeManager: try: other_pid = tools.pid_file() if other_pid != None: - print """There might be another instance of the node manager running as pid %d. If this is not the case, please remove the pid file %s""" % (other_pid, tools.PID_FILE) + print """There might be another instance of the node manager running as pid %d. +If this is not the case, please remove the pid file %s. -- exiting""" % (other_pid, tools.PID_FILE) return except OSError, err: print "Warning while writing PID file:", err @@ -195,6 +200,7 @@ class NodeManager: for module in self.modules: try: m = __import__(module) + logger.verbose("nodemanager: triggering %s.start"%m.__name__) m.start(self.options, config) self.loaded_modules.append(m) except ImportError, err: @@ -245,11 +251,11 @@ class NodeManager: except: logger.log_exc("nodemanager: failed in run") def run(): - logger.log("======================================== Entering nodemanager.py "+NodeManager.id) + logger.log("======================================== Entering nodemanager.py") NodeManager().run() if __name__ == '__main__': run() else: - # This is for debugging purposes. Open a copy of Python and import nm + # This is for debugging purposes. Open a copy of Python and import nodemanager tools.as_daemon_thread(run)