X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwnsm%2Frift%2Ftasklets%2Frwnsmtasklet%2Frwnsmtasklet.py;h=ea17e6015ecc2113699bacd5dcd943b3a64fbe89;hb=refs%2Fchanges%2F35%2F1535%2F1;hp=2b0c57bd23bbf3bd2e347590ce4ff661d899bcd1;hpb=9ad945aab0b5a992e1df860bede8ecc9b143470e;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py index 2b0c57bd..ea17e601 100755 --- a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py +++ b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py @@ -51,7 +51,7 @@ from gi.repository import ( VnfrYang, RwVnfrYang, RwNsmYang, - RwsdnYang, + RwsdnalYang, RwDts as rwdts, RwTypes, ProtobufC, @@ -395,7 +395,7 @@ class VnffgRecord(object): vnfr = yield from self._nsr.fetch_vnfr(nsr_vnfr.xpath) self._log.debug("Received VNFR is %s", vnfr) - sff = RwsdnYang.VNFFGSff() + sff = RwsdnalYang.VNFFGSff() sff_list[nsr_vnfr.vnfd.id] = sff sff.name = nsr_vnfr.name sff.function_type = nsr_vnfr.vnfd.service_function_chain @@ -2041,7 +2041,7 @@ class NetworkServiceRecord(object): (member_vnfd.member_vnf_index_ref == str(const_vnfd.member_vnf_index)): group_info = self.resolve_placement_group_cloud_construct(group) if group_info is None: - self._log.error("Could not resolve cloud-construct for placement group: %s", group.name) + self._log.info("Could not resolve cloud-construct for placement group: %s", group.name) ### raise PlacementGroupError("Could not resolve cloud-construct for placement group: {}".format(group.name)) else: self._log.info("Successfully resolved cloud construct for placement group: %s for VNF: %s (Member Index: %s)", @@ -2682,6 +2682,26 @@ class InputParameterSubstitution(object): self.log = log self.project = project + def _fix_xpath(self, xpath): + # Fix the parameter.xpath to include project and correct namespace + self.log.error("Provided xpath: {}".format(xpath)) + #Split the xpath at the / + attrs = xpath.split('/') + new_xp = attrs[0] + for attr in attrs[1:]: + new_ns = 'project-nsd' + name = attr + if ':' in attr: + # Includes namespace + ns, name = attr.split(':', 2) + if ns == "rw-nsd": + ns = "rw-project-nsd" + + new_xp = new_xp + '/' + new_ns + ':' + name + + self.log.error("Updated xpath: {}".format(new_xp)) + return new_xp + def __call__(self, nsd, nsr_config): """Substitutes input parameters from the NSR config into the NSD @@ -2700,7 +2720,7 @@ class InputParameterSubstitution(object): # to be modified optional_input_parameters = set() for input_parameter in nsd.input_parameter_xpath: - optional_input_parameters.add(self.project.add_project(input_parameter.xpath)) + optional_input_parameters.add(input_parameter.xpath) # Apply the input parameters to the descriptor if nsr_config.input_parameter: @@ -2718,7 +2738,8 @@ class InputParameterSubstitution(object): ) try: - xpath.setxattr(nsd, param.xpath, param.value) + xp = self._fix_xpath(param.xpath) + xpath.setxattr(nsd, xp, param.value) except Exception as e: self.log.exception(e) @@ -3653,7 +3674,7 @@ class VnfrDtsHandler(object): schema = VnfrYang.YangData_RwProject_Project_VnfrCatalog_Vnfr.schema() path_entry = schema.keyspec_to_entry(ks_path) - if path_entry.key00.id not in self._nsm._vnfrs: + if not path_entry or (path_entry.key00.id not in self._nsm._vnfrs): # Check if this is a monitoring param xpath if 'vnfr:monitoring-param' not in xpath: self._log.error("%s request for non existent record path %s",