From 91dcb0acf15f27ed4d982349dd69b8941b25a45a Mon Sep 17 00:00:00 2001 From: rahul Date: Wed, 30 Aug 2023 14:48:01 +0530 Subject: [PATCH] Fix 2280: Random IP's are geeting assigned for Dual stack NS when doing scaling-out/in operation https://osm.etsi.org/bugzilla/show_bug.cgi?id=2280 Change-Id: Ic190de376e975e31840217cdbf6548863dfe5a02 Signed-off-by: rahul (cherry picked from commit 72d90d9217ee99b8e05cfe345f59db28f6d54d93) --- osm_lcm/ns.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/osm_lcm/ns.py b/osm_lcm/ns.py index 382f9dc..7de51c1 100644 --- a/osm_lcm/ns.py +++ b/osm_lcm/ns.py @@ -23,6 +23,7 @@ import yaml import logging import logging.handlers import traceback +import ipaddress import json from jinja2 import ( Environment, @@ -233,6 +234,18 @@ class NsLcm(LcmBase): if not isinstance(ip_mac, str): return ip_mac try: + next_ipv6 = None + next_ipv4 = None + dual_ip = ip_mac.split(";") + if len(dual_ip) == 2: + for ip in dual_ip: + if ipaddress.ip_address(ip).version == 6: + ipv6 = ipaddress.IPv6Address(ip) + next_ipv6 = str(ipaddress.IPv6Address(int(ipv6) + 1)) + elif ipaddress.ip_address(ip).version == 4: + ipv4 = ipaddress.IPv4Address(ip) + next_ipv4 = str(ipaddress.IPv4Address(int(ipv4) + 1)) + return [next_ipv4, next_ipv6] # try with ipv4 look for last dot i = ip_mac.rfind(".") if i > 0: -- 2.25.1