Fix bug 2098 to heal VDU when no VDU is specified in the heal operation
[osm/LCM.git] / osm_lcm / ns.py
index b1c027a..8a99e91 100644 (file)
@@ -4990,9 +4990,7 @@ class NsLcm(LcmBase):
                     break
                 except asyncio.CancelledError:
                     raise
-                except Exception as e:  # asyncio.TimeoutError
-                    if isinstance(e, asyncio.TimeoutError):
-                        e = "Timeout"
+                except Exception as e:
                     retries -= 1
                     if retries >= 0:
                         self.logger.debug(
@@ -5003,7 +5001,9 @@ class NsLcm(LcmBase):
                         # wait and retry
                         await asyncio.sleep(retries_interval, loop=self.loop)
                     else:
-                        return "FAILED", str(e)
+                        if isinstance(e, asyncio.TimeoutError):
+                            e = N2VCException(message="Timed out waiting for action to complete")
+                        return "FAILED", getattr(e, 'message', repr(e))
 
             return "COMPLETED", output
 
@@ -5338,7 +5338,7 @@ class NsLcm(LcmBase):
             )
             self.logger.debug(
                 logging_text
-                + " task Done with result {} {}".format(
+                + "Done with result {} {}".format(
                     nslcmop_operation_state, detailed_status
                 )
             )
@@ -7565,7 +7565,17 @@ class NsLcm(LcmBase):
                     member_vnf_index = db_vnfr.get("member-vnf-index-ref")
 
                     # Check each target VDU and deploy N2VC
-                    for target_vdu in target_vnf["additionalParams"].get("vdu", None):
+                    target_vdu_list = target_vnf.get("additionalParams", {}).get("vdu", [])
+                    if not target_vdu_list:
+                        # Codigo nuevo para crear diccionario
+                        target_vdu_list = []
+                        for existing_vdu in db_vnfr.get("vdur"):
+                            vdu_name = existing_vdu.get("vdu-name", None)
+                            vdu_index = existing_vdu.get("count-index", 0)
+                            vdu_run_day1 = target_vnf.get("additionalParams", {}).get("run-day1", False)
+                            vdu_to_be_healed = {"vdu-id": vdu_name, "count-index": vdu_index, "run-day1": vdu_run_day1}
+                            target_vdu_list.append(vdu_to_be_healed)
+                    for target_vdu in target_vdu_list:
                         deploy_params_vdu = target_vdu
                         # Set run-day1 vnf level value if not vdu level value exists
                         if not deploy_params_vdu.get("run-day1") and target_vnf["additionalParams"].get("run-day1"):