fix NameError in get_keypair
[nodemanager.git] / plugins / omf_resctl.py
index f1a6d2a..0ee1da0 100644 (file)
@@ -8,7 +8,7 @@
 Overwrites the 'resctl' tag of slivers controlled by OMF so slivermanager.py does the right thing
 """
 
 Overwrites the 'resctl' tag of slivers controlled by OMF so slivermanager.py does the right thing
 """
 
-import os
+import os, os.path
 import glob
 import subprocess
 
 import glob
 import subprocess
 
@@ -17,19 +17,23 @@ import logger
 
 priority = 50
 
 
 priority = 50
 
-def start(options, conf):
+def start():
     logger.log("omf_resctl: plugin starting up...")
 
 def GetSlivers(data, conf = None, plc = None):
     logger.log("omf_resctl: plugin starting up...")
 
 def GetSlivers(data, conf = None, plc = None):
-    if 'accounts' not in data: 
+    if 'accounts' not in data:
         logger.log_missing_data("omf_resctl.GetSlivers",'accounts')
         return
 
     try:
         xmpp_server=data['xmpp']['server']
         logger.log_missing_data("omf_resctl.GetSlivers",'accounts')
         return
 
     try:
         xmpp_server=data['xmpp']['server']
+        if not xmpp_server: 
+            # we have the key but no value, just as bad
+            raise Exception
     except:
         # disabled feature - bailing out
         # xxx might need to clean up more deeply..
     except:
         # disabled feature - bailing out
         # xxx might need to clean up more deeply..
+        logger.log("PLC_OMF_ENABLED is not set -- plugin exiting")
         return
 
     # as hrn is set only at AddNode-time, upgraded myplcs might still miss this
         return
 
     # as hrn is set only at AddNode-time, upgraded myplcs might still miss this
@@ -37,12 +41,15 @@ def GetSlivers(data, conf = None, plc = None):
     # for node in GetNodes(): UpdateNode(node['node_id'],{'hostname':node['hostname']})
     try:
         node_hrn = data['hrn']
     # for node in GetNodes(): UpdateNode(node['node_id'],{'hostname':node['hostname']})
     try:
         node_hrn = data['hrn']
-        if not hrn: raise Exception,"Empty hrn"
+        if not node_hrn: raise Exception
     except:
     except:
+        logger.log("Failed to read hrn from GetSlivers, using 'default' - *please upgrade PLCAPI*")
         node_hrn='default   # Failed to read hrn from GetSlivers, please upgrade PLCAPI'
 
     for sliver in data['slivers']:
         name=sliver['name']
         node_hrn='default   # Failed to read hrn from GetSlivers, please upgrade PLCAPI'
 
     for sliver in data['slivers']:
         name=sliver['name']
+        sliver_pub_key_dir=os.path.join("/home", name, ".ssh/")
+        sliver_private_key=os.path.join(sliver_pub_key_dir, "id_rsa")
         for chunk in sliver['attributes']:
             if chunk['tagname']=='omf_control':
                 # scan all versions of omf-resctl
         for chunk in sliver['attributes']:
             if chunk['tagname']=='omf_control':
                 # scan all versions of omf-resctl
@@ -63,8 +70,11 @@ def GetSlivers(data, conf = None, plc = None):
                     yaml_contents=template_contents\
                         .replace('@XMPP_SERVER@',xmpp_server)\
                         .replace('@NODE_HRN@',node_hrn)\
                     yaml_contents=template_contents\
                         .replace('@XMPP_SERVER@',xmpp_server)\
                         .replace('@NODE_HRN@',node_hrn)\
-                        .replace('@SLICE_NAME@',name)
+                        .replace('@SLICE_NAME@',name)\
+                        .replace('@SLIVER_PRIVATE_KEY@',sliver_private_key)\
+                        .replace('@SLIVER_PUB_KEY_DIR@',sliver_pub_key_dir)
                     changes=tools.replace_file_with_string(yaml,yaml_contents)
                     changes=tools.replace_file_with_string(yaml,yaml_contents)
+                    logger.log("yaml_contents length=%d, changes=%r"%(len(yaml_contents),changes))
                     if changes:
                         sp=subprocess.Popen(['vserver',name,'exec','service',service_name,'restart'],
                                             stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
                     if changes:
                         sp=subprocess.Popen(['vserver',name,'exec','service',service_name,'restart'],
                                             stdout=subprocess.PIPE,stderr=subprocess.STDOUT)