remove extra chcontext
[nodemanager.git] / plugins / omf_resctl.py
index 4fd2e8e..cbea3ac 100644 (file)
@@ -1,14 +1,12 @@
 #
 #
-# $Id$
-# $URL$
-#
 # NodeManager plugin - first step of handling omf_controlled slices
 # NodeManager plugin - first step of handling omf_controlled slices
+#
 
 """
 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
 
@@ -27,9 +25,13 @@ def GetSlivers(data, conf = None, plc = None):
 
     try:
         xmpp_server=data['xmpp']['server']
 
     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 config unsufficient (not enabled, or no server set), see the PLC_OMF category -- 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 +39,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 +68,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)