aboutsummaryrefslogtreecommitdiffstats
path: root/src/onaptests/steps/instantiate
diff options
context:
space:
mode:
authormrichomme <morgan.richomme@orange.com>2020-09-14 18:16:26 +0200
committermrichomme <morgan.richomme@orange.com>2020-09-16 17:54:32 +0200
commitb6f965609e956d9d26f3359b75ef2aaf1d596a5f (patch)
tree2204eb1557e22b2a46645ffa7566da3efe7d8ea8 /src/onaptests/steps/instantiate
parenta85a306fb5ee8259b09c392c03ac499c828b5597 (diff)
Add cleanup function
Issue-ID: TEST-240 Signed-off-by: mrichomme <morgan.richomme@orange.com> Change-Id: I784e958f869a0cbee702c915509fe80d37d44b65 Signed-off-by: mrichomme <morgan.richomme@orange.com>
Diffstat (limited to 'src/onaptests/steps/instantiate')
-rw-r--r--src/onaptests/steps/instantiate/service_ala_carte.py29
-rw-r--r--src/onaptests/steps/instantiate/vf_module_ala_carte.py55
-rw-r--r--src/onaptests/steps/instantiate/vnf_ala_carte.py41
3 files changed, 116 insertions, 9 deletions
diff --git a/src/onaptests/steps/instantiate/service_ala_carte.py b/src/onaptests/steps/instantiate/service_ala_carte.py
index 4742d61..249a171 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
from onapsdk.aai.cloud_infrastructure import CloudRegion, Tenant
-from onapsdk.aai.business import Customer
+from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription
from onapsdk.aai.business.owning_entity import OwningEntity as AaiOwningEntity
from onapsdk.configuration import settings
from onapsdk.sdc.service import Service
@@ -84,6 +84,8 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep):
super().__init__(cleanup=cleanup)
self._yaml_template: dict = None
self._service_instance_name: str = None
+ self._service_instance: str = None
+
self.add_step(YamlTemplateServiceOnboardStep(cleanup))
self.add_step(ConnectServiceSubToCloudRegionStep(cleanup))
@@ -178,3 +180,28 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep):
time.sleep(10)
if service_instantiation.failed:
raise Exception("Service instantiation failed")
+ 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)
+
+
+ def cleanup(self) -> None:
+ """Cleanup Service.
+
+ Raises:
+ Exception: Service cleaning failed
+
+ """
+ super().cleanup()
+ service_deletion = self._service_instance.delete()
+ nb_try = 0
+ nb_try_max = 30
+ while not service_deletion.finished and nb_try < nb_try_max:
+ self._logger.info("Wait for Service deletion")
+ nb_try += 1
+ time.sleep(15)
+ 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 Exception("Service cleanup failed")
diff --git a/src/onaptests/steps/instantiate/vf_module_ala_carte.py b/src/onaptests/steps/instantiate/vf_module_ala_carte.py
index b4ff002..3a22159 100644
--- a/src/onaptests/steps/instantiate/vf_module_ala_carte.py
+++ b/src/onaptests/steps/instantiate/vf_module_ala_carte.py
@@ -3,6 +3,7 @@ from typing import Iterable
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.so.instantiation import VnfParameter
@@ -10,7 +11,6 @@ from onapsdk.so.instantiation import VnfParameter
from ..base import YamlTemplateBaseStep
from .vnf_ala_carte import YamlTemplateVnfAlaCarteInstantiateStep
-
class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep):
"""Instantiate vf module a'la carte using YAML template."""
@@ -21,8 +21,10 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep):
- YamlTemplateVnfAlaCarteInstantiateStep.
"""
super().__init__(cleanup=cleanup)
+
self._yaml_template: dict = None
self._service_instance_name: str = None
+ self._service_instance: ServiceInstance = None
self.add_step(YamlTemplateVnfAlaCarteInstantiateStep(cleanup))
@property
@@ -107,12 +109,53 @@ 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)
- service_instance: ServiceInstance = service_subscription.get_service_instance_by_name(self.service_instance_name)
- for vnf_instance in service_instance.vnf_instances:
- vf_module_instantiation = vnf_instance.add_vf_module(
- vnf_instance.vnf.vf_module,
- vnf_parameters= self.get_vnf_parameters(vnf_instance.vnf.name))
+ self._service_instance: ServiceInstance = service_subscription.get_service_instance_by_name(self.service_instance_name)
+ 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 vnf_instance in self._service_instance.vnf_instances:
+ # possible to have several moduels for 1 VNF
+ for vf_module in vnf_instance.vnf.vf_modules:
+ vf_module_instantiation = vnf_instance.add_vf_module(
+ vf_module,
+ cloud_region,
+ tenant,
+ self._service_instance_name,
+ vnf_parameters= self.get_vnf_parameters(vnf_instance.vnf.name))
while not vf_module_instantiation.finished:
time.sleep(10)
if vf_module_instantiation.failed:
raise Exception("Vf module instantiation failed")
+
+
+ def cleanup(self) -> None:
+ """Cleanup Vf module.
+
+ Raises:
+ Exception: Vf module cleaning failed
+
+ """
+ super().cleanup()
+ 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()
+ nb_try = 0
+ nb_try_max = 30
+
+ while not vf_module_deletion.finished and nb_try < nb_try_max:
+ self._logger.info("Wait for vf module deletion")
+ nb_try += 1
+ time.sleep(20)
+ if vf_module_deletion.finished:
+ self._logger.info("VfModule %s deleted", vf_module.name)
+ else:
+ self._logger.error("VfModule deletion %s failed", vf_module.name)
+ raise Exception("Vf module cleanup failed")
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")