X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FNBI.git;a=blobdiff_plain;f=osm_nbi%2Fdescriptor_topics.py;h=0939000b2bb6cc970ab0080744a896f70defa916;hp=95ced0d62f93c402ebeb2d3459d270f9bcab212b;hb=refs%2Fchanges%2F15%2F8215%2F1;hpb=b19cadcf9ff2169f34f6db79b866bad91f9c8aed diff --git a/osm_nbi/descriptor_topics.py b/osm_nbi/descriptor_topics.py index 95ced0d..0939000 100644 --- a/osm_nbi/descriptor_topics.py +++ b/osm_nbi/descriptor_topics.py @@ -139,6 +139,7 @@ class DescriptorTopic(BaseTopic): self.format_on_new(content, session["project_id"], make_public=session["public"]) _id = self.db.create(self.topic, content) rollback.append({"topic": self.topic, "_id": _id}) + self._send_msg("created", {"_id": _id}) return _id, None except ValidationError as e: raise EngineException(e, HTTPStatus.UNPROCESSABLE_ENTITY) @@ -284,7 +285,7 @@ class DescriptorTopic(BaseTopic): self.fs.dir_rename(temp_folder, _id) indata["_id"] = _id - self._send_msg("created", indata) + self._send_msg("edited", indata) # TODO if descriptor has changed because kwargs update content and remove cached zip # TODO if zip is not present creates one @@ -703,6 +704,19 @@ class NsdTopic(DescriptorTopic): "does not match any constituent-vnfd:member-vnf-index" .format(vld["id"], vnfd_cp["member-vnf-index-ref"]), http_code=HTTPStatus.UNPROCESSABLE_ENTITY) + # Check VNFFGD + for fgd in get_iterable(indata.get("vnffgd")): + for cls in get_iterable(fgd.get("classifier")): + rspref = cls.get("rsp-id-ref") + for rsp in get_iterable(fgd.get("rsp")): + rspid = rsp.get("id") + if rspid and rspref and rspid == rspref: + break + else: + raise EngineException( + "Error at vnffgd[id='{}']:classifier[id='{}']:rsp-id-ref '{}' does not match any rsp:id" + .format(fgd["id"], cls["id"], rspref), + http_code=HTTPStatus.UNPROCESSABLE_ENTITY) return indata def _validate_input_edit(self, indata, force=False):