Cleanup SO instance before instantation 06/137206/1
authorLukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Mon, 12 Feb 2024 09:56:25 +0000 (10:56 +0100)
committerLukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Mon, 12 Feb 2024 16:44:13 +0000 (17:44 +0100)
Cleanup SO instance before instantation

Issue-ID: TEST-402
Signed-off-by: Lukasz Rajewski <lukasz.rajewski@t-mobile.pl>
Change-Id: If38938a4ce949eda3c8c91c3a1e38090dc986508

pylama.ini
src/onaptests/steps/instantiate/service_ala_carte.py
src/onaptests/steps/instantiate/service_macro.py

index 5621700..d8bd402 100644 (file)
@@ -15,6 +15,7 @@ disable =
     unused-argument,
     broad-exception-caught,
     missing-module-docstring,
+    too-many-function-args,
     too-many-instance-attributes,
     too-few-public-methods,
     too-many-nested-blocks,
index 7933794..e3aac8a 100644 (file)
@@ -106,6 +106,10 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep):
         super().execute()
         service = Service(self.service_name)
         self._load_customer_and_subscription()
+        try:
+            self._load_service_instance()
+        except ResourceNotFound:
+            self._logger.info("There is no leftover service instance in SO")
         cloud_region: CloudRegion = CloudRegion.get_by_id(
             cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER,
             cloud_region_id=settings.CLOUD_REGION_ID,
@@ -118,6 +122,9 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep):
             self._logger.info("Owning entity not found, create it")
             owning_entity = AaiOwningEntity.create(settings.OWNING_ENTITY)
 
+        # remove leftover
+        self._cleanup_logic()
+
         service_instantiation = ServiceInstantiation.instantiate_ala_carte(
             service,
             cloud_region,
@@ -139,16 +146,7 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep):
         self._load_customer_and_subscription(reload=True)
         self._load_service_instance()
 
-    @YamlTemplateBaseStep.store_state(cleanup=True)
-    def cleanup(self) -> None:
-        """Cleanup Service.
-
-        Raises:
-            Exception: Service cleaning failed
-
-        """
-        self._load_customer_and_subscription()
-        self._load_service_instance()
+    def _cleanup_logic(self) -> None:
         if self._service_instance:
             service_deletion = self._service_instance.delete(a_la_carte=True)
             try:
@@ -161,4 +159,16 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep):
             else:
                 self._logger.error("Service deletion %s failed", self._service_instance_name)
                 raise onap_test_exceptions.ServiceCleanupException
+
+    @YamlTemplateBaseStep.store_state(cleanup=True)
+    def cleanup(self) -> None:
+        """Cleanup Service.
+
+        Raises:
+            Exception: Service cleaning failed
+
+        """
+        self._load_customer_and_subscription()
+        self._load_service_instance()
+        self._cleanup_logic()
         super().cleanup()
index dd32b65..fb5e9d4 100644 (file)
@@ -136,6 +136,10 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep):
         super().execute()
         service = Service(self.service_name)
         self._load_customer_and_subscription()
+        try:
+            self._load_service_instance()
+        except ResourceNotFound:
+            self._logger.info("There is no leftover service instance in SO")
         if any(
                 filter(lambda x: x in self.yaml_template[self.service_name].keys(),
                        ["vnfs", "networks"])):
@@ -176,6 +180,36 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep):
                      for vf_module_data in vnf_data.get("vf_module_parameters", [])]
                 ))
 
+        try:
+            if settings.PNF_WITHOUT_VES:
+                skip_pnf_registration_event = True
+        except SDKException:
+            skip_pnf_registration_event = False
+        return (
+            service, self._customer, self._service_subscription, cloud_region,
+            tenant, owning_entity, so_service, skip_pnf_registration_event, vnf_params_list)
+
+
+class YamlTemplateServiceMacroInstantiateStep(YamlTemplateServiceMacroInstantiateBaseStep):
+    """Instantiate SO service."""
+
+    def __init__(self):
+        """Init YamlTemplateServiceMacroInstantiateStep."""
+        super().__init__(cleanup=settings.CLEANUP_FLAG)
+
+    @property
+    def description(self) -> str:
+        """Step description."""
+        return "Instantiate SO service"
+
+    @YamlTemplateBaseStep.store_state
+    def execute(self):
+        super().execute()
+        (service, _, _, cloud_region, tenant, owning_entity, so_service,
+            skip_pnf_registration_event, vnf_params_list) = self.base_execute()
+        # remove leftover
+        self._cleanup_logic()
+
         service_instantiation = ServiceInstantiation.instantiate_macro(
             sdc_service=service,
             customer=self._customer,
@@ -203,16 +237,7 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep):
         self._load_customer_and_subscription(reload=True)
         self._load_service_instance()
 
-    @YamlTemplateBaseStep.store_state(cleanup=True)
-    def cleanup(self) -> None:
-        """Cleanup Service.
-
-        Raises:
-            Exception: Service cleaning failed
-
-        """
-        self._load_customer_and_subscription()
-        self._load_service_instance()
+    def _cleanup_logic(self) -> None:
         if self._service_instance:
             service_deletion = self._service_instance.delete(a_la_carte=False)
             try:
@@ -225,4 +250,16 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep):
             else:
                 self._logger.error("Service deletion %s failed", self._service_instance_name)
                 raise onap_test_exceptions.ServiceCleanupException
+
+    @YamlTemplateBaseStep.store_state(cleanup=True)
+    def cleanup(self) -> None:
+        """Cleanup Service.
+
+        Raises:
+            Exception: Service cleaning failed
+
+        """
+        self._load_customer_and_subscription()
+        self._load_service_instance()
+        self._cleanup_logic()
         super().cleanup()