+ for vld in get_iterable(indata.get("vld")):
+ if vld.get("mgmt-network") and vld.get("ip-profile-ref"):
+ raise EngineException("Error at vld[id='{}']:ip-profile-ref"
+ " You cannot set an ip-profile when mgmt-network is True"
+ .format(vld["id"]), http_code=HTTPStatus.UNPROCESSABLE_ENTITY)
+ for vnfd_cp in get_iterable(vld.get("vnfd-connection-point-ref")):
+ for constituent_vnfd in get_iterable(indata.get("constituent-vnfd")):
+ if vnfd_cp["member-vnf-index-ref"] == constituent_vnfd["member-vnf-index"]:
+ if vnfd_cp.get("vnfd-id-ref") and vnfd_cp["vnfd-id-ref"] != constituent_vnfd["vnfd-id-ref"]:
+ raise EngineException("Error at vld[id='{}']:vnfd-connection-point-ref[vnfd-id-ref='{}'] "
+ "does not match constituent-vnfd[member-vnf-index='{}']:vnfd-id-ref"
+ " '{}'".format(vld["id"], vnfd_cp["vnfd-id-ref"],
+ constituent_vnfd["member-vnf-index"],
+ constituent_vnfd["vnfd-id-ref"]),
+ http_code=HTTPStatus.UNPROCESSABLE_ENTITY)
+ break
+ else:
+ raise EngineException("Error at vld[id='{}']:vnfd-connection-point-ref[member-vnf-index-ref='{}'] "
+ "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)