spaces after comma
[nodemanager.git] / plugins / hostmap.py
index 3d030e6..7f47afd 100644 (file)
@@ -1,5 +1,5 @@
 """
-Configure interfaces inside a container by pulling down files via URL.
+Update /etc/hosts in slivers to contain the contents of the sliver_hostmap tag.
 """
 
 import logger
@@ -30,7 +30,7 @@ SUFFIX = "# ----- End -----"
 def GetSlivers(data, config=None, plc=None):
 
     if 'slivers' not in data:
-        logger.log_missing_data("hostmap.GetSlivers",'slivers')
+        logger.log_missing_data("hostmap.GetSlivers", 'slivers')
         return
 
     if 'hostname' not in data:
@@ -38,6 +38,8 @@ def GetSlivers(data, config=None, plc=None):
 
     hostname = data['hostname']
 
+    hostname_filter = ".".join(hostname.split(".")[1:])
+
     for sliver in data['slivers']:
         slicename = sliver['name']
         for tag in sliver['attributes']:
@@ -46,20 +48,24 @@ def GetSlivers(data, config=None, plc=None):
                 if not os.path.exists(fn):
                     continue
 
-                contents = file(fn,"r").read()
+                with open(fn) as f:
+                    contents = f.read()
 
                 hostmap = []
                 for index, entry in enumerate(tag["value"].split("\n")):
                     parts = entry.split(" ")
                     if len(parts)==2:
-                       if parts[1] == hostname:
-                           line = "127.0.0.1 %s.%s private%d" % (slicename, parts[1], index)
-                       else:
-                           line = "%s %s.%s private%d" % (parts[0], slicename, parts[1], index)
+                       line = "%s pvt.%s private%d" % (parts[0], parts[1], index)
+
+                       if (parts[0].startswith("10.")) and (hostname_filter not in parts[1]):
+                           continue
 
                        if (index==0):
                            line = line + " headnode"
 
+                       if parts[1] == hostname:
+                           line = line + " pvt.self"
+
                        hostmap.append(line)
 
                 hostmap = "\n".join(hostmap)
@@ -71,7 +77,7 @@ def GetSlivers(data, config=None, plc=None):
 
                 # remove anything between PREFIX and SUFFIX from contents
 
-                pattern = PREFIX + ".*" + SUFFIX
+                pattern = PREFIX + ".*" + SUFFIX + "\n"
                 regex = re.compile(pattern, re.DOTALL)
                 if regex.search(contents) != None:
                     contents = regex.sub(hostmap, contents)
@@ -79,9 +85,9 @@ def GetSlivers(data, config=None, plc=None):
                     contents = contents + hostmap
 
                 try:
-                    file(fn, "w").write(contents)
+                    with open(fn, "w") as f:
+                        f.write(contents)
                 except:
                     logger.log_exc("hostmap (%s): failed to write %s" % (slicename, fn))
 
 
-