X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=src%2Femuvim%2Fapi%2Ftango%2Fllcm.py;h=14c9e0b473c4fcf8c4ba647c3eeff5f663f1f1f7;hb=refs%2Fchanges%2F38%2F7238%2F1;hp=b3916bb74afc84151d081e899fa47eeecee74d94;hpb=7da82501c1a53a2523c3eaf4a11fc11764e8b231;p=osm%2Fvim-emu.git diff --git a/src/emuvim/api/tango/llcm.py b/src/emuvim/api/tango/llcm.py index b3916bb..14c9e0b 100755 --- a/src/emuvim/api/tango/llcm.py +++ b/src/emuvim/api/tango/llcm.py @@ -378,6 +378,8 @@ class Service(object): "vnf_id" taken from an NSD. :return: list """ + if vnf_id is None: + return None r = list() for vnfi in self.instances[instance_uuid]["vnf_instances"]: if vnf_id in vnfi.name: @@ -423,7 +425,6 @@ class Service(object): env = config.get("Env", list()) for env_var in env: var, cmd = map(str.strip, map(str, env_var.split('=', 1))) - # LOG.debug("%r = %r" % (var, cmd)) if var == "SON_EMU_CMD" or var == "VIM_EMU_CMD": LOG.info("Executing script in '{}': {}={}" .format(vnfi.name, var, cmd)) @@ -528,23 +529,33 @@ class Service(object): cookie = 1 for link in eline_fwd_links: LOG.info("Found E-Line: {}".format(link)) - # check if we need to deploy this link when its a management link: - if USE_DOCKER_MGMT: - if self.check_mgmt_interface( - link["connection_points_reference"]): - continue - src_id, src_if_name = parse_interface( link["connection_points_reference"][0]) dst_id, dst_if_name = parse_interface( link["connection_points_reference"][1]) - setChaining = False - LOG.info("Creating E-Line: src={}, dst={}" - .format(src_id, dst_id)) + LOG.info("Searching C/VDU for E-Line: src={}, src_if={}, dst={}, dst_if={}" + .format(src_id, src_if_name, dst_id, dst_if_name)) + # handle C/VDUs (ugly hack, only one V/CDU per VNF for now) + src_units = self._get_vnf_instance_units(instance_uuid, src_id) + dst_units = self._get_vnf_instance_units(instance_uuid, dst_id) + if src_units is None or dst_units is None: + LOG.info("No VNF-VNF link. Skipping: src={}, src_if={}, dst={}, dst_if={}" + .format(src_id, src_if_name, dst_id, dst_if_name)) + return + # we only support VNFs with one V/CDU right now + if len(src_units) != 1 or len(dst_units) != 1: + raise BaseException("LLCM does not support E-LINES for multi V/CDU VNFs.") + # get the full name from that C/VDU and use it as src_id and dst_id + src_id = src_units[0].name + dst_id = dst_units[0].name + # from here we have all info we need + LOG.info("Creating E-Line for C/VDU: src={}, src_if={}, dst={}, dst_if={}" + .format(src_id, src_if_name, dst_id, dst_if_name)) # get involved vnfis - src_vnfi = self._get_vnf_instance(instance_uuid, src_id) - dst_vnfi = self._get_vnf_instance(instance_uuid, dst_id) - + src_vnfi = src_units[0] + dst_vnfi = dst_units[0] + # proceed with chaining setup + setChaining = False if src_vnfi is not None and dst_vnfi is not None: setChaining = True # re-configure the VNFs IP assignment and ensure that a new