From ac7ed508cd0ae434ac9237196a42045c5e7d6e92 Mon Sep 17 00:00:00 2001 From: Michal Jagiello Date: Wed, 18 Nov 2020 11:20:59 +0000 Subject: CDS onboarding steps and simple CBA enrichment scenarion. Steps for data dictionary upload and CBA enrichment Issue-ID: TEST-245 Signed-off-by: Michal Jagiello Change-Id: If7f3346c79ae97e35b21e919435270a0c54f77dd --- src/onaptests/steps/onboard/cds.py | 129 ++++++++++++++++++++++++++++++ src/onaptests/steps/reports_collection.py | 4 +- 2 files changed, 131 insertions(+), 2 deletions(-) create mode 100644 src/onaptests/steps/onboard/cds.py (limited to 'src/onaptests/steps') diff --git a/src/onaptests/steps/onboard/cds.py b/src/onaptests/steps/onboard/cds.py new file mode 100644 index 0000000..ed381ad --- /dev/null +++ b/src/onaptests/steps/onboard/cds.py @@ -0,0 +1,129 @@ +# http://www.apache.org/licenses/LICENSE-2.0 +"""CDS onboard module.""" + +from abc import ABC +from pathlib import Path + +from kubernetes import client, config +from onapsdk.cds import Blueprint, DataDictionarySet +from onapsdk.cds.blueprint_processor import Blueprintprocessor +from onapsdk.configuration import settings + +from ..base import BaseStep + + +class CDSBaseStep(BaseStep, ABC): + """Abstract CDS base step.""" + + @property + def component(self) -> str: + """Component name.""" + return "CDS" + + +class ExposeCDSBlueprintprocessorNodePortStep(CDSBaseStep): + """Expose CDS blueprintsprocessor port.""" + + @property + def description(self) -> str: + """Step description.""" + return "Expose CDS blueprintsprocessor NodePort." + + @BaseStep.store_state + def execute(self) -> None: + """Expose CDS blueprintprocessor port using kubernetes client. + + Use settings values: + - K8S_CONFIG, + - K8S_NAMESPACE. + + """ + super().execute() + config.load_kube_config(settings.K8S_CONFIG) + k8s_client = client.CoreV1Api() + k8s_client.patch_namespaced_service( + "cds-blueprints-processor-http", + settings.K8S_NAMESPACE, + {"spec": {"ports": [{"port": 8080, "nodePort": 30449}], "type": "NodePort"}} + ) + + +class BootstrapBlueprintprocessor(CDSBaseStep): + """Bootstrap blueprintsprocessor.""" + + def __init__(self, cleanup: bool = False) -> None: + super().__init__(cleanup=cleanup) + self.add_step(ExposeCDSBlueprintprocessorNodePortStep(cleanup=cleanup)) + + @property + def description(self) -> str: + """Step description.""" + return "Bootstrap CDS blueprintprocessor" + + @BaseStep.store_state + def execute(self) -> None: + """Bootsrap CDS blueprintprocessor""" + super().execute() + Blueprintprocessor.bootstrap() + + +class DataDictionaryUploadStep(CDSBaseStep): + """Upload data dictionaries to CDS step.""" + + def __init__(self, cleanup: bool = False) -> None: + """Initialize data dictionary upload step.""" + super().__init__(cleanup=cleanup) + self.add_step(BootstrapBlueprintprocessor(cleanup=cleanup)) + + @property + def description(self) -> str: + """Step description.""" + return "Upload data dictionaries to CDS." + + @BaseStep.store_state + def execute(self) -> None: + """Upload data dictionary to CDS. + + Use settings values: + - CDS_DD_FILE. + + """ + super().execute() + dd_set: DataDictionarySet = DataDictionarySet.load_from_file(settings.CDS_DD_FILE) + dd_set.upload() + + +class CbaEnrichStep(CDSBaseStep): + """Enrich CBA file step.""" + + def __init__(self, cleanup=False) -> None: + """Initialize CBA enrichment step.""" + super().__init__(cleanup=cleanup) + self.add_step(DataDictionaryUploadStep(cleanup=cleanup)) + + @property + def description(self) -> str: + """Step description.""" + return "Enrich CBA file." + + @BaseStep.store_state + def execute(self) -> None: + """Enrich CBA file. + + Use settings values: + - CDS_DD_FILE. + + """ + super().execute() + blueprint: Blueprint = Blueprint.load_from_file(settings.CDS_CBA_UNENRICHED) + blueprint.enrich() + blueprint.save(settings.CDS_CBA_ENRICHED) + + def cleanup(self) -> None: + """Cleanup enrichment step. + + Delete enriched CBA file. + + """ + super().cleanup() + Path(settings.CDA_CBA_ENRICHED).unlink() diff --git a/src/onaptests/steps/reports_collection.py b/src/onaptests/steps/reports_collection.py index e1eae51..4e19012 100644 --- a/src/onaptests/steps/reports_collection.py +++ b/src/onaptests/steps/reports_collection.py @@ -63,12 +63,12 @@ class ReportsCollection: usecase = settings.SERVICE_NAME try: details = settings.SERVICE_DETAILS - except (KeyError, NameError): + except (KeyError, AttributeError): details = "" try: components = settings.SERVICE_COMPONENTS - except (KeyError, NameError): + except (KeyError, AttributeError): components = "" jinja_env = Environment( -- cgit 1.2.3-korg