diff options
Diffstat (limited to 'src/onaptests/steps/instantiate/vnf_ala_carte.py')
-rw-r--r-- | src/onaptests/steps/instantiate/vnf_ala_carte.py | 41 |
1 files changed, 39 insertions, 2 deletions
diff --git a/src/onaptests/steps/instantiate/vnf_ala_carte.py b/src/onaptests/steps/instantiate/vnf_ala_carte.py index 7701630..f52857d 100644 --- a/src/onaptests/steps/instantiate/vnf_ala_carte.py +++ b/src/onaptests/steps/instantiate/vnf_ala_carte.py @@ -2,6 +2,7 @@ import time from uuid import uuid4 from yaml import load +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,6 +24,7 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): super().__init__(cleanup=cleanup) self._yaml_template: dict = None self._service_instance_name: str = None + self._service_instance: ServiceInstance = None self.add_step(YamlTemplateServiceAlaCarteInstantiateStep(cleanup)) @property @@ -88,12 +90,47 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): 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: ServiceInstance = service_subscription.get_service_instance_by_name(self.service_instance_name) line_of_business: LineOfBusiness = LineOfBusiness(settings.LINE_OF_BUSINESS) platform: Platform = Platform(settings.PLATFORM) + cloud_region: CloudRegion = CloudRegion.get_by_id( + cloud_owner=settings.CLOUD_REGION_CLOUD_OWNER, + cloud_region_id=settings.CLOUD_REGION_ID, + ) + tenant: Tenant = cloud_region.get_tenant(settings.TENANT_ID) for idx, vnf in enumerate(service.vnfs): - vnf_instantiation = service_instance.add_vnf(vnf, line_of_business, platform, f"{self.service_instance_name}_vnf_{idx}") + vnf_instantiation = self._service_instance.add_vnf( + vnf, + line_of_business, + platform, + cloud_region, + tenant, + f"{self.service_instance_name}_vnf_{idx}") while not vnf_instantiation.finished: time.sleep(10) if vnf_instantiation.failed: raise Exception("Vnf instantiation failed") + + def cleanup(self) -> None: + """Cleanup VNF. + + Raises: + Exception: VNF cleaning failed + + """ + super().cleanup() + + for vnf_instance in self._service_instance.vnf_instances: + vnf_deletion = vnf_instance.delete() + nb_try = 0 + nb_try_max = 30 + + while not vnf_deletion.finished and nb_try < nb_try_max: + self._logger.info("Wait for vnf deletion") + nb_try += 1 + time.sleep(15) + if vnf_deletion.finished: + self._logger.info("VNF %s deleted", vnf_instance.name) + else: + self._logger.error("VNF deletion %s failed", vnf_instance.name) + raise Exception("VNF Cleanup failed") |