X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fbase_topic.py;h=95724092a4c1a53033c15153606584159632c66f;hp=5492a8f2798177411e320a2e2163ef9c74a62e8b;hb=cddb07d092fdcf72ce2c87cd801b93732e64d3a9;hpb=195a36c9dad758c658e6fd69b0965e366cc632ab;ds=sidebyside diff --git a/osm_nbi/base_topic.py b/osm_nbi/base_topic.py index 5492a8f..9572409 100644 --- a/osm_nbi/base_topic.py +++ b/osm_nbi/base_topic.py @@ -65,6 +65,26 @@ def versiontuple(v): return tuple(filled) +def increment_ip_mac(ip_mac, vm_index=1): + if not isinstance(ip_mac, str): + return ip_mac + try: + # try with ipv4 look for last dot + i = ip_mac.rfind(".") + if i > 0: + i += 1 + return "{}{}".format(ip_mac[:i], int(ip_mac[i:]) + vm_index) + # try with ipv6 or mac look for last colon. Operate in hex + i = ip_mac.rfind(":") + if i > 0: + i += 1 + # format in hex, len can be 2 for mac or 4 for ipv6 + return ("{}{:0" + str(len(ip_mac) - i) + "x}").format(ip_mac[:i], int(ip_mac[i:], 16) + vm_index) + except Exception: + pass + return None + + class BaseTopic: # static variables for all instance classes topic = None # to_override