First proposal for the structure for pythonsdk based scenarios
[testsuite/pythonsdk-tests.git] / src / onaptests / steps / onboard / vf.py
1 from onapsdk.configuration import settings
2 from onapsdk.sdc.vf import Vf
3 from onapsdk.sdc.vsp import Vsp
4
5 from ..base import BaseStep, YamlTemplateBaseStep
6 from .vsp import VspOnboardStep, YamlTemplateVspOnboardStep
7
8
9 class VfOnboardStep(BaseStep):
10     """Vf onboard step."""
11
12     def __init__(self, cleanup=False):
13         """Initialize step.
14
15         Substeps:
16             - VspOnboardStep.
17         """
18         super().__init__(cleanup=cleanup)
19         self.add_step(VspOnboardStep(cleanup=cleanup))
20
21     def execute(self):
22         """Onboard Vf.
23
24         Use settings values:
25          - VSP_NAME,
26          - VF_NAME.
27
28         """
29         super().execute()
30         vsp: Vsp = Vsp(name=settings.VSP_NAME)
31         vf: Vf = Vf(name=settings.VF_NAME, vsp=vsp)
32         vf.onboard()
33
34
35 class YamlTemplateVfOnboardStep(YamlTemplateBaseStep):
36     """Vf onboard using YAML template step."""
37
38     def __init__(self, cleanup=False) -> None:
39         """Initialize step.
40
41         Substeps:
42             - YamlTemplateVspOnboardStep.
43         """
44         super().__init__(cleanup=cleanup)
45         self.add_step(YamlTemplateVspOnboardStep(cleanup=cleanup))
46
47     @property
48     def yaml_template(self) -> dict:
49         """YAML template.
50
51         Get YAML template from parent using it's name.
52
53         Returns:
54             dict: YAML template
55
56         """
57         return self.parent.yaml_template[self.parent.name]
58
59     def execute(self):
60         """Onboard Vfs from YAML template."""
61         super().execute()
62         for vnf in self.yaml_template["vnfs"]:
63             vsp: Vsp = Vsp(name=f"{vnf['vnf_name']}_VSP")
64             vf: Vf = Vf(name=vnf['vnf_name'], vsp=vsp)
65             vf.onboard()