aboutsummaryrefslogtreecommitdiffstats
path: root/src/onaptests/steps
diff options
context:
space:
mode:
Diffstat (limited to 'src/onaptests/steps')
-rw-r--r--src/onaptests/steps/instantiate/sdnc_service.py104
-rw-r--r--src/onaptests/steps/reports_collection.py20
2 files changed, 123 insertions, 1 deletions
diff --git a/src/onaptests/steps/instantiate/sdnc_service.py b/src/onaptests/steps/instantiate/sdnc_service.py
new file mode 100644
index 0000000..c5308d6
--- /dev/null
+++ b/src/onaptests/steps/instantiate/sdnc_service.py
@@ -0,0 +1,104 @@
+from onapsdk.sdnc.services import Service
+from onapsdk.configuration import settings
+from onapsdk.exceptions import APIError
+
+from ..base import BaseStep
+
+from onaptests.utils.exceptions import OnapTestException
+
+
+class ServiceCreateStep(BaseStep):
+ """Service creation step."""
+
+ def __init__(self, service: Service = None, cleanup: bool = False):
+ """Initialize step."""
+ super().__init__(cleanup=cleanup)
+ self.service = service
+
+ @property
+ def description(self) -> str:
+ """Step description."""
+ return "Create SDNC service."
+
+ @property
+ def component(self) -> str:
+ """Component name."""
+ return "SDNC"
+
+ @BaseStep.store_state
+ def execute(self):
+ """Create service at SDNC."""
+ self._logger.info("Create new service instance in SDNC by GR-API")
+ super().execute()
+ try:
+ self.service = Service(
+ service_instance_id=settings.SERVICE_ID,
+ service_status=settings.SERVICE_STATUS,
+ service_data=settings.SERVICE_DATA
+ )
+ self.service.create()
+ self._logger.info("SDNC service is created.")
+ except APIError:
+ raise OnapTestException("SDNC service creation failed.")
+
+ @BaseStep.store_state()
+ def cleanup(self) -> None:
+ """Cleanup Service."""
+ if self.service is not None:
+ self.service.delete()
+ self._logger.info("SDNC service is deleted.")
+ super().cleanup()
+
+
+class UpdateSdncService(BaseStep):
+ """Service update step.
+
+ The step needs in an existing SDNC service as a prerequisite.
+ """
+
+ def __init__(self, cleanup=False):
+ """Initialize step.
+
+ Sub steps:
+ - ServiceCreateStep.
+ """
+ super().__init__(cleanup=cleanup)
+ self.add_step(ServiceCreateStep(cleanup=cleanup))
+
+ @property
+ def description(self) -> str:
+ """Step description.
+
+ Used for reports
+
+ Returns:
+ str: Step description
+
+ """
+ return "Update SDNC service"
+
+ @property
+ def component(self) -> str:
+ """Component name.
+
+ Name of component which step is related with.
+ Most is the name of ONAP component.
+
+ Returns:
+ str: Component name
+
+ """
+ return "SDNC"
+
+ @BaseStep.store_state
+ def execute(self):
+ self._logger.info("Get existing SDNC service instance and update it over GR-API")
+ super().execute()
+ try:
+ service = Service.get(settings.SERVICE_ID)
+ service.service_status = settings.SERVICE_CHANGED_STATUS
+ service.service_data = settings.SERVICE_CHANGED_DATA
+ service.update()
+ self._logger.info("SDNC service update is checked.")
+ except APIError:
+ raise OnapTestException("SDNC service update is failed.")
diff --git a/src/onaptests/steps/reports_collection.py b/src/onaptests/steps/reports_collection.py
index 4b7f79b..0e5076f 100644
--- a/src/onaptests/steps/reports_collection.py
+++ b/src/onaptests/steps/reports_collection.py
@@ -1,5 +1,7 @@
from dataclasses import dataclass
from enum import Enum
+import json
+from pathlib import Path
from typing import List
from jinja2 import Environment, FileSystemLoader, select_autoescape
from onapsdk.configuration import settings
@@ -83,4 +85,20 @@ class ReportsCollection:
details=details,
components=components,
log_path="./pythonsdk.debug.log").dump(
- settings.REPORTING_FILE_PATH)
+ str(Path(settings.REPORTING_FILE_DIRECTORY).joinpath(settings.HTML_REPORTING_FILE_NAME)))
+
+ report_dict = {
+ 'usecase': usecase,
+ 'details': details,
+ 'components': components,
+ 'steps': [
+ {
+ 'description': step_report.step_description,
+ 'status': step_report.step_execution_status.value,
+ 'duration': step_report.step_execution_duration
+ }
+ for step_report in reversed(self.report)
+ ]
+ }
+ with (Path(settings.REPORTING_FILE_DIRECTORY).joinpath(settings.JSON_REPORTING_FILE_NAME)).open('w') as file:
+ json.dump(report_dict, file, indent=4) \ No newline at end of file