From 2479155376b6142e97163a7903632015fed50815 Mon Sep 17 00:00:00 2001 From: Lukasz Rajewski Date: Mon, 22 Jan 2024 16:15:46 +0100 Subject: Improved cleanup of service instances for failed cases Issue-ID: TEST-402 Signed-off-by: Lukasz Rajewski Change-Id: I348fc625a8cd2ac7c2ee506f996a506c5a4bf4f3 --- requirements.txt | 2 +- run_test.py | 10 ++-- src/onaptests/scenario/basic_cnf_macro.py | 12 ----- src/onaptests/scenario/basic_vm_macro.py | 12 ----- src/onaptests/scenario/multi_vnf_macro.py | 12 ----- src/onaptests/scenario/pnf_macro.py | 12 ----- src/onaptests/steps/base.py | 56 +++++++++++++++++++-- .../steps/instantiate/service_ala_carte.py | 56 ++++++++------------- src/onaptests/steps/instantiate/service_macro.py | 33 +++--------- .../steps/instantiate/vf_module_ala_carte.py | 58 ++++++++-------------- src/onaptests/steps/instantiate/vl_ala_carte.py | 30 ++--------- src/onaptests/steps/instantiate/vnf_ala_carte.py | 44 +++++----------- src/onaptests/steps/loop/clamp.py | 15 ------ src/onaptests/steps/onboard/clamp.py | 15 ------ src/onaptests/steps/onboard/service.py | 14 ------ 15 files changed, 126 insertions(+), 255 deletions(-) diff --git a/requirements.txt b/requirements.txt index 2ae69ef..66bfe20 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,7 +2,7 @@ cryptography==38.0.4 xtesting==0.91.0 avionix>=0.4.5 openstacksdk>=0.61.0 -onapsdk==12.7.3 +onapsdk==12.9.0 jinja2>3 kubernetes>=22.6.0 setuptools==65.3.0 diff --git a/run_test.py b/run_test.py index a87f6a3..f25820e 100644 --- a/run_test.py +++ b/run_test.py @@ -23,11 +23,14 @@ def get_entrypoints(): } return entry_points_result -def run_test(test_name, validation, entry_point, settings_module): +def run_test(test_name, validation, force_cleanup, entry_point, settings_module): settings_env = "ONAP_PYTHON_SDK_SETTINGS" if validation: validation_env = "PYTHON_SDK_TESTS_VALIDATION" os.environ[validation_env] = "True" + if force_cleanup: + validation_env = "PYTHON_SDK_TESTS_FORCE_CLEANUP" + os.environ[validation_env] = "True" os.environ[settings_env] = f"onaptests.configuration.{test_name}_settings" if not settings_module: settings_module = importlib.import_module("onapsdk.configuration") @@ -71,15 +74,16 @@ def main(argv): print("\nExample: python run_test.py basic_cps\n") exit(1) validation = len(argv) > 1 + force_cleanup = len(argv) > 2 test_name = argv[0] entry_points = get_entrypoints() if test_name == "all": settings_module = None for test_name, entry_point in entry_points.items(): - settings_module = run_test(test_name, validation, entry_point, settings_module) + settings_module = run_test(test_name, validation, force_cleanup, entry_point, settings_module) else: entry_point = entry_points[test_name] - run_test(test_name, validation, entry_point, None) + run_test(test_name, validation, force_cleanup, entry_point, None) if __name__ == "__main__": main(sys.argv[1:]) diff --git a/src/onaptests/scenario/basic_cnf_macro.py b/src/onaptests/scenario/basic_cnf_macro.py index c96ce4f..1fecd95 100644 --- a/src/onaptests/scenario/basic_cnf_macro.py +++ b/src/onaptests/scenario/basic_cnf_macro.py @@ -65,18 +65,6 @@ class BasicCnfMacroStep(YamlTemplateBaseScenarioStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> dict: - """Service name. - - Get from YAML template. - - Returns: - str: Service name - - """ - return next(iter(self.yaml_template.keys())) - @property def service_instance_name(self) -> str: """Service instance name. diff --git a/src/onaptests/scenario/basic_vm_macro.py b/src/onaptests/scenario/basic_vm_macro.py index e526d14..ec60e78 100644 --- a/src/onaptests/scenario/basic_vm_macro.py +++ b/src/onaptests/scenario/basic_vm_macro.py @@ -65,18 +65,6 @@ class BasicVmMacroStep(YamlTemplateBaseScenarioStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> dict: - """Service name. - - Get from YAML template. - - Returns: - str: Service name - - """ - return next(iter(self.yaml_template.keys())) - @property def service_instance_name(self) -> str: """Service instance name. diff --git a/src/onaptests/scenario/multi_vnf_macro.py b/src/onaptests/scenario/multi_vnf_macro.py index 96ade6d..fc00cec 100644 --- a/src/onaptests/scenario/multi_vnf_macro.py +++ b/src/onaptests/scenario/multi_vnf_macro.py @@ -69,18 +69,6 @@ class MultiVnfUbuntuMacroStep(YamlTemplateBaseScenarioStep): self._model_yaml_template: dict = load(model_yaml_template) return self._model_yaml_template - @property - def service_name(self) -> dict: - """Service name. - - Get from YAML template. - - Returns: - str: Service name - - """ - return next(iter(self.yaml_template.keys())) - @property def service_instance_name(self) -> str: """Service instance name. diff --git a/src/onaptests/scenario/pnf_macro.py b/src/onaptests/scenario/pnf_macro.py index 630e439..f8afad5 100644 --- a/src/onaptests/scenario/pnf_macro.py +++ b/src/onaptests/scenario/pnf_macro.py @@ -74,18 +74,6 @@ class PnfMacroScenarioStep(YamlTemplateBaseScenarioStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> dict: - """Service name. - - Get from YAML template. - - Returns: - str: Service name - - """ - return next(iter(self.yaml_template.keys())) - @property def service_instance_name(self) -> str: """Service instance name. diff --git a/src/onaptests/steps/base.py b/src/onaptests/steps/base.py index 06064b4..4fca3e7 100644 --- a/src/onaptests/steps/base.py +++ b/src/onaptests/steps/base.py @@ -7,7 +7,7 @@ import time from abc import ABC, abstractmethod from typing import Iterator, List, Optional -from onapsdk.aai.business import Customer +from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription from onapsdk.configuration import settings from onapsdk.exceptions import SDKException, SettingsError from onaptests.steps.reports_collection import (Report, ReportsCollection, @@ -20,6 +20,7 @@ from onaptests.utils.exceptions import (OnapTestException, IF_VALIDATION = "PYTHON_SDK_TESTS_VALIDATION" +IF_FORCE_CLEANUP = "PYTHON_SDK_TESTS_FORCE_CLEANUP" class StoreStateHandler(ABC): @@ -43,11 +44,11 @@ class StoreStateHandler(ABC): if cleanup: self._start_cleanup_time = time.time() try: - if (self._executed and self._cleanup and + if (self._cleanup and self._state_execute and (self._is_validation_only or self.check_preconditions(cleanup=True))): self._log_execution_state("START", cleanup) - if not self._is_validation_only: + if not self._is_validation_only or self._is_force_cleanup: fun(self, *args, **kwargs) self._cleaned_up = True execution_status = ReportStepStatus.PASS @@ -159,6 +160,7 @@ class BaseStep(StoreStateHandler, ABC): self._nesting_level: int = 0 self._break_on_error: bool = break_on_error self._is_validation_only = os.environ.get(IF_VALIDATION) is not None + self._is_force_cleanup = os.environ.get(IF_FORCE_CLEANUP) is not None def add_step(self, step: "BaseStep") -> None: """Add substep. @@ -401,6 +403,54 @@ class BaseStep(StoreStateHandler, ABC): class YamlTemplateBaseStep(BaseStep, ABC): """Base YAML template step.""" + def __init__(self, cleanup: bool): + """Initialize step.""" + + super().__init__(cleanup=cleanup) + self._service_instance: ServiceInstance = None + self._service_subscription: ServiceSubscription = None + self._customer: Customer = None + + def _load_customer_and_subscription(self, reload: bool = False): + if self._customer is None: + self._customer: Customer = \ + Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) + if self._service_subscription is None or reload: + self._service_subscription: ServiceSubscription = \ + self._customer.get_service_subscription_by_service_type(self.service_name) + + def _load_service_instance(self): + if self._service_instance is None: + self._service_instance: ServiceInstance = \ + self._service_subscription.get_service_instance_by_name(self.service_instance_name) + + @property + def service_name(self) -> str: + """Service name. + + Get from YAML template if it's a root step, get from parent otherwise. + + Returns: + str: Service name + + """ + if self.is_root: + return next(iter(self.yaml_template.keys())) + return self.parent.service_name + + @property + def service_instance_name(self) -> str: + """Service instance name. + + Generate service instance name. + If not applicable None is returned + + Returns: + str: Service instance name + + """ + return None + @property @abstractmethod def yaml_template(self) -> dict: diff --git a/src/onaptests/steps/instantiate/service_ala_carte.py b/src/onaptests/steps/instantiate/service_ala_carte.py index 1773aa4..528215d 100644 --- a/src/onaptests/steps/instantiate/service_ala_carte.py +++ b/src/onaptests/steps/instantiate/service_ala_carte.py @@ -3,7 +3,7 @@ from uuid import uuid4 from yaml import load, SafeLoader from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant -from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription +from onapsdk.aai.business import Customer from onapsdk.aai.business.owning_entity import OwningEntity as AaiOwningEntity from onapsdk.configuration import settings from onapsdk.exceptions import ResourceNotFound @@ -102,7 +102,6 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): super().__init__(cleanup=settings.CLEANUP_FLAG) self._yaml_template: dict = None self._service_instance_name: str = None - self._service_instance: str = None if not settings.ONLY_INSTANTIATE: self.add_step(YamlTemplateServiceOnboardStep()) self.add_step(ConnectServiceSubToCloudRegionStep()) @@ -138,20 +137,6 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - return self.parent.service_name - @property def service_instance_name(self) -> str: """Service instance name. @@ -187,9 +172,7 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): """ super().execute() service = Service(self.service_name) - customer: Customer = Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(service.name) + self._load_customer_and_subscription() cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, @@ -229,10 +212,10 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): service, cloud_region, tenant, - customer, + self._customer, owning_entity, settings.PROJECT, - service_subscription, + self._service_subscription, service_instance_name=self.service_instance_name ) try: @@ -244,10 +227,8 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): self._logger.error("Service instantiation %s failed", self.service_instance_name) raise onap_test_exceptions.ServiceInstantiateException else: - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(self.service_name) - self._service_instance: ServiceInstance = \ - service_subscription.get_service_instance_by_name(self.service_instance_name) + self._load_customer_and_subscription(reload=True) + self._load_service_instance() @YamlTemplateBaseStep.store_state(cleanup=True) def cleanup(self) -> None: @@ -257,15 +238,18 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): Exception: Service cleaning failed """ - service_deletion = self._service_instance.delete(a_la_carte=True) - try: - service_deletion.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) - except TimeoutError: - self._logger.error("Service deletion %s timed out", self._service_instance_name) - raise onap_test_exceptions.ServiceCleanupException - if service_deletion.finished: - self._logger.info("Service %s deleted", self._service_instance_name) - else: - self._logger.error("Service deletion %s failed", self._service_instance_name) - raise onap_test_exceptions.ServiceCleanupException + self._load_customer_and_subscription() + self._load_service_instance() + if self._service_instance: + service_deletion = self._service_instance.delete(a_la_carte=True) + try: + service_deletion.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) + except TimeoutError: + self._logger.error("Service deletion %s timed out", self._service_instance_name) + raise onap_test_exceptions.ServiceCleanupException + if service_deletion.finished: + self._logger.info("Service %s deleted", self._service_instance_name) + else: + self._logger.error("Service deletion %s failed", self._service_instance_name) + raise onap_test_exceptions.ServiceCleanupException super().cleanup() diff --git a/src/onaptests/steps/instantiate/service_macro.py b/src/onaptests/steps/instantiate/service_macro.py index 88eef4d..4211cbf 100644 --- a/src/onaptests/steps/instantiate/service_macro.py +++ b/src/onaptests/steps/instantiate/service_macro.py @@ -2,10 +2,8 @@ import time from typing import List from uuid import uuid4 -from onapsdk.aai.business.service import ServiceInstance from yaml import load, SafeLoader -from onapsdk.aai.business.customer import Customer, ServiceSubscription from onapsdk.aai.business.owning_entity import OwningEntity from onapsdk.aai.cloud_infrastructure.cloud_region import CloudRegion from onapsdk.aai.cloud_infrastructure.tenant import Tenant @@ -46,7 +44,6 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep): self._yaml_template: dict = None self._model_yaml_template: dict = None self._service_instance_name: str = None - self._service_instance: str = None if not settings.ONLY_INSTANTIATE: self.add_step(YamlTemplateServiceOnboardStep()) @@ -102,20 +99,6 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep): return self._model_yaml_template return self.parent.model_yaml_template - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - return self.parent.service_name - @property def service_instance_name(self) -> str: """Service instance name. @@ -151,9 +134,7 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep): """ super().execute() service = Service(self.service_name) - customer: Customer = Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(service.name) + self._load_customer_and_subscription() if any( filter(lambda x: x in self.yaml_template[self.service_name].keys(), ["vnfs", "networks"])): @@ -219,14 +200,14 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep): service_instantiation = ServiceInstantiation.instantiate_macro( sdc_service=service, - customer=customer, + customer=self._customer, owning_entity=owning_entity, project=settings.PROJECT, line_of_business=settings.LINE_OF_BUSINESS, platform=settings.PLATFORM, cloud_region=cloud_region, tenant=tenant, - service_subscription=service_subscription, + service_subscription=self._service_subscription, service_instance_name=self.service_instance_name, vnf_parameters=vnf_params_list, enable_multicloud=settings.USE_MULTICLOUD, @@ -241,10 +222,8 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep): self._logger.error("Service instantiation %s failed", self.service_instance_name) raise onap_test_exceptions.ServiceInstantiateException - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(self.service_name) - self._service_instance: ServiceInstance = \ - service_subscription.get_service_instance_by_name(self.service_instance_name) + self._load_customer_and_subscription(reload=True) + self._load_service_instance() @YamlTemplateBaseStep.store_state(cleanup=True) def cleanup(self) -> None: @@ -254,6 +233,8 @@ class YamlTemplateServiceMacroInstantiateStep(YamlTemplateBaseStep): Exception: Service cleaning failed """ + self._load_customer_and_subscription() + self._load_service_instance() if self._service_instance: service_deletion = self._service_instance.delete(a_la_carte=False) try: diff --git a/src/onaptests/steps/instantiate/vf_module_ala_carte.py b/src/onaptests/steps/instantiate/vf_module_ala_carte.py index 015e479..1682536 100644 --- a/src/onaptests/steps/instantiate/vf_module_ala_carte.py +++ b/src/onaptests/steps/instantiate/vf_module_ala_carte.py @@ -3,7 +3,6 @@ from uuid import uuid4 from yaml import load, SafeLoader from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant -from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription from onapsdk.configuration import settings from onapsdk.so.instantiation import InstantiationParameter @@ -26,7 +25,6 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): self._yaml_template: dict = None self._service_instance_name: str = None - self._service_instance: ServiceInstance = None if settings.CLOUD_REGION_TYPE == settings.K8S_REGION_TYPE: # K8SProfileStep creates the requested profile and then calls # YamlTemplateVnfAlaCarteInstantiateStep step @@ -65,20 +63,6 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - return self.parent.service_name - @property def service_instance_name(self) -> str: """Service instance name. @@ -129,11 +113,8 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): """ super().execute() - customer: Customer = Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(self.service_name) - self._service_instance: ServiceInstance = \ - service_subscription.get_service_instance_by_name(self.service_instance_name) + self._load_customer_and_subscription() + self._load_service_instance() cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, @@ -166,22 +147,23 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): Exception: Vf module cleaning failed """ - for vnf_instance in self._service_instance.vnf_instances: - self._logger.debug("VNF instance %s found in Service Instance ", - vnf_instance.name) - self._logger.info("Get VF Modules") - for vf_module in vnf_instance.vf_modules: - self._logger.info("Delete VF Module %s", - vf_module.name) - vf_module_deletion = vf_module.delete(a_la_carte=True) - - try: - vf_module_deletion.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) - if vf_module_deletion.failed: - self._logger.error("VfModule deletion %s failed", vf_module.name) + if self._service_instance: + for vnf_instance in self._service_instance.vnf_instances: + self._logger.debug("VNF instance %s found in Service Instance ", + vnf_instance.name) + self._logger.info("Get VF Modules") + for vf_module in vnf_instance.vf_modules: + self._logger.info("Delete VF Module %s", + vf_module.name) + vf_module_deletion = vf_module.delete(a_la_carte=True) + + try: + vf_module_deletion.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) + if vf_module_deletion.failed: + self._logger.error("VfModule deletion %s failed", vf_module.name) + raise onap_test_exceptions.VfModuleCleanupException + self._logger.info("VfModule %s deleted", vf_module.name) + except TimeoutError: + self._logger.error("VfModule deletion %s timed out", vf_module.name) raise onap_test_exceptions.VfModuleCleanupException - self._logger.info("VfModule %s deleted", vf_module.name) - except TimeoutError: - self._logger.error("VfModule deletion %s timed out", vf_module.name) - raise onap_test_exceptions.VfModuleCleanupException super().cleanup() diff --git a/src/onaptests/steps/instantiate/vl_ala_carte.py b/src/onaptests/steps/instantiate/vl_ala_carte.py index 414615a..7c2f4d9 100644 --- a/src/onaptests/steps/instantiate/vl_ala_carte.py +++ b/src/onaptests/steps/instantiate/vl_ala_carte.py @@ -3,7 +3,6 @@ from typing import Iterable from uuid import uuid4 from yaml import load, SafeLoader -from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription from onapsdk.configuration import settings from onapsdk.so.instantiation import Subnet from onapsdk.sdc.service import Service @@ -25,7 +24,6 @@ class YamlTemplateVlAlaCarteInstantiateStep(YamlTemplateBaseStep): super().__init__(cleanup=settings.CLEANUP_FLAG) self._yaml_template: dict = None self._service_instance_name: str = None - self._service_instance: ServiceInstance = None self.add_step(YamlTemplateServiceAlaCarteInstantiateStep()) @property @@ -59,20 +57,6 @@ class YamlTemplateVlAlaCarteInstantiateStep(YamlTemplateBaseStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - return self.parent.service_name - @property def service_instance_name(self) -> str: """Service instance name. @@ -129,15 +113,11 @@ class YamlTemplateVlAlaCarteInstantiateStep(YamlTemplateBaseStep): """ super().execute() service: Service = Service(self.service_name) - customer: Customer = Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(self.service_name) - service_instance: ServiceInstance = \ - service_subscription.get_service_instance_by_name(self.service_instance_name) - self._service_instance = service_instance + self._load_customer_and_subscription() + self._load_service_instance() for idx, network in enumerate(service.networks): # for network in self.yaml_template[self.service_name]["networks"]: - net_instantiation = service_instance.add_network( + net_instantiation = self._service_instance.add_network( network, settings.LINE_OF_BUSINESS, settings.PLATFORM, @@ -159,7 +139,7 @@ class YamlTemplateVlAlaCarteInstantiateStep(YamlTemplateBaseStep): Raises: Exception: VL cleaning failed """ - if self._cleanup: + if self._service_instance: for net_instance in self._service_instance.network_instances: self._logger.info("Start network deletion %s", net_instance.name) net_deletion = net_instance.delete(a_la_carte=True) @@ -171,4 +151,4 @@ class YamlTemplateVlAlaCarteInstantiateStep(YamlTemplateBaseStep): except TimeoutError: self._logger.error("VL deletion %s timed out", net_instance.name) raise onap_test_exceptions.NetworkCleanupException - super().cleanup() + super().cleanup() diff --git a/src/onaptests/steps/instantiate/vnf_ala_carte.py b/src/onaptests/steps/instantiate/vnf_ala_carte.py index a7ac5c3..2aa5e5e 100644 --- a/src/onaptests/steps/instantiate/vnf_ala_carte.py +++ b/src/onaptests/steps/instantiate/vnf_ala_carte.py @@ -2,7 +2,6 @@ from uuid import uuid4 from yaml import load, SafeLoader from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant -from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription from onapsdk.configuration import settings from onapsdk.sdc.service import Service @@ -23,7 +22,6 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): super().__init__(cleanup=settings.CLEANUP_FLAG) self._yaml_template: dict = None self._service_instance_name: str = None - self._service_instance: ServiceInstance = None self.add_step(YamlTemplateServiceAlaCarteInstantiateStep()) @property @@ -57,20 +55,6 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - return self.parent.service_name - @property def service_instance_name(self) -> str: """Service instance name. @@ -102,11 +86,8 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): """ super().execute() service: Service = Service(self.service_name) - customer: Customer = Customer.get_by_global_customer_id(settings.GLOBAL_CUSTOMER_ID) - service_subscription: ServiceSubscription = \ - customer.get_service_subscription_by_service_type(self.service_name) - self._service_instance: ServiceInstance = \ - service_subscription.get_service_instance_by_name(self.service_instance_name) + self._load_customer_and_subscription() + self._load_service_instance() cloud_region: CloudRegion = CloudRegion.get_by_id( cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, cloud_region_id=settings.CLOUD_REGION_ID, @@ -137,15 +118,16 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): Exception: VNF cleaning failed """ - for vnf_instance in self._service_instance.vnf_instances: - vnf_deletion = vnf_instance.delete(a_la_carte=True) - - try: - vnf_deletion.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) - if vnf_deletion.failed: - self._logger.error("VNF deletion %s failed", vnf_instance.name) + if self._service_instance: + for vnf_instance in self._service_instance.vnf_instances: + vnf_deletion = vnf_instance.delete(a_la_carte=True) + + try: + vnf_deletion.wait_for_finish(settings.ORCHESTRATION_REQUEST_TIMEOUT) + if vnf_deletion.failed: + self._logger.error("VNF deletion %s failed", vnf_instance.name) + raise onap_test_exceptions.VnfCleanupException + except TimeoutError: + self._logger.error("VNF deletion %s timed out", vnf_instance.name) raise onap_test_exceptions.VnfCleanupException - except TimeoutError: - self._logger.error("VNF deletion %s timed out", vnf_instance.name) - raise onap_test_exceptions.VnfCleanupException super().cleanup() diff --git a/src/onaptests/steps/loop/clamp.py b/src/onaptests/steps/loop/clamp.py index 245abc6..dc00eb1 100644 --- a/src/onaptests/steps/loop/clamp.py +++ b/src/onaptests/steps/loop/clamp.py @@ -65,21 +65,6 @@ class ClampStep(YamlTemplateBaseStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - else: - return self.parent.service_name - def check(self, operational_policies: list, is_template: bool = False) -> str: """Check CLAMP requirements to create a loop.""" self._logger.info("Check operational policy") diff --git a/src/onaptests/steps/onboard/clamp.py b/src/onaptests/steps/onboard/clamp.py index 7cb20ff..22783c6 100644 --- a/src/onaptests/steps/onboard/clamp.py +++ b/src/onaptests/steps/onboard/clamp.py @@ -58,21 +58,6 @@ class OnboardClampStep(YamlTemplateBaseStep): def model_yaml_template(self) -> dict: return {} - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - else: - return self.parent.service_name - @YamlTemplateBaseStep.store_state def execute(self): """Onboard service.""" diff --git a/src/onaptests/steps/onboard/service.py b/src/onaptests/steps/onboard/service.py index be0f6fd..bcf153f 100644 --- a/src/onaptests/steps/onboard/service.py +++ b/src/onaptests/steps/onboard/service.py @@ -171,20 +171,6 @@ class YamlTemplateServiceOnboardStep(YamlTemplateBaseStep): return self._model_yaml_template return self.parent.model_yaml_template - @property - def service_name(self) -> str: - """Service name. - - Get from YAML template if it's a root step, get from parent otherwise. - - Returns: - str: Service name - - """ - if self.is_root: - return next(iter(self.yaml_template.keys())) - return self.parent.service_name - @YamlTemplateBaseStep.store_state def execute(self): """Onboard service.""" -- cgit 1.2.3-korg