aboutsummaryrefslogtreecommitdiffstats
path: root/src/onaptests/steps/onboard
diff options
context:
space:
mode:
authorMichal Jagiello <michal.jagiello@t-mobile.pl>2020-07-16 19:16:42 +0200
committerMichal Jagiello <michal.jagiello@t-mobile.pl>2020-08-24 17:39:38 +0000
commitf9b0c349a5c83f9278f6b115d334598201d9d7e6 (patch)
tree474e0928dda4a7fd8340f27ab72bb5bee7683fce /src/onaptests/steps/onboard
parent9d674116f24285d68a80597202d393b74ac544ce (diff)
First proposal for the structure for pythonsdk based scenarios
Issue-ID: TEST-240 Change-Id: Ic989b26442b868363af7b3872bff49dd70d78be0 Signed-off-by: Michal Jagiello <michal.jagiello@t-mobile.pl>
Diffstat (limited to 'src/onaptests/steps/onboard')
-rw-r--r--src/onaptests/steps/onboard/__init__.py0
-rw-r--r--src/onaptests/steps/onboard/service.py88
-rw-r--r--src/onaptests/steps/onboard/vendor.py19
-rw-r--r--src/onaptests/steps/onboard/vf.py65
-rw-r--r--src/onaptests/steps/onboard/vsp.py62
5 files changed, 234 insertions, 0 deletions
diff --git a/src/onaptests/steps/onboard/__init__.py b/src/onaptests/steps/onboard/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/src/onaptests/steps/onboard/__init__.py
diff --git a/src/onaptests/steps/onboard/service.py b/src/onaptests/steps/onboard/service.py
new file mode 100644
index 0000000..0143908
--- /dev/null
+++ b/src/onaptests/steps/onboard/service.py
@@ -0,0 +1,88 @@
+from yaml import load
+
+from onapsdk.configuration import settings
+from onapsdk.sdc.service import Service
+from onapsdk.sdc.vf import Vf
+
+from ..base import BaseStep, YamlTemplateBaseStep
+from .vf import VfOnboardStep, YamlTemplateVfOnboardStep
+
+
+class ServiceOnboardStep(BaseStep):
+ """Service onboard step."""
+
+ def __init__(self, cleanup=False):
+ """Initialize step.
+
+ Substeps:
+ - VfOnboardStep.
+ """
+ super().__init__(cleanup=cleanup)
+ self.add_step(VfOnboardStep(cleanup=cleanup))
+
+ def execute(self):
+ """Onboard service.
+
+ Use settings values:
+ - VF_NAME,
+ - SERVICE_NAME.
+
+ """
+ super().execute()
+ vf: Vf = Vf(name=settings.VF_NAME)
+ service: Service = Service(name=settings.SERVICE_NAME, resources=[vf])
+ service.onboard()
+
+
+class YamlTemplateServiceOnboardStep(YamlTemplateBaseStep):
+ """Service onboard using YAML template step."""
+
+ def __init__(self, cleanup=False):
+ """Initialize step.
+
+ Substeps:
+ - YamlTemplateVfOnboardStep.
+ """
+ super().__init__(cleanup=cleanup)
+ self._yaml_template: dict = None
+ self.add_step(YamlTemplateVfOnboardStep(cleanup=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()))
+ else:
+ return self.parent.service_name
+
+ def execute(self):
+ """Onboard service."""
+ super().execute()
+ service: Service = Service(name=self.service_name,
+ resources=[Vf(name=vnf["vnf_name"]) \
+ for vnf in self.yaml_template[self.name]["vnfs"]])
+ service.onboard()
diff --git a/src/onaptests/steps/onboard/vendor.py b/src/onaptests/steps/onboard/vendor.py
new file mode 100644
index 0000000..8a4cb48
--- /dev/null
+++ b/src/onaptests/steps/onboard/vendor.py
@@ -0,0 +1,19 @@
+from onapsdk.configuration import settings
+from onapsdk.sdc.vendor import Vendor
+
+from ..base import BaseStep
+
+
+class VendorOnboardStep(BaseStep):
+ """Vendor onboard step."""
+
+ def execute(self):
+ """Onboard vendor.
+
+ Use settings values:
+ - VENDOR_NAME.
+
+ """
+ super().execute()
+ vendor: Vendor = Vendor(name=settings.VENDOR_NAME)
+ vendor.onboard()
diff --git a/src/onaptests/steps/onboard/vf.py b/src/onaptests/steps/onboard/vf.py
new file mode 100644
index 0000000..6d19b9a
--- /dev/null
+++ b/src/onaptests/steps/onboard/vf.py
@@ -0,0 +1,65 @@
+from onapsdk.configuration import settings
+from onapsdk.sdc.vf import Vf
+from onapsdk.sdc.vsp import Vsp
+
+from ..base import BaseStep, YamlTemplateBaseStep
+from .vsp import VspOnboardStep, YamlTemplateVspOnboardStep
+
+
+class VfOnboardStep(BaseStep):
+ """Vf onboard step."""
+
+ def __init__(self, cleanup=False):
+ """Initialize step.
+
+ Substeps:
+ - VspOnboardStep.
+ """
+ super().__init__(cleanup=cleanup)
+ self.add_step(VspOnboardStep(cleanup=cleanup))
+
+ def execute(self):
+ """Onboard Vf.
+
+ Use settings values:
+ - VSP_NAME,
+ - VF_NAME.
+
+ """
+ super().execute()
+ vsp: Vsp = Vsp(name=settings.VSP_NAME)
+ vf: Vf = Vf(name=settings.VF_NAME, vsp=vsp)
+ vf.onboard()
+
+
+class YamlTemplateVfOnboardStep(YamlTemplateBaseStep):
+ """Vf onboard using YAML template step."""
+
+ def __init__(self, cleanup=False) -> None:
+ """Initialize step.
+
+ Substeps:
+ - YamlTemplateVspOnboardStep.
+ """
+ super().__init__(cleanup=cleanup)
+ self.add_step(YamlTemplateVspOnboardStep(cleanup=cleanup))
+
+ @property
+ def yaml_template(self) -> dict:
+ """YAML template.
+
+ Get YAML template from parent using it's name.
+
+ Returns:
+ dict: YAML template
+
+ """
+ return self.parent.yaml_template[self.parent.name]
+
+ def execute(self):
+ """Onboard Vfs from YAML template."""
+ super().execute()
+ for vnf in self.yaml_template["vnfs"]:
+ vsp: Vsp = Vsp(name=f"{vnf['vnf_name']}_VSP")
+ vf: Vf = Vf(name=vnf['vnf_name'], vsp=vsp)
+ vf.onboard()
diff --git a/src/onaptests/steps/onboard/vsp.py b/src/onaptests/steps/onboard/vsp.py
new file mode 100644
index 0000000..f1eec1f
--- /dev/null
+++ b/src/onaptests/steps/onboard/vsp.py
@@ -0,0 +1,62 @@
+from onapsdk.configuration import settings
+from onapsdk.sdc.vendor import Vendor
+from onapsdk.sdc.vsp import Vsp
+
+from ..base import BaseStep, YamlTemplateBaseStep
+from .vendor import VendorOnboardStep
+
+
+class VspOnboardStep(BaseStep):
+ """Vsp onboard step."""
+
+ def __init__(self, cleanup=False):
+ """Initialize step.
+
+ Substeps:
+ - VendorOnboardStep.
+ """
+ super().__init__(cleanup=cleanup)
+ self.add_step(VendorOnboardStep(cleanup=cleanup))
+
+ def execute(self):
+ """Onboard Vsp.
+
+ Use settings values:
+ - VSP_NAME,
+ - VSP_FILE_PATH,
+ - VENDOR_NAME.
+
+ """
+ super().execute()
+ vendor: Vendor = Vendor(name=settings.VENDOR_NAME)
+ vsp: Vsp = Vsp(name=settings.VSP_NAME, vendor=vendor, package=open(settings.VSP_FILE_PATH, "rb"))
+ vsp.onboard()
+
+
+class YamlTemplateVspOnboardStep(VspOnboardStep, YamlTemplateBaseStep):
+ """Vsp onboard using YAML template step."""
+
+ @property
+ def yaml_template(self) -> dict:
+ """YAML template.
+
+ Get YAML template from parent.
+
+ Returns:
+ dict: YAML template
+
+ """
+ return self.parent.yaml_template
+
+ def execute(self):
+ """Onboard Vsps from YAML template.
+
+ Use settings values:
+ - VENDOR_NAME.
+ """
+ super().execute()
+ vendor: Vendor = Vendor(name=settings.VENDOR_NAME)
+ for vnf in self.yaml_template["vnfs"]:
+ with open(vnf["heat_files_to_upload"], "rb") as package:
+ vsp: Vsp = Vsp(name=f"{vnf['vnf_name']}_VSP", vendor=vendor, package=package)
+ vsp.onboard()