cosmetic
[nodemanager.git] / nodemanager.py
index 386776f..8e5c2ec 100755 (executable)
@@ -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)