Bug 2312 Fix for manual healing with invalid vdu id

Change-Id: I8d9388da3a883889e90d7cd6a2a6a741338c6f6b
Signed-off-by: jegan <jegan.s@tataelxsi.co.in>
diff --git a/osm_nbi/instance_topics.py b/osm_nbi/instance_topics.py
index d824587..13ca960 100644
--- a/osm_nbi/instance_topics.py
+++ b/osm_nbi/instance_topics.py
@@ -1425,7 +1425,24 @@
             )
 
     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.