[PythonSDK-tests] Add basic_onboard testcase 84/121484/3
authorChereau Natacha <natacha.chereau@orange.com>
Wed, 13 Jan 2021 09:54:46 +0000 (10:54 +0100)
committerMorgan Richomme <morgan.richomme@orange.com>
Tue, 25 May 2021 12:38:58 +0000 (12:38 +0000)
Issue-ID: TEST-288

Signed-off-by: Chereau Natacha <natacha.chereau@orange.com>
Change-Id: Ide7267428b5ca694dc3ca44a4c81730233610b78
(cherry picked from commit ff24de49ef658ffe0aa13d494e8201bd181bce2c)

run_basic_onboard.py [new file with mode: 0644]
setup.cfg
src/onaptests/configuration/basic_onboard_settings.py [new file with mode: 0644]
src/onaptests/scenario/basic_onboard.py [new file with mode: 0644]
src/onaptests/templates/vnf-services/basic_onboard-service.yaml.j2 [new file with mode: 0644]

diff --git a/run_basic_onboard.py b/run_basic_onboard.py
new file mode 100644 (file)
index 0000000..835c661
--- /dev/null
@@ -0,0 +1,20 @@
+import logging.config
+import onaptests.utils.exceptions as onap_test_exceptions
+from onapsdk.configuration import settings
+from onaptests.steps.onboard.service import YamlTemplateServiceOnboardStep
+
+
+
+if __name__ == "__main__":
+    # logging configuration for onapsdk, it is not requested for onaptests
+    # Correction requested in onapsdk to avoid having this duplicate code
+    logging.config.dictConfig(settings.LOG_CONFIG)
+    logger = logging.getLogger("Basic Onboard")
+
+    basic_vm_onboard = YamlTemplateServiceOnboardStep(
+        cleanup=settings.CLEANUP_FLAG)
+    try:
+        basic_vm_onboard.execute()
+    except onap_test_exceptions.TestConfigurationException:
+        logger.error("Basic Onboard configuration error")
+    basic_vm_onboard.reports_collection.generate_report()
index 8ac68c4..1b4a751 100644 (file)
--- a/setup.cfg
+++ b/setup.cfg
@@ -49,3 +49,4 @@ xtesting.testcase =
   basic_cnf = onaptests.scenario.basic_cnf:BasicCnf
   basic_cds =  onaptests.scenario.cds_blueprint_enrichment:CDSBlueprintEnrichment
   clearwater_ims = onaptests.scenario.clearwater_ims:ClearwaterIms
