X-Git-Url: http://git.onelab.eu/?p=nodemanager.git;a=blobdiff_plain;f=plugins%2Fhostmap.py;h=7f47afd8bf561822387281f8bee975cb041fe37b;hp=3d030e6c35c33df5f87c806559b40e6aeb9329e3;hb=ac6786141feadccdc48b819ab21a825a54881ded;hpb=3c23b137553cc676568871aaff425456cda51fdd diff --git a/plugins/hostmap.py b/plugins/hostmap.py index 3d030e6..7f47afd 100644 --- a/plugins/hostmap.py +++ b/plugins/hostmap.py @@ -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)) -