diff options
Diffstat (limited to 'src/onaptests/steps/instantiate')
4 files changed, 7 insertions, 177 deletions
diff --git a/src/onaptests/steps/instantiate/k8s_profile_create.py b/src/onaptests/steps/instantiate/k8s_profile_create.py deleted file mode 100644 index 375aa2c..0000000 --- a/src/onaptests/steps/instantiate/k8s_profile_create.py +++ /dev/null @@ -1,165 +0,0 @@ -from typing import Iterable -from uuid import uuid4 -from yaml import load - -from onapsdk.aai.business import Customer, ServiceInstance, ServiceSubscription -from onapsdk.configuration import settings -from onapsdk.msb.k8s import Definition -from onapsdk.so.instantiation import VnfParameter - -from ..base import BaseStep -from .vnf_ala_carte import YamlTemplateVnfAlaCarteInstantiateStep - -class K8SProfileStep(BaseStep): - """CreateK8sProfileStep.""" - - def __init__(self, cleanup=False): - """Initialize step. - """ - 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 - def yaml_template(self) -> dict: - """Step YAML template. - - Load from file if it's a root step, get from parent otherwise. - - Returns: - dict: Step YAML template - - """ - if self.is_root: - if not self._yaml_template: - with open(settings.SERVICE_YAML_TEMPLATE, "r") as yaml_template: - self._yaml_template: dict = load(yaml_template) - return self._yaml_template - return self.parent.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. - - Generate using `service_name` and `uuid4()` function if it's a root step, - get from parent otherwise. - - Returns: - str: Service instance name - - """ - if self.is_root: - if not self._service_instance_name: - self._service_instance_name: str = f"{self.service_name}-{str(uuid4())}" - return self._service_instance_name - return self.parent.service_instance_name - - def get_vnf_parameters(self, vnf_name: str) -> Iterable[VnfParameter]: - """Get VNF parameters from YAML template. - - Args: - vnf_name (str): VNF name to get parameters for. - - Yields: - Iterator[Iterable[VnfParameter]]: VNF parameter - - """ - - # workaround, as VNF name differs from model name (added " 0") - vnf_name = vnf_name.split()[0] - for vnf in self.yaml_template[self.service_name]["vnfs"]: - if vnf["vnf_name"] == vnf_name: - for vnf_parameter in vnf["vnf_parameters"]: - yield VnfParameter( - name=vnf_parameter["name"], - value=vnf_parameter["value"] - ) - - @BaseStep.store_state - def execute(self): - """Creation of k8s profile for resource bundle definition - - Use settings values: - - GLOBAL_CUSTOMER_ID - - K8S_PROFILE_K8S_VERSION - - K8S_PROFILE_ARTIFACT_PATH. - """ - 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) - - for vnf_instance in self._service_instance.vnf_instances: - # possible to have several modules for 1 VNF - for vf_module in vnf_instance.vnf.vf_modules: - # Define profile (rb_profile) for resource bundle definition - # Retrieve resource bundle definition (rbdef) corresponding to vf module - rbdef_name = vf_module.metadata["vfModuleModelInvariantUUID"] - rbdef_version = vf_module.metadata["vfModuleModelUUID"] - rbdef = Definition.get_definition_by_name_version(rbdef_name, rbdef_version) - # Get k8s profile name from yaml service template - vnf_parameters = self.get_vnf_parameters(vnf_instance.vnf.name) - k8s_profile_name = "" - k8s_profile_namespace = "" - for param in vnf_parameters: - if param.name == "k8s-rb-profile-name": - k8s_profile_name = param.value - if param.name == "k8s-rb-profile-namespace": - k8s_profile_namespace = param.value - if k8s_profile_name == "" or k8s_profile_namespace == "": - raise Exception("Vf module instantiation failed, missing rb profile information") - ######## Check profile for Definition ################################### - try: - rbdef.get_profile_by_name(k8s_profile_name) - except ValueError: - ######## Create profile for Definition ################################### - profile = rbdef.create_profile(k8s_profile_name, - k8s_profile_namespace, - settings.K8S_PROFILE_K8S_VERSION) - ####### Upload artifact for created profile ############################## - profile.upload_artifact(open(settings.K8S_PROFILE_ARTIFACT_PATH, 'rb').read()) - - def cleanup(self) -> None: - """Cleanup K8S profiles. - """ - self._logger.info("*Clean the k8s profile *") - for vnf_instance in self._service_instance.vnf_instances: - # possible to have several modules for 1 VNF - for vf_module in vnf_instance.vnf.vf_modules: - # Retrieve resource bundle definition (rbdef) corresponding to vf module - rbdef_name = vf_module.metadata["vfModuleModelInvariantUUID"] - rbdef_version = vf_module.metadata["vfModuleModelUUID"] - rbdef = Definition.get_definition_by_name_version(rbdef_name, rbdef_version) - # Get k8s profile name from yaml service template - vnf_parameters = self.get_vnf_parameters(vnf_instance.vnf.name) - k8s_profile_name = "" - for param in vnf_parameters: - if param.name == "k8s-rb-profile-name": - k8s_profile_name = param.value - if k8s_profile_name == "": - raise Exception("K8s profile deletion failed, missing rb profile name") - ######## Delete profile for Definition ################################### - try: - profile = rbdef.get_profile_by_name(k8s_profile_name) - profile.delete() - except ValueError: - self._logger.error("K8s profile deletion %s failed", k8s_profile_name) - raise Exception("K8s profile deletion failed") - super().cleanup() diff --git a/src/onaptests/steps/instantiate/service_ala_carte.py b/src/onaptests/steps/instantiate/service_ala_carte.py index 80473b7..b3b56c4 100644 --- a/src/onaptests/steps/instantiate/service_ala_carte.py +++ b/src/onaptests/steps/instantiate/service_ala_carte.py @@ -219,6 +219,7 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): Exception: Service cleaning failed """ + super().cleanup() service_deletion = self._service_instance.delete() nb_try = 0 nb_try_max = 30 @@ -231,4 +232,3 @@ class YamlTemplateServiceAlaCarteInstantiateStep(YamlTemplateBaseStep): else: self._logger.error("Service deletion %s failed", self._service_instance_name) raise Exception("Service cleanup failed") - super().cleanup() diff --git a/src/onaptests/steps/instantiate/vf_module_ala_carte.py b/src/onaptests/steps/instantiate/vf_module_ala_carte.py index c1b2e23..14ef2d8 100644 --- a/src/onaptests/steps/instantiate/vf_module_ala_carte.py +++ b/src/onaptests/steps/instantiate/vf_module_ala_carte.py @@ -10,7 +10,6 @@ from onapsdk.so.instantiation import VnfParameter from ..base import YamlTemplateBaseStep from .vnf_ala_carte import YamlTemplateVnfAlaCarteInstantiateStep -from .k8s_profile_create import K8SProfileStep class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): """Instantiate vf module a'la carte using YAML template.""" @@ -26,12 +25,7 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): self._yaml_template: dict = None self._service_instance_name: str = None self._service_instance: ServiceInstance = None - if settings.CLOUD_REGION_TYPE == "k8s": - self.add_step(K8SProfileStep(cleanup)) - else: - self.add_step(YamlTemplateVnfAlaCarteInstantiateStep(cleanup)) - - + self.add_step(YamlTemplateVnfAlaCarteInstantiateStep(cleanup)) @property def yaml_template(self) -> dict: @@ -93,7 +87,7 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): """ # workaround, as VNF name differs from model name (added " 0") - vnf_name = vnf_name.split()[0] + vnf_name=vnf_name.split()[0] for vnf in self.yaml_template[self.service_name]["vnfs"]: if vnf["vnf_name"] == vnf_name: for vnf_parameter in vnf["vnf_parameters"]: @@ -131,7 +125,7 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): cloud_region, tenant, self._service_instance_name, - vnf_parameters=self.get_vnf_parameters(vnf_instance.vnf.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: @@ -145,6 +139,7 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): 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) @@ -165,4 +160,3 @@ class YamlTemplateVfModuleAlaCarteInstantiateStep(YamlTemplateBaseStep): else: self._logger.error("VfModule deletion %s failed", vf_module.name) raise Exception("Vf module cleanup failed") - super().cleanup() diff --git a/src/onaptests/steps/instantiate/vnf_ala_carte.py b/src/onaptests/steps/instantiate/vnf_ala_carte.py index 9fa7576..0ab498d 100644 --- a/src/onaptests/steps/instantiate/vnf_ala_carte.py +++ b/src/onaptests/steps/instantiate/vnf_ala_carte.py @@ -119,6 +119,8 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): Exception: VNF cleaning failed """ + super().cleanup() + for vnf_instance in self._service_instance.vnf_instances: vnf_deletion = vnf_instance.delete() nb_try = 0 @@ -133,4 +135,3 @@ class YamlTemplateVnfAlaCarteInstantiateStep(YamlTemplateBaseStep): else: self._logger.error("VNF deletion %s failed", vnf_instance.name) raise Exception("VNF Cleanup failed") - super().cleanup() |