+  basic_onboard = onaptests.scenario.basic_onboard:BasicOnboard
\ No newline at end of file
diff --git a/src/onaptests/configuration/basic_onboard_settings.py b/src/onaptests/configuration/basic_onboard_settings.py
new file mode 100644 (file)
index 0000000..db7680d
--- /dev/null
@@ -0,0 +1,68 @@
+
+import sys
+import random
+import string
+from yaml import load
+from jinja2 import Environment, PackageLoader
+import onaptests.utils.exceptions as onap_test_exceptions
+from .settings import * # pylint: disable=W0614
+
+""" Creation of service to onboard"""
+
+# We need to create a service file with a random service name,
+# to be sure that we force onboarding
+def generate_service_config_yaml_file():
+    """ generate the service file with a random service name
+     from a jinja template"""
+
+    env = Environment(
+        loader=PackageLoader('onaptests', 'templates/vnf-services'),
+    )
+    template = env.get_template('basic_onboard-service.yaml.j2')
+
+    # get a random string to randomize the vnf name
+    # Random string with the combination of lower and upper case
+    letters = string.ascii_letters
+    result_str = ''.join(random.choice(letters) for i in range(6))
+    service_name = 'basic_onboard_' + result_str
+
+    rendered_template = template.render(service_name=service_name)
+
+    file_name = (sys.path[-1] + "/onaptests/templates/vnf-services/" +
+                 "basic-onboard-service.yaml")
+
+    with open(file_name, 'w+') as file_to_write:
+        file_to_write.write(rendered_template)
+
+"""Basic onboard service to only onboard a service in SDC"""
+
+# pylint: disable=bad-whitespace
+# The ONAP part
+SERVICE_DETAILS="Onboarding of an Ubuntu VM"
+SERVICE_COMPONENTS="SDC"
+
+#USE_MULTICLOUD = False
+# Set ONLY_INSTANTIATE to true to run an instantiation without repeating
+# onboarding and related AAI configuration (Cloud config)
+#ONLY_INSTANTIATE= False
+
+# if a yaml file is define, retrieve info from this yaml files
+# if not declare the parameters in the settings
+generate_service_config_yaml_file()
+SERVICE_YAML_TEMPLATE = (sys.path[-1] + "/onaptests/templates/vnf-services/" +
+                         "basic-onboard-service.yaml")
+
+try:
+    # Try to retrieve the SERVICE NAME from the yaml file
+    with open(SERVICE_YAML_TEMPLATE, "r") as yaml_template:
+        yaml_config_file = load(yaml_template)
+        SERVICE_NAME = next(iter(yaml_config_file.keys()))
+except (FileNotFoundError, ValueError):
+    raise onap_test_exceptions.TestConfigurationException
+
+#CLEANUP_FLAG = True
+#CLEANUP_ACTIVITY_TIMER = 10  # nb of seconds before cleanup in case cleanup option is set
+VENDOR_NAME = "basic_onboard_vendor"
+
+VF_NAME = "basic_onboard_vf"
+VSP_NAME = "basic_onboard_vsp"
diff --git a/src/onaptests/scenario/basic_onboard.py b/src/onaptests/scenario/basic_onboard.py
new file mode 100644 (file)
index 0000000..3695975
--- /dev/null
@@ -0,0 +1,43 @@
+
+#!/usr/bin/env python
+"""Basic Onboard test case."""
+import logging
+import time
+from xtesting.core import testcase
+#from onapsdk.configuration import settings
+import onaptests.utils.exceptions as onap_test_exceptions
+#from onaptests.steps.onboard.service import YamlTemplateServiceOnboardStep
+
+class BasicOnboard(testcase.TestCase):
+    """Onboard a simple VM with ONAP."""
+
+    __logger = logging.getLogger(__name__)
+
+    def __init__(self, **kwargs):
+        """Init BasicOnboard."""
+        # import basic_onboard_settings needed
+        if "case_name" not in kwargs:
+            kwargs["case_name"] = 'basic_onboard'
+        super(BasicOnboard, self).__init__(**kwargs)
+        self.__logger.debug("BasicOnboard init started")
+        self.start_time = None
+        self.stop_time = None
+        self.result = 0
+
+    def run(self):
+        """Run basic_onboard and onboard a simple service"""
+        self.start_time = time.time()
+        self.__logger.debug("start time")
+        try:
+            self.test.execute()
+            self.__logger.info("VNF basic_vm successfully onboarded")
+        except onap_test_exceptions.OnapTestException as exc:
+            self.result = 0
+            self.__logger.error(exc.error_message)
+        finally:
+            self.stop_time = time.time()
+
+    def clean(self):
+        """Clean Additional resources if needed."""
+        self.__logger.info("Generate Test report")
+        self.test.reports_collection.generate_report()
diff --git a/src/onaptests/templates/vnf-services/basic_onboard-service.yaml.j2 b/src/onaptests/templates/vnf-services/basic_onboard-service.yaml.j2
new file mode 100644 (file)
index 0000000..c45745e
--- /dev/null
@@ -0,0 +1,39 @@
+---
+{{ service_name }}:
+    vnfs:
+        - vnf_name: {{ service_name }}
+          heat_files_to_upload: onaptests/templates/heat-files/ubuntu18/ubuntu18agent.zip
+          vnf_parameters: [
+              {"name": "ubuntu18_image_name",
+              "value": "ubuntu-agent"
+              },
+              {"name": "ubuntu18_key_name",
+              "value": "cleouverte"
+              },
+              {"name": "ubuntu18_pub_key",
+              "value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAA\
+BAQDY15cdBmIs2XOpe4EiFCsaY6bmUmK/GysMoLl4UG51JCfJwvwoWCoA+6mDIbymZxhxq9IGx\
+ilp/yTA6WQ9s/5pBag1cUMJmFuda9PjOkXl04jgqh5tR6I+GZ97AvCg93KAECis5ubSqw1xOCj4\
+utfEUtPoF1OuzqM/lE5mY4N6VKXn+fT7pCD6cifBEs6JHhVNvs5OLLp/tO8Pa3kKYQOdyS0xc3r\
+h+t2lrzvKUSWGZbX+dLiFiEpjsUL3tDqzkEMNUn4pdv69OJuzWHCxRWPfdrY9Wg0j3mJesP29EBh\
+t+w+EC9/kBKq+1VKdmsXUXAcjEvjovVL8l1BrX3BY0R8D imported-openssh-key"
+              },
+              {"name": "ubuntu18_flavor_name",
+              "value": "onap.small"
+              },
+              {"name": "VM_name",
+              "value": "ubuntu18agent-VM-01"
+              },
+              {"name": "vnf_id",
+              "value": "ubuntu18agent-VNF-instance"
+              },
+              {"name": "vf_module_id",
+              "value": "ubuntu18agent-vfmodule-instance"
+              },
+              {"name": "vnf_name",
+              "value": "ubuntu18agent-VNF"
+              },
+              {"name": "admin_plane_net_name",
+              "value": "admin"
+              }
+          ]