X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fdescriptor_topics.py;h=df218ccb2b41445b3590761dcd1276b852b01d80;hp=7ea06c5c67dc55e0105315dcac93955a5e7d0c43;hb=refs%2Fchanges%2F57%2F10657%2F3;hpb=41a52059cbcadb9bb7baebb38ff9503a362ea8e8 diff --git a/osm_nbi/descriptor_topics.py b/osm_nbi/descriptor_topics.py index 7ea06c5..df218cc 100644 --- a/osm_nbi/descriptor_topics.py +++ b/osm_nbi/descriptor_topics.py @@ -539,13 +539,14 @@ class VnfdTopic(DescriptorTopic): # check vnfrs using this vnfd _filter["vnfd-id"] = _id if self.db.get_list("vnfrs", _filter): - raise EngineException("There is at least one VNF using this descriptor", http_code=HTTPStatus.CONFLICT) + raise EngineException("There is at least one VNF instance using this descriptor", + http_code=HTTPStatus.CONFLICT) # check NSD referencing this VNFD del _filter["vnfd-id"] - _filter["constituent-vnfd.ANYINDEX.vnfd-id-ref"] = descriptor_id + _filter["vnfd-id"] = descriptor_id if self.db.get_list("nsds", _filter): - raise EngineException("There is at least one NSD referencing this descriptor", + raise EngineException("There is at least one NS package referencing this descriptor", http_code=HTTPStatus.CONFLICT) def _validate_input_new(self, indata, storage_params, force=False): @@ -625,11 +626,16 @@ class VnfdTopic(DescriptorTopic): for df in indata["df"]: if "lcm-operations-configuration" in df and "operate-vnf-op-config" in df["lcm-operations-configuration"]: configs = df["lcm-operations-configuration"]["operate-vnf-op-config"].get("day1-2", []) - for config in configs: - if config.get("juju"): - if not self._validate_package_folders(storage_params, 'charms'): - raise EngineException("Charm defined in vnf[id={}] but not present in " - "package".format(indata["id"])) + vdus = df.get("vdu-profile", []) + for vdu in vdus: + for config in configs: + if config["id"] == vdu["id"] and utils.find_in_list( + config.get("execution-environment-list", []), + lambda ee: "juju" in ee + ): + if not self._validate_package_folders(storage_params, 'charms'): + raise EngineException("Charm defined in vnf[id={}] but not present in " + "package".format(indata["id"])) def _validate_vdu_cloud_init_in_package(self, storage_params, vdu, indata): if not vdu.get("cloud-init-file"): @@ -647,8 +653,10 @@ class VnfdTopic(DescriptorTopic): return for day_1_2_config in deployment_flavor["lcm-operations-configuration"]["operate-vnf-op-config"]["day1-2"]: if day_1_2_config["id"] == indata["id"]: - vnf_configuration = day_1_2_config - if vnf_configuration.get("juju"): + if utils.find_in_list( + day_1_2_config.get("execution-environment-list", []), + lambda ee: "juju" in ee + ): if not self._validate_package_folders(storage_params, 'charms'): raise EngineException("Charm defined in vnf[id={}] but not present in " "package".format(indata["id"])) @@ -1012,7 +1020,8 @@ class NsdTopic(DescriptorTopic): _filter = self._get_project_filter(session) _filter["nsd-id"] = _id if self.db.get_list("nsrs", _filter): - raise EngineException("There is at least one NS using this descriptor", http_code=HTTPStatus.CONFLICT) + raise EngineException("There is at least one NS instance using this descriptor", + http_code=HTTPStatus.CONFLICT) # check NSD referenced by NST del _filter["nsd-id"] @@ -1163,7 +1172,7 @@ class PduTopic(BaseTopic): _filter = self._get_project_filter(session) _filter["vdur.pdu-id"] = _id if self.db.get_list("vnfrs", _filter): - raise EngineException("There is at least one VNF using this PDU", http_code=HTTPStatus.CONFLICT) + raise EngineException("There is at least one VNF instance using this PDU", http_code=HTTPStatus.CONFLICT) class VnfPkgOpTopic(BaseTopic):