From ffb088b777bb6c10bd01b9a832e2439fb10c7994 Mon Sep 17 00:00:00 2001 From: "Lovett, Trevor" Date: Mon, 27 Apr 2020 13:40:06 -0500 Subject: Updating OPNFV Verified testing instructions Issue-ID: VNFRQTS-882 Signed-off-by: Lovett, Trevor Change-Id: I991f539dd3ff321021db3973f18b738aa2ce4117 --- docs/Chapter8/OPNFV-Verified-Badging.rst | 259 +------------------------------ etc/requirements.txt | 6 +- 2 files changed, 9 insertions(+), 256 deletions(-) diff --git a/docs/Chapter8/OPNFV-Verified-Badging.rst b/docs/Chapter8/OPNFV-Verified-Badging.rst index 946bc6b..9df4d2c 100644 --- a/docs/Chapter8/OPNFV-Verified-Badging.rst +++ b/docs/Chapter8/OPNFV-Verified-Badging.rst @@ -75,275 +75,28 @@ to the appropriate section based on your VNF. * :ref:`heat_vnf_validation` * :ref:`tosca_vnf_validation` - .. _heat_vnf_validation: Heat-based VNF Validation ~~~~~~~~~~~~~~~~~~~~~~~~~ -This section describes how to setup and execute the validation tests against -a VNF that is described using OpenStack Heat. - -Prerequisites -+++++++++++++ - -- ONAP El Alto Release deployed via :doc:`OOM <../../../../oom.git/docs/oom_quickstart_guide>` -- An OpenStack deployment is available and privisioned as ONAP's Cloud Site -- `kubectl `__ is - installed on the system used to start the testing -- bash -- VNF Heat Templates -- Preload JSON files - -After deploying ONAP, you need to configure ONAP with: - -- A cloud owner -- A cloud region -- A subscriber -- A service type -- A project name -- An owning entity -- A platform -- A line of business -- A cloud site - -If you're not familiar with how to configure ONAP, there are guides that use -:doc:`Robot <../../../../integration.git/docs/docs_robot>` or -`REST API calls `__ -to handle the setup (including adding a new OpenStack site to ONAP). - -Validation Setup -++++++++++++++++ - -On your local machine, or the system from which you will run the tests, you will need to clone the -ONAP OOM project repo: - -.. code-block:: bash - - git clone --branch 5.0.1-ONAP ssh://@gerrit.onap.org:29418/oom --recurse-submodules - -VNF Preparation -+++++++++++++++ - -The VNF lifecycle validation test suite requires the VNF to be packaged into a -specific directory hierarchy, shown below. - -.. code-block:: - - vnf_folder - ├── /templates - | └── base.yaml - | └── base.env - | └── incremental_0.yaml - | └── incremental_0.env - | └── ... - ├── /preloads - | └── base_preload.json - | └── incremental_0_preload.json - | └── ... - └── vnf-details.json - -- The name for ``vnf_folder`` is free-form, and can be located anywhere on your - computer. The path to this folder will be passed to the test suite as an - argument. -- ``/templates`` should contain your VVP-compliant VNF heat templates. -- ``/preloads`` should contain a preload file for each VNF module - - - For a VNF-API preload: ``vnf-name``, ``vnf-type``, ``generic-vnf-type``, - and ``generic-vnf-name`` should be empty strings. - - For a GR-API preload: ``vnf-name``, ``vnf-type``, ``vf-module-type``, - and ``vf-module-name`` should be empty strings. - - This information will be populated at runtime by the test suite. - -- ``vnf-details`` should be a JSON file with the information that will be used - by ONAP to instantiate the VNF. The structure of ``vnf-details`` is shown below. -- VNF disk image must be uploaded and available in the OpenStack project being - managed by ONAP -- ``modules`` must contain an entry for each module of the VNF. Only one module - can be a base module. -- ``api_type`` should match the format of the preloads (``vnf_api`` - or ``gr_api``) that are provided in the package. -- The other information should match what was used to configure ONAP during the - pre-requisite section of this guide. - -.. code-block:: json - - { - "vnf_name": "The Vnf Name", - "description": "Description of the VNF", - "modules": [ - { - "filename": "base.yaml", - "isBase": "true", - "preload": "base_preload.json" - }, - { - "filename": "incremental_0.yaml", - "isBase": "false", - "preload": "incremental_0.json" - }, - ], - "api_type": "[gr_api] or [vnf_api]", - "subscriber": "", - "service_type": "", - "tenant_name": "", - "region_id": "", - "cloud_owner": "", - "project_name": "", - "owning_entity": "", - "platform": "", - "line_of_business": "", - "os_password": "" - } - -Running the HEAT VNF Test -+++++++++++++++++++++++++ - -The ONAP OOM Robot framework will run the test, using ``kubectl`` to manage the -execution. The framework will copy your VNF template files to the Robot -container required to execute the test. - -.. code-block:: bash - - cd oom/kubernetes/robot - $ ./instantiate-k8s.sh --help - ./instantiate-k8s.sh [options] - - required: - -n, --namespace namespace that robot pod is running under. - -f, --folder path to folder containing heat templates, preloads, and vnf-details.json. - - additional options: - -p, --poll some cloud environments (like azure) have a short time out value when executing - kubectl. If your shell exits before the test suite finishes, using this option - will poll the test suite logs every 30 seconds until the test finishes. - -t, --tag robot testcase tag to execute (default is instantiate_vnf). - - This script executes the VNF instantiation robot test suite. - - It copies the VNF folder to the robot container that is part of the ONAP deployment. - - It models, distributes, and instantiates a heat-based VNF. - - It copies the logs to an output directory, and creates a tarball for upload to the OVP portal. - - -**Sample execution:** +Instructions +++++++++++++ -.. code-block:: bash - - $ ./instantiate-k8s.sh --namespace onap --folder /tmp/vnf-instantiation/examples/VNF_API/pass/multi_module/ --poll - ... - ... - ... - ... - ------------------------------------------------------------------------------ - test suites.Vnf Instantiation :: The main driver for instantiating ... | PASS | - 1 critical test, 1 passed, 0 failed - 1 test total, 1 passed, 0 failed - ============================================================================== - test suites | PASS | - 1 critical test, 1 passed, 0 failed - 1 test total, 1 passed, 0 failed - ============================================================================== - Output: /share/logs/0003_ete_instantiate_vnf/output.xml - + set +x - test suite has finished - Copying Results from pod... - /tmp/vnf-instantiation /tmp/vnf-instantiation - a log.html - a results.json - a stack_report.json - a validation-scripts.json - /tmp/vnf-instantiation - VNF test results: /tmp/vnfdata.46749/vnf_heat_results.tar.gz - -The test suite takes about 10-15 minutes for a simple VNF, and will take longer -for a more complicated VNF. +The instructions for setting up and running the validation scripts can be found +on the `VVP Test Engine GitHub site `__. Reporting Results +++++++++++++++++ -Once the test suite is finished, it will create a directory and tarball in -``/tmp`` (the name of the directory and file is shown at the end of the stdout -of the script). There will be a ``results.json`` file in that directory -that has the ultimate outcome of the test, in the structure shown below. - -**Log Files** - -The output tar file will have 4 log files in it. - -- ``results.json``: This is high-level results file of all of the test steps, - and is consumed by the OVP portal. -- ``report.json``: This is the output of the VVP validation scripts. -- ``stack_report.json``: This is the output from querying OpenStack to validate - the Heat modules. -- ``log.html``: This is the Robot test log, and contains each execution step of - the test case. - -If the result is ``"PASS"``, that means the test suite was successful and the -tarball is ready for submission to the OVP portal. - -**results.json** - -.. code-block:: json - - { - "vnf_checksum": "afc57604a3b3b7401d5b8648328807b594d7711355a2315095ac57db4c334a50", - "build_tag": "vnf-validation-7055d30b-9a2e-4ca2-9409-499131cc86db", - "version": "2019.12", - "test_date": "2019-09-04 17:50:10.575", - "duration": 437.002, - "vnf_type": "heat", - "testcases_list": [ - { - "mandatory": "true", - "name": "onap-vvp.validate.heat", - "result": "PASS", - "objective": "onap heat template validation", - "sub_testcase": [], - "portal_key_file": "report.json" - }, - { - "mandatory": "true", - "name": "onap-vvp.lifecycle_validate.heat", - "result": "PASS", - "objective": "onap vnf lifecycle validation", - "sub_testcase": [ - { - "name": "model-and-distribute", - "result": "PASS" - }, - { - "name": "instantiation", - "result": "PASS" - } - ], - "portal_key_file": "log.html" - }, - { - "mandatory": "true", - "name": "stack_validation", - "result": "PASS", - "objective": "onap vnf openstack validation", - "sub_testcase": [], - "portal_key_file": "stack_report.json" - } - ] - } - -Examples -++++++++ - -Example VNFs and setup files have been created as a starting point for your -validation. - -* :download:`Passing Single Volume VNF using VNF API ` -* :download:`Failing Single Volume VNF using VNF API ` +Once the test suite passes, the results tarball can be submitted to the +`OPNFV Verification Program VNF Portal `__. Additional Resources ++++++++++++++++++++ - `ONAP VVP Project `_ - .. _tosca_vnf_validation: TOSCA-based VNF Testing diff --git a/etc/requirements.txt b/etc/requirements.txt index 71b48f9..6a0049e 100644 --- a/etc/requirements.txt +++ b/etc/requirements.txt @@ -15,7 +15,7 @@ ############################################################################# tox -Sphinx==1.8.4 +Sphinx doc8 docutils docopt==0.6.2 @@ -24,7 +24,7 @@ six sphinx_rtd_theme>=0.4.3 sphinxcontrib-blockdiag sphinxcontrib-httpdomain -sphinxcontrib-needs==0.3.15 +sphinxcontrib-needs==0.5.4 sphinx_bootstrap_theme>=0.4.11 sphinxcontrib-nwdiag sphinxcontrib-seqdiag @@ -33,4 +33,4 @@ sphinxcontrib-plantuml xlwt==1.3.0 PyYAML>=3.10,<4 pytest -lfdocs-conf \ No newline at end of file +lfdocs-conf \ No newline at end of file -- cgit 1.2.3-korg