aboutsummaryrefslogtreecommitdiffstats
path: root/src/onaptests/steps/base.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/onaptests/steps/base.py')
-rw-r--r--src/onaptests/steps/base.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/onaptests/steps/base.py b/src/onaptests/steps/base.py
new file mode 100644
index 0000000..b32e6d3
--- /dev/null
+++ b/src/onaptests/steps/base.py
@@ -0,0 +1,84 @@
+from abc import ABC, abstractmethod
+from typing import List
+
+
+class BaseStep(ABC):
+ """Base step class."""
+
+ def __init__(self, cleanup: bool = False) -> None:
+ """Step initialization.
+
+ Args:
+ cleanup(bool, optional): Determines if cleanup action should be called.
+
+ """
+ self._steps: List["BaseStep"] = []
+ self._cleanup: bool = cleanup
+ self._parent: "BaseStep" = None
+
+ def add_step(self, step: "BaseStep") -> None:
+ """Add substep.
+
+ Add substep and mark step as a substep parent.
+
+ Args:
+ step (BaseStep): Step object
+ """
+ self._steps.append(step)
+ step._parent: "BaseStep" = self
+
+ @property
+ def parent(self) -> "BaseStep":
+ """Step parent.
+
+ If parent is not set the step is a root one.
+ """
+ return self._parent
+
+ @property
+ def is_root(self) -> bool:
+ """Is a root step.
+
+ Step is a root if has no parent
+
+ Returns:
+ bool: True if step is a root step, False otherwise
+
+ """
+ return self._parent is None
+
+ def execute(self) -> None:
+ """Step's action.
+
+ Run all substeps action before it's own action.
+ Override this method and remember to call `super().action()` before.
+
+ """
+ for step in self._steps:
+ step.execute()
+
+ def cleanup(self) -> None:
+ """Step's cleanup.
+
+ Not all steps has to have cleanup method
+
+ """
+ if self._cleanup:
+ for step in self._steps:
+ step.cleanup()
+
+
+class YamlTemplateBaseStep(BaseStep, ABC):
+ """Base YAML template step."""
+
+ @property
+ @abstractmethod
+ def yaml_template(self) -> dict:
+ """YAML template abstract property.
+
+ Every YAML template step need to implement that property.
+
+ Returns:
+ dict: YAML template
+
+ """