diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py index 4ed706bd405e4c877c23430b1923be99c489c30c..b176801691f1642d15d6af49b857c76daa438100 100644 --- a/osm_nbi/instance_topics.py +++ b/osm_nbi/instance_topics.py @@ -1549,7 +1549,24 @@ class NsLcmOpTopic(BaseTopic): ) def _check_heal_ns_operation(self, indata, nsr): - return + try: + for data in indata.get("healVnfData"): + vnf_id = data.get("vnfInstanceId") + vnf = self.db.get_one("vnfrs", {"_id": vnf_id}) + vnfd_member_vnf_index = vnf.get("member-vnf-index-ref") + vnfd = self._get_vnfd_from_vnf_member_index( + vnfd_member_vnf_index, nsr["_id"] + ) + if data.get("additionalParams"): + vdu_id = data["additionalParams"].get("vdu") + if vdu_id: + for index in range(len(vdu_id)): + vdu = vdu_id[index].get("vdu-id") + self._check_valid_vdu(vnfd, vdu) + except (DbException, AttributeError, IndexError, KeyError, ValueError) as e: + raise type(e)( + "Ns healing request could not be processed with error: {}.".format(e) + ) def _check_instantiate_ns_operation(self, indata, nsr, session): vnf_member_index_to_vnfd = {} # map between vnf_member_index to vnf descriptor.