Merge "Remove get_repo_tag"
authorCedric Ollivier <cedric.ollivier@orange.com>
Mon, 11 Sep 2017 06:08:20 +0000 (06:08 +0000)
committerGerrit Code Review <gerrit@opnfv.org>
Mon, 11 Sep 2017 06:08:20 +0000 (06:08 +0000)
46 files changed:
build.sh
docker/Dockerfile
docker/core/Dockerfile
docker/features/Dockerfile
docker/features/testcases.yaml
docker/features/thirdparty-requirements.txt
docker/healthcheck/testcases.yaml
docker/parser/Dockerfile [new file with mode: 0644]
docker/parser/testcases.yaml [new file with mode: 0644]
docker/smoke/Dockerfile
docker/thirdparty-requirements.txt
docker/vnf/testcases.yaml
functest/api/resources/v1/envs.py
functest/api/resources/v1/tasks.py
functest/api/resources/v1/testcases.py
functest/api/resources/v1/tiers.py
functest/ci/config_aarch64_patch.yaml
functest/ci/config_functest.yaml
functest/ci/download_images.sh
functest/ci/testcases.yaml
functest/core/vnf.py
functest/opnfv_tests/openstack/rally/blacklist.txt
functest/opnfv_tests/openstack/rally/rally.py
functest/opnfv_tests/openstack/refstack_client/refstack_client.py
functest/opnfv_tests/openstack/snaps/snaps_utils.py
functest/opnfv_tests/openstack/tempest/conf_utils.py
functest/opnfv_tests/openstack/tempest/tempest.py
functest/opnfv_tests/sdn/odl/odl.py
functest/opnfv_tests/vnf/ims/cloudify_ims.py
functest/opnfv_tests/vnf/ims/cloudify_ims.yaml
functest/opnfv_tests/vnf/ims/orchestra_clearwaterims.py
functest/opnfv_tests/vnf/ims/orchestra_openims.py
functest/opnfv_tests/vnf/router/cloudify_vrouter.py
functest/tests/unit/core/test_vnf.py
functest/tests/unit/odl/test_odl.py
functest/tests/unit/openstack/refstack_client/test_refstack_client.py
functest/tests/unit/openstack/tempest/test_conf_utils.py
functest/tests/unit/openstack/tempest/test_tempest.py
functest/tests/unit/vnf/ims/test_cloudify_ims.py
functest/tests/unit/vnf/ims/test_orchestra_clearwaterims.py
functest/tests/unit/vnf/ims/test_orchestra_openims.py
functest/tests/unit/vnf/router/test_cloudify_vrouter.py
functest/utils/functest_utils.py
functest/utils/openstack_utils.py
requirements.txt
upper-constraints.txt

index 95bea6f..36f1d55 100644 (file)
--- a/build.sh
+++ b/build.sh
@@ -9,7 +9,8 @@ docker/healthcheck \
 docker/smoke \
 docker/features \
 docker/components \
-docker/vnf"
+docker/vnf \
+docker/parser"
 
 (cd docker && docker build -t "${repo}/functest" .)
 docker push "${repo}/functest"
index 66bd31a..6e5161c 100644 (file)
@@ -14,9 +14,10 @@ LABEL version="0.1" description="OPNFV Functest Docker container"
 # Environment variables
 ARG BRANCH=master
 ARG RALLY_TAG=stable/0.9
-ARG ODL_TAG=release/carbon
+ARG ODL_TAG=35e415b6873b39d72775c88a337e92dac26012e2
 ARG OPENSTACK_TAG=stable/ocata
 ARG VIMS_TAG=stable
+ARG REFSTACK_TAG=4e187b07672dd1c41cb7c94658f1c91edebf53a2
 ARG REPOS_DIR=/home/opnfv/repos
 ARG FUNCTEST_BASE_DIR=/home/opnfv/functest
 ARG FUNCTEST_CONF_DIR=${FUNCTEST_BASE_DIR}/conf
@@ -50,6 +51,7 @@ libzmq3-dev \
 python-dev \
 python-mock \
 python-pip \
+python3 \
 postgresql \
 ruby \
 ruby-dev \
@@ -75,26 +77,32 @@ COPY thirdparty-requirements.txt thirdparty-requirements.txt
 RUN wget -q -O- https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG | \
         sed -E s/^tempest==+\(.*\)$/-e\ git+https:\\/\\/github.com\\/openstack\\/tempest@\\1#egg=tempest/ \
         > upper-constraints.txt && \
+    pip install --src /src -cupper-constraints.txt \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        -e git+https://github.com/openstack/requirements@stable/ocata#egg=openstack_requirements && \
+    git clone --depth 1 https://github.com/openstack/rally.git -b $RALLY_TAG /src/rally && \
+    update-requirements -s --source /src/openstack-requirements /src/rally && \
+    git clone --depth 1 https://github.com/openstack/refstack-client.git /src/refstack-client && \
+    (cd src/refstack-client && git checkout -b $REFSTACK_TAG) && \
+    update-requirements -s --source /src/openstack-requirements /src/refstack-client && \
+    pip install --src /src -cupper-constraints.txt \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        /src/rally -e/src/refstack-client && \
     pip install --src /src -cupper-constraints.txt \
         -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
         git+https://gerrit.opnfv.org/gerrit/functest@$BRANCH#egg=functest \
         -rthirdparty-requirements.txt && \
-    git clone --depth 1 https://github.com/openstack/rally.git -b $RALLY_TAG /src/rally && \
-    update-requirements -s --source /src/openstack-requirements /src/rally/ && \
-    pip install --no-cache-dir --src /src -cupper-constraints.txt \
-        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH /src/rally/ && \
     mkdir -p /etc/rally && \
     printf "[database]\nconnection = 'sqlite:////var/lib/rally/database/rally.sqlite'" > /etc/rally/rally.conf && \
     mkdir -p /var/lib/rally/database && rally-manage db create && \
     rm thirdparty-requirements.txt upper-constraints.txt
 
 # OPNFV repositories
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/domino /src/domino
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/doctor ${REPOS_DIR}/doctor
 RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/fds /src/fds
 
 # other repositories
-RUN git clone --depth 1 -b $ODL_TAG https://git.opendaylight.org/gerrit/p/integration/test.git /src/odl_test
+RUN git clone --depth 1 https://git.opendaylight.org/gerrit/p/integration/test.git /src/odl_test && \
+        (cd src/odl_test && git checkout -b $ODL_TAG)
 RUN git clone --depth 1 -b $VIMS_TAG https://github.com/boucherv-orange/clearwater-live-test /src/vims-test
 
 # Install tempest venv and create symlink for running refstack-client
@@ -109,3 +117,5 @@ RUN sh -c 'curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -' \
     && cd /src/promise/source && npm install
 
 RUN echo ". ${FUNCTEST_DIR}/cli/functest-complete.sh" >> /root/.bashrc
+
+CMD ["functest_restapi"]
index 6611709..c5766da 100644 (file)
@@ -15,11 +15,14 @@ RUN apk --no-cache add --update \
         > upper-constraints.txt && \
     pip install --no-cache-dir --src /src -cupper-constraints.txt \
         -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
-        git+https://gerrit.opnfv.org/gerrit/functest@$BRANCH#egg=functest && \
+        -e git+https://github.com/openstack/requirements@stable/ocata#egg=openstack_requirements && \
     git clone --depth 1 https://github.com/openstack/rally.git -b $RALLY_TAG /src/rally && \
     update-requirements -s --source /src/openstack-requirements /src/rally/ && \
     pip install --no-cache-dir --src /src -cupper-constraints.txt \
-        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH /src/rally/ && \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH /src/rally && \
+    pip install --no-cache-dir --src /src -cupper-constraints.txt \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        git+https://gerrit.opnfv.org/gerrit/functest@$BRANCH#egg=functest && \
     rm -r upper-constraints.txt /src/rally/.git && \
     mkdir -p /etc/rally && \
     printf "[database]\nconnection = 'sqlite:////var/lib/rally/database/rally.sqlite'" > /etc/rally/rally.conf && \
index 54bffe8..c3b1b04 100644 (file)
@@ -4,7 +4,7 @@ ARG BRANCH=master
 ARG OPENSTACK_TAG=stable/ocata
 
 COPY thirdparty-requirements.txt thirdparty-requirements.txt
-RUN apk --no-cache add --update nodejs nodejs-npm && \
+RUN apk --no-cache add --update nodejs nodejs-npm python3 && \
     apk --no-cache add --virtual .build-deps --update \
         python-dev build-base linux-headers libffi-dev \
         openssl-dev libjpeg-turbo-dev git && \
@@ -14,8 +14,7 @@ RUN apk --no-cache add --update nodejs nodejs-npm && \
         -rthirdparty-requirements.txt && \
     npm -g install npm@latest && \
     (cd /src/promise/source && npm install) && \
-    git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/domino /src/domino && \
-    rm -r thirdparty-requirements.txt /src/domino/.git && \
+    rm -r thirdparty-requirements.txt && \
     apk del .build-deps
 COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
 CMD ["bash","-c","prepare_env start && run_tests -t all"]
index ec9962f..273a20e 100644 (file)
@@ -23,6 +23,23 @@ tiers:
                     args:
                         cmd: 'run_promise_tests.py'
 
+            -
+                case_name: doctor-notification
+                enabled: false
+                project_name: doctor
+                criteria: 100
+                blocking: false
+                description: >-
+                    Test suite from Doctor project.
+                dependencies:
+                    installer: '(apex)|(fuel)'
+                    scenario: '^((?!fdio).)*$'
+                run:
+                    module: 'functest.core.feature'
+                    class: 'BashFeature'
+                    args:
+                        cmd: '(cd /src/doctor-test/tests && run.sh)'
+
             -
                 case_name: bgpvpn
                 project_name: sdnvpn
@@ -88,7 +105,7 @@ tiers:
                     module: 'functest.core.feature'
                     class: 'BashFeature'
                     args:
-                        cmd: 'cd /src/domino && ./tests/run_multinode.sh'
+                        cmd: 'run_multinode.sh'
 
             -
                 case_name: barometercollectd
index e43c7c7..9e40db7 100644 (file)
@@ -37,7 +37,7 @@ tiers:
                     snaps.use_keystone is True, functest must have access to
                     the cloud's private network.
                 dependencies:
-                    installer: '^((?!netvirt).)*$'
+                    installer: '^((?!netvirt|lxd).)*$'
                     scenario: ''
                 run:
                     module: 'functest.opnfv_tests.openstack.snaps.api_check'
diff --git a/docker/parser/Dockerfile b/docker/parser/Dockerfile
new file mode 100644 (file)
index 0000000..e0dc0d5
--- /dev/null
@@ -0,0 +1,38 @@
+FROM alpine:3.6
+
+ARG BRANCH=master
+ARG OPENSTACK_TAG=stable/pike
+ARG RALLY_TAG=stable/0.9
+
+RUN apk --no-cache add --update \
+        python libffi libssl1.0 libjpeg-turbo py-pip bash \
+        grep sed wget ca-certificates git openssh-client && \
+    apk --no-cache add --virtual .build-deps --update \
+        python-dev build-base linux-headers libffi-dev \
+        openssl-dev libjpeg-turbo-dev && \
+    wget -q -O- https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG | \
+        sed /^heat-translator=/d | sed /^tosca-parser=/d \
+        > upper-constraints.txt && \
+    pip install --src /src -cupper-constraints.txt \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        -e git+https://github.com/openstack/requirements@stable/ocata#egg=openstack_requirements && \
+    git clone --depth 1 https://github.com/openstack/rally.git -b $RALLY_TAG /src/rally && \
+    update-requirements -s --source /src/openstack-requirements /src/rally && \
+    pip install --src /src -cupper-constraints.txt \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        /src/rally && \
+    pip install --no-cache-dir --src /src \
+        -cupper-constraints.txt \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        git+https://gerrit.opnfv.org/gerrit/functest@$BRANCH#egg=functest \
+        git+https://gerrit.opnfv.org/gerrit/parser#egg=heat-translator\&subdirectory=tosca2heat/heat-translator \
+        git+https://gerrit.opnfv.org/gerrit/parser#egg=nfv-toscaparser\&subdirectory=tosca2heat/tosca-parser \
+        -e git+https://gerrit.opnfv.org/gerrit/parser#egg=nfv-parser && \
+    rm -r upper-constraints.txt /src/rally/.git && \
+    mkdir -p /etc/rally && \
+    printf "[database]\nconnection = 'sqlite:////var/lib/rally/database/rally.sqlite'" > /etc/rally/rally.conf && \
+    mkdir -p /var/lib/rally/database && rally-manage db create && \
+    bash -c "mkdir -p /home/opnfv/functest{/conf,/data,/images,/results} /home/opnfv/repos/vnfs" && \
+    apk del .build-deps
+COPY testcases.yaml /usr/lib/python2.7/site-packages/functest/ci/testcases.yaml
+CMD ["bash","-c","prepare_env start && run_tests -t all"]
diff --git a/docker/parser/testcases.yaml b/docker/parser/testcases.yaml
new file mode 100644 (file)
index 0000000..4ab3fae
--- /dev/null
@@ -0,0 +1,25 @@
+tiers:
+    -
+        name: features
+        order: 2
+        ci_loop: '(daily)|(weekly)'
+        description : >-
+            Test suites from feature projects
+            integrated in functest
+        testcases:
+            -
+                case_name: parser-basics
+                enabled: false
+                project_name: parser
+                criteria: 100
+                blocking: false
+                description: >-
+                    Test suite from Parser project.
+                dependencies:
+                    installer: 'fuel'
+                    scenario: '^((?!bgpvpn|noha).)*$'
+                run:
+                    module: 'functest.core.feature'
+                    class: 'BashFeature'
+                    args:
+                        cmd: 'cd /src/nfv-parser/tests && ./functest_run.sh'
index 1038547..abf1714 100644 (file)
@@ -2,18 +2,28 @@ FROM opnfv/functest-core
 
 ARG BRANCH=master
 ARG OPENSTACK_TAG=stable/ocata
-ARG ODL_TAG=release/carbon
+ARG ODL_TAG=35e415b6873b39d72775c88a337e92dac26012e2
+ARG FDS_TAG=master
+ARG REFSTACK_TAG=4e187b07672dd1c41cb7c94658f1c91edebf53a2
 
 COPY thirdparty-requirements.txt thirdparty-requirements.txt
 RUN apk --no-cache add --virtual .build-deps --update \
         python-dev build-base linux-headers libffi-dev \
         openssl-dev libjpeg-turbo-dev git && \
+    git clone --depth 1 https://github.com/openstack/refstack-client.git /src/refstack-client && \
+    (cd src/refstack-client && git checkout -b $REFSTACK_TAG) && \
+    update-requirements -s --source /src/openstack-requirements /src/refstack-client/ && \
+    pip install --no-cache-dir --src /src \
+        -chttps://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG \
+        -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
+        -e/src/refstack-client && \
     pip install --no-cache-dir --src /src \
         -chttps://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt?h=$OPENSTACK_TAG \
         -chttps://git.opnfv.org/functest/plain/upper-constraints.txt?h=$BRANCH \
         -rthirdparty-requirements.txt && \
-    git clone --depth 1 -b $ODL_TAG https://git.opendaylight.org/gerrit/p/integration/test.git /src/odl_test && \
-    git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/fds /src/fds && \
+    git clone --depth 1 https://git.opendaylight.org/gerrit/p/integration/test.git /src/odl_test && \
+    (cd src/odl_test && git checkout -b $ODL_TAG) && \
+    git clone --depth 1 -b $FDS_TAG https://gerrit.opnfv.org/gerrit/fds /src/fds && \
     ln -s /src/tempest /src/refstack-client/.tempest && \
     virtualenv --system-site-packages /src/tempest/.venv && \
     rm -r thirdparty-requirements.txt /src/refstack-client/.git /src/odl_test/.git \
index 773af75..cc8f5f9 100644 (file)
@@ -3,6 +3,8 @@ sdnvpn
 securityscanning
 sfc
 promise
+doctor-test
 tosca-parser>=0.7.0 # Apache-2.0
 heat-translator>=0.4.0 # Apache-2.0
 refstack-client
+domino
index c0eba82..dea4a1e 100644 (file)
@@ -23,6 +23,7 @@ tiers:
             -
                 case_name: orchestra_openims
                 project_name: functest
+                enabled: false
                 criteria: 100
                 blocking: false
                 description: >-
@@ -37,6 +38,7 @@ tiers:
             -
                 case_name: orchestra_clearwaterims
                 project_name: functest
+                enabled: false
                 criteria: 100
                 blocking: false
                 description: >-
index fb76fa6..8020544 100644 (file)
@@ -33,10 +33,11 @@ class V1Envs(ApiResource):
 
     def prepare(self, args):  # pylint: disable=no-self-use, unused-argument
         """ Prepare environment """
-        try:
-            ft_utils.execute_command("prepare_env start")
-        except Exception as err:  # pylint: disable=broad-except
-            return api_utils.result_handler(status=1, data=str(err))
+
+        result_env = ft_utils.execute_command("prepare_env start")
+        if not result_env == 0:
+            return api_utils.result_handler(
+                status=1, data="Failed to prepare env")
         return api_utils.result_handler(
             status=0, data="Prepare env successfully")
 
index e05db51..f099918 100644 (file)
@@ -50,12 +50,15 @@ class V1Task(ApiResource):
         if status not in ['IN PROGRESS', 'FAIL', 'FINISHED']:
             return api_utils.result_handler(status=1,
                                             data='internal server error')
+
+        switcher = {'IN PROGRESS': 0, 'FAIL': 1, 'FINISHED': 2}
         if status == 'IN PROGRESS':
-            result = {'status': status, 'result': ''}
+            result = {'status': switcher.get(status), 'result': ''}
         elif status == 'FAIL':
-            result = {'status': status, 'error': task.error}
+            result = {'status': switcher.get(status), 'error': task.error}
         else:
-            result = {'status': status, 'result': json.loads(task.result)}
+            result = {'status': switcher.get(status),
+                      'result': json.loads(task.result)}
 
         return jsonify(result)
 
@@ -92,4 +95,7 @@ class V1TaskLog(ApiResource):
 
         return_data = {'data': data}
 
-        return api_utils.result_handler(status=task.status, data=return_data)
+        switcher = {'IN PROGRESS': 0, 'FAIL': 1, 'FINISHED': 2}
+
+        return api_utils.result_handler(status=switcher.get(task.status),
+                                        data=return_data)
index d708cf3..cc2d4e1 100644 (file)
@@ -17,7 +17,7 @@ import pkg_resources
 import uuid
 
 import ConfigParser
-from flask import abort, jsonify
+from flask import jsonify
 
 from functest.api.base import ApiResource
 from functest.api.common import api_utils, thread
@@ -46,8 +46,11 @@ class V1Testcase(ApiResource):
         """ GET the info of one testcase"""
         testcase = Testcase().show(testcase_name)
         if not testcase:
-            abort(404, "The test case '%s' does not exist or is not supported"
-                  % testcase_name)
+            return api_utils.result_handler(
+                status=1,
+                data="The test case '%s' does not exist or is not supported"
+                % testcase_name)
+
         testcase_info = api_utils.change_obj_to_dict(testcase)
         dependency_dict = api_utils.change_obj_to_dict(
             testcase_info.get('dependency'))
@@ -70,6 +73,13 @@ class V1Testcase(ApiResource):
             return api_utils.result_handler(
                 status=1, data='testcase name must be provided')
 
+        testcase = Testcase().show(case_name)
+        if not testcase:
+            return api_utils.result_handler(
+                status=1,
+                data="The test case '%s' does not exist or is not supported"
+                % case_name)
+
         task_id = str(uuid.uuid4())
 
         task_args = {'testcase': case_name, 'task_id': task_id}
@@ -79,8 +89,8 @@ class V1Testcase(ApiResource):
         task_thread = thread.TaskThread(self._run, task_args, TasksHandler())
         task_thread.start()
 
-        results = {'testcase': case_name, 'task_id': task_id}
-        return jsonify(results)
+        result = {'testcase': case_name, 'task_id': task_id}
+        return jsonify({'result': result})
 
     def _run(self, args):  # pylint: disable=no-self-use
         """ The built_in function to run a test case """
@@ -110,7 +120,7 @@ class V1Testcase(ApiResource):
             }
             result = {
                 'task_id': args.get('task_id'),
-                'case_name': case_name,
+                'testcase': case_name,
                 'env_info': env_info,
                 'result': result
             }
index 71a98be..4f4849e 100644 (file)
@@ -13,9 +13,10 @@ Resources to handle tier related requests
 
 import re
 
-from flask import abort, jsonify
+from flask import jsonify
 
 from functest.api.base import ApiResource
+from functest.api.common import api_utils
 from functest.cli.commands.cli_tier import Tier
 
 
@@ -46,7 +47,9 @@ class V1Tier(ApiResource):
         """ GET the info of one tier """
         testcases = Tier().gettests(tier_name)
         if not testcases:
-            abort(404, "The tier with name '%s' does not exist." % tier_name)
+            return api_utils.result_handler(
+                status=1,
+                data="The tier with name '%s' does not exist." % tier_name)
         tier_info = Tier().show(tier_name)
         tier_info.__dict__.pop('name')
         tier_info.__dict__.pop('tests_array')
@@ -62,6 +65,8 @@ class V1TestcasesinTier(ApiResource):
         """ GET all testcases within given tier """
         testcases = Tier().gettests(tier_name)
         if not testcases:
-            abort(404, "The tier with name '%s' does not exist." % tier_name)
+            return api_utils.result_handler(
+                status=1,
+                data="The tier with name '%s' does not exist." % tier_name)
         result = {'tier': tier_name, 'testcases': testcases}
         return jsonify(result)
index 6b3699b..c66d3cd 100644 (file)
@@ -4,6 +4,10 @@ os:
             image_name: TestVM
             image_file_name:  cirros-d161201-aarch64-disk.img
             image_password:  gocubsgo
+            extra_properties:
+              hw_firmware_type: 'uefi'
+              hw_video_model: 'vga'
+              short_id: 'ubuntu16.04'
     snaps:
         images:
           glance_tests:
@@ -30,7 +34,8 @@ os:
         image_name: TestVM
 
     tempest:
-        use_custom_images: False
+        use_custom_images: True
+        use_custom_flavors: True
 
     odl_sfc:
         image_base_url: "http://artifacts.opnfv.org/sfc/demo"
index 5ff5c82..cfcc728 100644 (file)
@@ -7,7 +7,6 @@ general:
         dir_repo_releng:    /home/opnfv/repos/releng
         repo_vims_test:     /src/vims-test
         repo_barometer:     /home/opnfv/repos/barometer
-        repo_doctor:        /home/opnfv/repos/doctor
         repo_odl_test:      /src/odl_test
         repo_fds:           /src/fds
         repo_securityscan:  /home/opnfv/repos/securityscanning
index 367ad8d..236b763 100644 (file)
@@ -10,7 +10,6 @@ https://cloud-images.ubuntu.com/releases/14.04/release/ubuntu-14.04-server-cloud
 https://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2
 https://cloud-images.ubuntu.com/releases/16.04/release/ubuntu-16.04-server-cloudimg-amd64-disk1.img
 http://repository.cloudifysource.org/cloudify/4.0.1/sp-release/cloudify-manager-premium-4.0.1.qcow2
-http://marketplace.openbaton.org:8082/api/v1/images/52e2ccc0-1dce-4663-894d-28aab49323aa/img
 http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img
 http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-lxc.tar.gz
 http://download.cirros-cloud.net/daily/20161201/cirros-d161201-aarch64-disk.img
index 5364035..191786c 100644 (file)
@@ -37,7 +37,7 @@ tiers:
                     snaps.use_keystone is True, functest must have access to
                     the cloud's private network.
                 dependencies:
-                    installer: '^((?!netvirt).)*$'
+                    installer: '^((?!netvirt|lxd).)*$'
                     scenario: ''
                 run:
                     module: 'functest.opnfv_tests.openstack.snaps.api_check'
@@ -266,7 +266,7 @@ tiers:
                     module: 'functest.core.feature'
                     class: 'BashFeature'
                     args:
-                        cmd: 'cd /home/opnfv/repos/doctor/tests && ./run.sh'
+                        cmd: '(cd /src/doctor-test/tests && run.sh)'
 
             -
                 case_name: bgpvpn
@@ -350,7 +350,7 @@ tiers:
                     module: 'functest.core.feature'
                     class: 'BashFeature'
                     args:
-                        cmd: 'cd /src/domino && ./tests/run_multinode.sh'
+                        cmd: 'run_multinode.sh'
 
             -
                 case_name: barometercollectd
@@ -449,6 +449,7 @@ tiers:
             -
                 case_name: orchestra_openims
                 project_name: functest
+                enabled: false
                 criteria: 100
                 blocking: false
                 description: >-
@@ -463,6 +464,7 @@ tiers:
             -
                 case_name: orchestra_clearwaterims
                 project_name: functest
+                enabled: false
                 criteria: 100
                 blocking: false
                 description: >-
index a329212..517838a 100644 (file)
@@ -14,7 +14,9 @@ import time
 
 import functest.core.testcase as base
 from functest.utils.constants import CONST
-import functest.utils.openstack_utils as os_utils
+from snaps.openstack.create_user import UserSettings, OpenStackUser
+from snaps.openstack.create_project import ProjectSettings, OpenStackProject
+from snaps.openstack.tests import openstack_tests
 
 __author__ = ("Morgan Richomme <morgan.richomme@orange.com>, "
               "Valentin Boucher <valentin.boucher@orange.com>")
@@ -43,10 +45,11 @@ class VnfOnBoarding(base.TestCase):
 
     def __init__(self, **kwargs):
         super(VnfOnBoarding, self).__init__(**kwargs)
-        self.exist_obj = {'tenant': False, 'user': False}
         self.tenant_name = CONST.__getattribute__(
             'vnf_{}_tenant_name'.format(self.case_name))
-        self.creds = {}
+        self.snaps_creds = {}
+        self.created_object = []
+        self.os_project = None
 
     def run(self, **kwargs):
         """
@@ -100,20 +103,31 @@ class VnfOnBoarding(base.TestCase):
                 'vnf_{}_tenant_description'.format(self.case_name))
             self.__logger.info("Prepare VNF: %s, description: %s",
                                self.tenant_name, tenant_description)
-            keystone_client = os_utils.get_keystone_client()
-            self.exist_obj['tenant'] = (
-                not os_utils.get_or_create_tenant_for_vnf(
-                    keystone_client,
-                    self.tenant_name,
-                    tenant_description))
-            self.exist_obj['user'] = not os_utils.get_or_create_user_for_vnf(
-                keystone_client, self.tenant_name)
-            self.creds = {
-                "tenant": self.tenant_name,
-                "username": self.tenant_name,
-                "password": self.tenant_name,
-                "auth_url": os_utils.get_credentials()['auth_url']
-                }
+            snaps_creds = openstack_tests.get_credentials(
+                os_env_file=CONST.__getattribute__('openstack_creds'))
+
+            project_creator = OpenStackProject(
+                snaps_creds,
+                ProjectSettings(
+                    name=self.tenant_name,
+                    description=tenant_description
+                ))
+            project_creator.create()
+            self.created_object.append(project_creator)
+            self.os_project = project_creator
+
+            user_creator = OpenStackUser(
+                snaps_creds,
+                UserSettings(
+                    name=self.tenant_name,
+                    password=self.tenant_name,
+                    roles={'admin': self.tenant_name}))
+
+            user_creator.create()
+            self.created_object.append(user_creator)
+
+            self.snaps_creds = user_creator.get_os_creds(self.tenant_name)
+
             return base.TestCase.EX_OK
         except Exception:  # pylint: disable=broad-except
             self.__logger.exception("Exception raised during VNF preparation")
@@ -185,8 +199,9 @@ class VnfOnBoarding(base.TestCase):
             * the tenant
         """
         self.__logger.info("test cleaning")
-        keystone_client = os_utils.get_keystone_client()
-        if not self.exist_obj['tenant']:
-            os_utils.delete_tenant(keystone_client, self.tenant_name)
-        if not self.exist_obj['user']:
-            os_utils.delete_user(keystone_client, self.tenant_name)
+        self.__logger.info('Remove the cloudify manager OS object ..')
+        for creator in reversed(self.created_object):
+            try:
+                creator.clean()
+            except Exception as exc:  # pylint: disable=broad-except
+                self.__logger.error('Unexpected error cleaning - %s', exc)
index 0623368..cdb5be6 100644 (file)
@@ -48,6 +48,7 @@ scenario:
             # panko in the deployment. This is not currently fulfilled
             # Ref: https://docs.openstack.org/releasenotes/ceilometer/ocata.html
             - 'CeilometerEvents..*'
+            - 'CeilometerTraits..*'
 
 functionality:
     -
index fdef8be..2042b2d 100644 (file)
@@ -42,6 +42,10 @@ class RallyBase(testcase.OSGCTestCase):
         CONST.__getattribute__('dir_functest_images'),
         GLANCE_IMAGE_FILENAME)
     GLANCE_IMAGE_FORMAT = CONST.__getattribute__('openstack_image_disk_format')
+    GLANCE_IMAGE_EXTRA_PROPERTIES = {}
+    if hasattr(CONST, 'openstack_extra_properties'):
+        GLANCE_IMAGE_EXTRA_PROPERTIES = CONST.__getattribute__(
+            'openstack_extra_properties')
     FLAVOR_NAME = "m1.tiny"
 
     RALLY_DIR = pkg_resources.resource_filename(
@@ -462,7 +466,8 @@ class RallyBase(testcase.OSGCTestCase):
         self.image_exists, self.image_id = os_utils.get_or_create_image(
             self.GLANCE_IMAGE_NAME,
             self.GLANCE_IMAGE_PATH,
-            self.GLANCE_IMAGE_FORMAT)
+            self.GLANCE_IMAGE_FORMAT,
+            self.GLANCE_IMAGE_EXTRA_PROPERTIES)
         if self.image_id is None:
             raise Exception("Failed to get or create image '%s'" %
                             self.GLANCE_IMAGE_NAME)
index 17e0246..42befe2 100644 (file)
@@ -1,6 +1,7 @@
 #!/usr/bin/env python
+
 # Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
-# matthew.lijun@huawei.com wangwulin@huawei.com
+#
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
@@ -10,7 +11,6 @@
 
 from __future__ import division
 
-
 import argparse
 import logging
 import os
@@ -28,7 +28,9 @@ from functest.opnfv_tests.openstack.refstack_client.tempest_conf \
 from functest.opnfv_tests.openstack.tempest import conf_utils
 from functest.utils.constants import CONST
 import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
+
+__author__ = ("Matthew Li <matthew.lijun@huawei.com>,"
+              "Linda Wang <wangwulin@huawei.com>")
 
 # logging configuration """
 LOGGER = logging.getLogger(__name__)
@@ -77,7 +79,7 @@ class RefstackClient(testcase.TestCase):
         """Run default defcore sys command."""
         options = ["-v"] if not self.insecure else ["-v", self.insecure]
         cmd = (["refstack-client", "test", "-c", self.confpath] +
-               options + ["--test-list",  self.defcorelist])
+               options + ["--test-list", self.defcorelist])
         LOGGER.info("Starting Refstack_defcore test case: '%s'.", cmd)
 
         with open(os.path.join(conf_utils.REFSTACK_RESULTS_DIR,
@@ -211,45 +213,6 @@ class RefstackClient(testcase.TestCase):
 
         return res
 
-    def create_snapshot(self):
-        """
-        Run the Tempest cleanup utility to initialize OS state.
-        For details, see https://docs.openstack.org/tempest/latest/cleanup.html
-
-        :return: TestCase.EX_OK
-        """
-        LOGGER.info("Initializing the saved state of the OpenStack deployment")
-
-        # Make sure that Tempest is configured
-        if not self.tempestconf:
-            self.generate_conf()
-
-        try:
-            os_utils.init_tempest_cleanup(
-                self.tempestconf.DEPLOYMENT_DIR, 'tempest.conf',
-                os.path.join(conf_utils.REFSTACK_RESULTS_DIR,
-                             "tempest-cleanup-init.log"))
-        except Exception as err:
-            LOGGER.error(str(err))
-            return testcase.TestCase.EX_RUN_ERROR
-
-        return super(RefstackClient, self).create_snapshot()
-
-    def clean(self):
-        """
-        Run the Tempest cleanup utility to delete and destroy OS resources.
-        For details, see https://docs.openstack.org/tempest/latest/cleanup.html
-        """
-        LOGGER.info("Destroying the resources created for tempest")
-
-        os_utils.perform_tempest_cleanup(
-            self.tempestconf.DEPLOYMENT_DIR, 'tempest.conf',
-            os.path.join(conf_utils.REFSTACK_RESULTS_DIR,
-                         "tempest-cleanup.log")
-        )
-
-        return super(RefstackClient, self).clean()
-
 
 class RefstackClientParser(object):  # pylint: disable=too-few-public-methods
     """Command line argument parser helper."""
index 309f9db..956b104 100644 (file)
@@ -5,7 +5,7 @@
 #
 # http://www.apache.org/licenses/LICENSE-2.0
 
-from snaps.openstack.utils import neutron_utils
+from snaps.openstack.utils import neutron_utils, nova_utils
 
 
 def get_ext_net_name(os_creds):
@@ -17,3 +17,14 @@ def get_ext_net_name(os_creds):
     neutron = neutron_utils.neutron_client(os_creds)
     ext_nets = neutron_utils.get_external_networks(neutron)
     return ext_nets[0].name
+
+
+def get_active_compute_cnt(os_creds):
+    """
+    Returns the number of active compute servers
+    :param: os_creds: an instance of snaps OSCreds object
+    :return: the number of active compute servers
+    """
+    nova = nova_utils.nova_client(os_creds)
+    computes = nova_utils.get_availability_zone_hosts(nova, zone_name='nova')
+    return len(computes)
index 2cdc2cf..4202df6 100644 (file)
@@ -119,18 +119,21 @@ def backup_tempest_config(conf_file):
     """
     Copy config file to tempest results directory
     """
+    if not os.path.exists(TEMPEST_RESULTS_DIR):
+        os.makedirs(TEMPEST_RESULTS_DIR)
     shutil.copyfile(conf_file,
                     os.path.join(TEMPEST_RESULTS_DIR, 'tempest.conf'))
 
 
 def configure_tempest(deployment_dir, image_id=None, flavor_id=None,
-                      mode=None):
+                      compute_cnt=None):
     """
     Calls rally verify and updates the generated tempest.conf with
     given parameters
     """
     conf_file = configure_verifier(deployment_dir)
-    configure_tempest_update_params(conf_file, image_id, flavor_id)
+    configure_tempest_update_params(conf_file, image_id, flavor_id,
+                                    compute_cnt)
 
 
 def configure_tempest_defcore(deployment_dir, image_id, flavor_id,
@@ -186,8 +189,8 @@ def generate_test_accounts_file(tenant_id):
         yaml.dump(accounts_list, f, default_flow_style=False)
 
 
-def configure_tempest_update_params(tempest_conf_file,
-                                    image_id=None, flavor_id=None):
+def configure_tempest_update_params(tempest_conf_file, image_id=None,
+                                    flavor_id=None, compute_cnt=1):
     """
     Add/update needed parameters into tempest.conf file
     """
@@ -210,6 +213,10 @@ def configure_tempest_update_params(tempest_conf_file,
             config.set('compute', 'flavor_ref', flavor_id)
         if FLAVOR_ID_ALT is not None:
             config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT)
+    if compute_cnt > 1:
+        # enable multinode tests
+        config.set('compute', 'min_compute_nodes', compute_cnt)
+
     config.set('identity', 'region', 'RegionOne')
     if os_utils.is_keystone_v3():
         auth_version = 'v3'
index b8a4e9a..1920014 100644 (file)
@@ -20,10 +20,10 @@ import time
 import yaml
 
 from functest.core import testcase
+from functest.opnfv_tests.openstack.snaps import snaps_utils
 from functest.opnfv_tests.openstack.tempest import conf_utils
 from functest.utils.constants import CONST
 import functest.utils.functest_utils as ft_utils
-import functest.utils.openstack_utils as os_utils
 
 from snaps.openstack import create_flavor
 from snaps.openstack.create_flavor import FlavorSettings, OpenStackFlavor
@@ -234,11 +234,13 @@ class TempestCommon(testcase.TestCase):
             if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR):
                 os.makedirs(conf_utils.TEMPEST_RESULTS_DIR)
             resources = self.resources.create()
+            compute_cnt = snaps_utils.get_active_compute_cnt(
+                self.resources.os_creds)
             conf_utils.configure_tempest(
                 self.DEPLOYMENT_DIR,
                 image_id=resources.get("image_id"),
                 flavor_id=resources.get("flavor_id"),
-                mode=self.MODE)
+                compute_cnt=compute_cnt)
             self.generate_test_list(self.VERIFIER_REPO_DIR)
             self.apply_tempest_blacklist()
             self.run_verifier_tests()
@@ -253,46 +255,6 @@ class TempestCommon(testcase.TestCase):
         self.stop_time = time.time()
         return res
 
-    def create_snapshot(self):
-        """
-        Run the Tempest cleanup utility to initialize OS state.
-
-        :return: TestCase.EX_OK
-        """
-        logger.info("Initializing the saved state of the OpenStack deployment")
-
-        if not os.path.exists(conf_utils.TEMPEST_RESULTS_DIR):
-            os.makedirs(conf_utils.TEMPEST_RESULTS_DIR)
-
-        # Make sure that the verifier is configured
-        conf_utils.configure_verifier(self.DEPLOYMENT_DIR)
-
-        try:
-            os_utils.init_tempest_cleanup(
-                self.DEPLOYMENT_DIR, 'tempest.conf',
-                os.path.join(conf_utils.TEMPEST_RESULTS_DIR,
-                             "tempest-cleanup-init.log"))
-        except Exception as err:
-            logger.error(str(err))
-            return testcase.TestCase.EX_RUN_ERROR
-
-        return super(TempestCommon, self).create_snapshot()
-
-    def clean(self):
-        """
-        Run the Tempest cleanup utility to delete and destroy OS resources
-        created by Tempest.
-        """
-        logger.info("Destroying the resources created for refstack")
-
-        os_utils.perform_tempest_cleanup(
-            self.DEPLOYMENT_DIR, 'tempest.conf',
-            os.path.join(conf_utils.TEMPEST_RESULTS_DIR,
-                         "tempest-cleanup.log")
-        )
-
-        return super(TempestCommon, self).clean()
-
 
 class TempestSmokeSerial(TempestCommon):
 
index 841da83..d09532c 100644 (file)
@@ -157,7 +157,11 @@ class ODLTests(testcase.TestCase):
                          'NEUTRON:' + kwargs['neutronip'],
                          'OS_AUTH_URL:"' + osauthurl + '"',
                          'OSUSERNAME:"' + kwargs['osusername'] + '"',
+                         ('OSUSERDOMAINNAME:"' +
+                          kwargs['osuserdomainname'] + '"'),
                          'OSTENANTNAME:"' + kwargs['ostenantname'] + '"',
+                         ('OSPROJECTDOMAINNAME:"' +
+                          kwargs['osprojectdomainname'] + '"'),
                          'OSPASSWORD:"' + kwargs['ospassword'] + '"',
                          'ODL_SYSTEM_IP:' + kwargs['odlip'],
                          'PORT:' + kwargs['odlwebport'],
@@ -221,11 +225,16 @@ class ODLTests(testcase.TestCase):
             if 'INSTALLER_TYPE' in os.environ:
                 installer_type = os.environ['INSTALLER_TYPE']
             kwargs['osusername'] = os.environ['OS_USERNAME']
+            kwargs['osuserdomainname'] = os.environ.get(
+                'OS_USER_DOMAIN_NAME', 'Default')
             kwargs['ostenantname'] = os.environ['OS_TENANT_NAME']
+            kwargs['osprojectdomainname'] = os.environ.get(
+                'OS_PROJECT_DOMAIN_NAME', 'Default')
             kwargs['osauthurl'] = os.environ['OS_AUTH_URL']
             kwargs['ospassword'] = os.environ['OS_PASSWORD']
             if installer_type == 'fuel':
-                kwargs['odlwebport'] = '8282'
+                kwargs['odlwebport'] = '8181'
+                kwargs['odlrestconfport'] = '8282'
             elif installer_type == 'apex' or installer_type == 'netvirt':
                 kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
                 kwargs['odlwebport'] = '8081'
@@ -262,13 +271,20 @@ class ODLParser(object):  # pylint: disable=too-few-public-methods
             default='127.0.0.1')
         self.parser.add_argument(
             '-k', '--osauthurl', help='OS_AUTH_URL as defined by OpenStack',
-            default='http://127.0.0.1:5000/v2.0')
+            default='http://127.0.0.1:5000/v3')
         self.parser.add_argument(
             '-a', '--osusername', help='Username for OpenStack',
             default='admin')
+        self.parser.add_argument(
+            '-f', '--osuserdomainname', help='User domain name for OpenStack',
+            default='Default')
         self.parser.add_argument(
             '-b', '--ostenantname', help='Tenantname for OpenStack',
             default='admin')
+        self.parser.add_argument(
+            '-g', '--osprojectdomainname',
+            help='Project domain name for OpenStack',
+            default='Default')
         self.parser.add_argument(
             '-c', '--ospassword', help='Password for OpenStack',
             default='admin')
index 8ed7f0d..c8c2c50 100644 (file)
@@ -24,7 +24,6 @@ import functest.opnfv_tests.vnf.ims.clearwater_ims_base as clearwater_ims_base
 from functest.utils.constants import CONST
 import functest.utils.openstack_utils as os_utils
 
-from snaps.openstack.os_credentials import OSCreds
 from snaps.openstack.create_network import (NetworkSettings, SubnetSettings,
                                             OpenStackNetwork)
 from snaps.openstack.create_security_group import (SecurityGroupSettings,
@@ -63,7 +62,6 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase):
             raise Exception("VNF config file not found")
 
         self.snaps_creds = ''
-        self.created_object = []
 
         config_file = os.path.join(self.case_dir, self.config)
         self.orchestrator = dict(
@@ -101,12 +99,19 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase):
 
         self.__logger.info("Additional pre-configuration steps")
 
-        self.snaps_creds = OSCreds(
-            username=self.creds['username'],
-            password=self.creds['password'],
-            auth_url=self.creds['auth_url'],
-            project_name=self.creds['tenant'],
-            identity_api_version=int(os_utils.get_keystone_client_version()))
+        compute_quotas = self.os_project.get_compute_quotas()
+        network_quotas = self.os_project.get_network_quotas()
+
+        for key, value in (
+                self.vnf['requirements']['compute_quotas'].items()):
+            setattr(compute_quotas, key, value)
+
+        for key, value in (
+                self.vnf['requirements']['network_quotas'].items()):
+            setattr(network_quotas, key, value)
+
+        compute_quotas = self.os_project.update_compute_quotas(compute_quotas)
+        network_quotas = self.os_project.update_network_quotas(network_quotas)
 
         # needs some images
         self.__logger.info("Upload some OS images if it doesn't exist")
@@ -402,12 +407,6 @@ class CloudifyIms(clearwater_ims_base.ClearwaterOnBoardingBase):
             self.__logger.warn("Some issue during the undeployment ..")
             self.__logger.warn("Tenant clean continue ..")
 
-        self.__logger.info('Remove the cloudify manager OS object ..')
-        for creator in reversed(self.created_object):
-            try:
-                creator.clean()
-            except Exception as exc:
-                self.logger.error('Unexpected error cleaning - %s', exc)
         super(CloudifyIms, self).clean()
 
     @energy.enable_recording
index 280e0a6..ad7fa70 100644 (file)
@@ -21,6 +21,13 @@ vnf:
         flavor:
           name: m1.small
           ram_min: 2048
+        compute_quotas:
+          cores: 50
+          instances: 15
+        network_quotas:
+          security_group: 20
+          security_group_rule: 100
+          port: 50
     inputs:
         image_id: 'ubuntu_14.04'
         flavor_id: 'm1.small'
index 5154dea..c924a34 100644 (file)
@@ -31,7 +31,6 @@ from snaps.openstack.create_network import (
     SubnetSettings,
     PortSettings)
 from snaps.openstack.create_router import OpenStackRouter, RouterSettings
-from snaps.openstack.os_credentials import OSCreds
 from snaps.openstack.create_instance import (
     VmInstanceSettings,
     OpenStackVmInstance)
@@ -208,15 +207,13 @@ class ClearwaterImsVnf(vnf.VnfOnBoarding):
         super(ClearwaterImsVnf, self).prepare()
 
         self.logger.info("Additional pre-configuration steps")
-        self.logger.info("creds %s", (self.creds))
-
-        self.snaps_creds = OSCreds(
-            username=self.creds['username'],
-            password=self.creds['password'],
-            auth_url=self.creds['auth_url'],
-            project_name=self.creds['tenant'],
-            identity_api_version=int(os_utils.get_keystone_client_version()))
 
+        self.creds = {
+                "tenant": self.tenant_name,
+                "username": self.tenant_name,
+                "password": self.tenant_name,
+                "auth_url": os_utils.get_credentials()['auth_url']
+                }
         self.prepare_images()
         self.prepare_flavor()
         self.prepare_security_groups()
@@ -661,8 +658,9 @@ class ClearwaterImsVnf(vnf.VnfOnBoarding):
         try:
             neutron_client = os_utils.get_neutron_client(self.creds)
             self.logger.info("Deleting Open Baton Port...")
-            port = snaps_utils.neutron_utils.get_port_by_name(
-                neutron_client, '%s_port' % self.case_name)
+            port = snaps_utils.neutron_utils.get_port(
+                neutron_client,
+                port_name='%s_port' % self.case_name)
             snaps_utils.neutron_utils.delete_port(neutron_client, port)
             time.sleep(10)
         except Exception as exc:
index 4544070..aae3514 100644 (file)
@@ -32,7 +32,6 @@ from snaps.openstack.create_network import (
     SubnetSettings,
     PortSettings)
 from snaps.openstack.create_router import OpenStackRouter, RouterSettings
-from snaps.openstack.os_credentials import OSCreds
 from snaps.openstack.create_instance import (
     VmInstanceSettings, OpenStackVmInstance)
 from functest.opnfv_tests.openstack.snaps import snaps_utils
@@ -198,22 +197,18 @@ class OpenImsVnf(vnf.VnfOnBoarding):
         self.images = get_config("tenant_images.orchestrator", config_file)
         self.images.update(get_config("tenant_images.%s" %
                                       self.case_name, config_file))
-        self.snaps_creds = None
 
     def prepare(self):
         """Prepare testscase (Additional pre-configuration steps)."""
         super(OpenImsVnf, self).prepare()
 
         self.logger.info("Additional pre-configuration steps")
-        self.logger.info("creds %s", (self.creds))
-
-        self.snaps_creds = OSCreds(
-            username=self.creds['username'],
-            password=self.creds['password'],
-            auth_url=self.creds['auth_url'],
-            project_name=self.creds['tenant'],
-            identity_api_version=int(os_utils.get_keystone_client_version()))
-
+        self.creds = {
+                "tenant": self.tenant_name,
+                "username": self.tenant_name,
+                "password": self.tenant_name,
+                "auth_url": os_utils.get_credentials()['auth_url']
+                }
         self.prepare_images()
         self.prepare_flavor()
         self.prepare_security_groups()
@@ -697,8 +692,9 @@ class OpenImsVnf(vnf.VnfOnBoarding):
         try:
             neutron_client = os_utils.get_neutron_client(self.creds)
             self.logger.info("Deleting Open Baton Port...")
-            port = snaps_utils.neutron_utils.get_port_by_name(
-                neutron_client, '%s_port' % self.case_name)
+            port = snaps_utils.neutron_utils.get_port(
+                neutron_client,
+                port_name='%s_port' % self.case_name)
             snaps_utils.neutron_utils.delete_port(neutron_client, port)
             time.sleep(10)
         except Exception as exc:
index c3cccb9..edbdb49 100644 (file)
@@ -25,7 +25,6 @@ import functest.utils.openstack_utils as os_utils
 
 from git import Repo
 
-from snaps.openstack.os_credentials import OSCreds
 from snaps.openstack.create_network import (NetworkSettings, SubnetSettings,
                                             OpenStackNetwork)
 from snaps.openstack.create_security_group import (SecurityGroupSettings,
@@ -110,17 +109,10 @@ class CloudifyVrouter(vrouter_base.VrouterOnBoardingBase):
 
         self.__logger.info("Additional pre-configuration steps")
 
-        self.snaps_creds = OSCreds(
-            username=self.creds['username'],
-            password=self.creds['password'],
-            auth_url=self.creds['auth_url'],
-            project_name=self.creds['tenant'],
-            identity_api_version=int(os_utils.get_keystone_client_version()))
-
-        self.util.set_credentials(self.creds["username"],
-                                  self.creds["password"],
-                                  self.creds["auth_url"],
-                                  self.creds["tenant"])
+        self.util.set_credentials(self.snaps_creds.username,
+                                  self.snaps_creds.password,
+                                  self.snaps_creds.auth_url,
+                                  self.snaps_creds.project_name)
 
         # needs some images
         self.__logger.info("Upload some OS images if it doesn't exist")
index 2ebbbe3..00a29ea 100644 (file)
@@ -18,6 +18,8 @@ from functest.core import vnf
 from functest.core import testcase
 from functest.utils import constants
 
+from snaps.openstack.os_credentials import OSCreds
+
 
 class VnfBaseTesting(unittest.TestCase):
     """The class testing VNF."""
@@ -102,91 +104,62 @@ class VnfBaseTesting(unittest.TestCase):
         with self.assertRaises(vnf.VnfTestException):
             self.test.test_vnf()
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client')
-    @mock.patch('functest.core.vnf.os_utils.delete_user',
-                return_value=True)
-    def test_clean_user_already_exist(self, *args):
-        self.test.exist_obj['user'] = True
-        self.test.clean()
-        args[0].assert_not_called()
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client')
-    @mock.patch('functest.core.vnf.os_utils.delete_user',
-                return_value=True)
-    def test_clean_user_created(self, *args):
-        self.test.exist_obj['user'] = False
-        self.test.clean()
-        args[0].assert_called_once_with(mock.ANY, self.tenant_name)
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client')
-    @mock.patch('functest.core.vnf.os_utils.delete_tenant',
-                return_value=True)
-    def test_clean_tenant_already_exist(self, *args):
-        self.test.exist_obj['tenant'] = True
-        self.test.clean()
-        args[0].assert_not_called()
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client')
-    @mock.patch('functest.core.vnf.os_utils.delete_tenant',
-                return_value=True)
-    def test_clean_tenant_created(self, *args):
-        self.test.exist_obj['tenant'] = False
-        self.test.clean()
-        args[0].assert_called_once_with(mock.ANY, self.tenant_name)
-        args[1].assert_called_once_with()
-
     def test_deploy_orch_unimplemented(self):
         self.assertTrue(self.test.deploy_orchestrator())
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test'})
-    def test_prepare(self, *args):
-        self.assertEqual(self.test.prepare(),
-                         testcase.TestCase.EX_OK)
-        args[0].assert_called_once_with()
-        args[1].assert_called_once_with('test', self.tenant_name)
-        args[2].assert_called_once_with(
-            'test', self.tenant_name, self.tenant_description)
-        args[3].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
+#    @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials',
+#                return_value='test')
+#    @mock.patch('snaps.openstack.create_project.OpenStackProject',
+#                return_value=True)
+#    @mock.patch('snaps.openstack.create_user.OpenStackUser',
+#                return_value=True)
+#    def test_prepare(self, *args):
+#        self.assertEqual(self.test.prepare(),
+#                         testcase.TestCase.EX_OK)
+#        args[0].assert_called_once_with()
+#        args[1].assert_called_once_with('test', self.tenant_name)
+#        args[2].assert_called_once_with(
+#            'test', self.tenant_name, self.tenant_description)
+#        args[3].assert_called_once_with()
+
+    @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials',
+                return_value=OSCreds(
+                    username='user', password='pass',
+                    auth_url='http://foo.com:5000/v3', project_name='bar'),
                 side_effect=Exception)
     def test_prepare_keystone_client_ko(self, *args):
         with self.assertRaises(vnf.VnfPreparationException):
             self.test.prepare()
-        args[0].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                side_effect=Exception)
-    def test_prepare_tenant_creation_ko(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.test.prepare()
-        args[0].assert_called_once_with(
-            mock.ANY, self.tenant_name, self.tenant_description)
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=0)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                side_effect=Exception)
-    def test_prepare_user_creation_ko(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.test.prepare()
-        args[0].assert_called_once_with(mock.ANY, self.tenant_name)
-        args[1].assert_called_once_with(
-            mock.ANY, self.tenant_name, self.tenant_description)
-        args[2].assert_called_once_with()
+        args[0].assert_called_once()
+
+#    @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials',
+#                return_value=OS_CREDS)
+#    @mock.patch('snaps.openstack.create_project.OpenStackProject')
+#    @mock.patch('snaps.openstack.create_project.OpenStackProject.create',
+#                side_effect=Exception)
+#    def test_prepare_tenant_creation_ko(self, *args):
+#        with self.assertRaises(vnf.VnfPreparationException):
+#            self.test.prepare()
+#        args[2].assert_called_once()
+#        args[1].assert_called_once_with(OS_CREDS,
+#                                        ProjectSettings(
+#                                           name=self.tenant_name,
+#                                           description=self.tenant_description,
+#                                        ))
+#        args[0].assert_called_once()
+
+#    @mock.patch('snaps.openstack.tests.openstack_tests.get_credentials')
+#    @mock.patch('snaps.openstack.create_project.OpenStackProject',
+#                return_value=0)
+#    @mock.patch('snaps.openstack.create_user.OpenStackUser',
+#                side_effect=Exception)
+#    def test_prepare_user_creation_ko(self, *args):
+#        with self.assertRaises(vnf.VnfPreparationException):
+#            self.test.prepare()
+#        args[0].assert_called_once_with(mock.ANY, self.tenant_name)
+#        args[1].assert_called_once_with(
+#            mock.ANY, self.tenant_name, self.tenant_description)
+#        args[2].assert_called_once_with()
 
 
 if __name__ == "__main__":
index 8aeea41..338a4e6 100644 (file)
@@ -69,7 +69,7 @@ class ODLTesting(unittest.TestCase):
     _keystone_ip = "127.0.0.1"
     _neutron_ip = "127.0.0.2"
     _sdn_controller_ip = "127.0.0.3"
-    _os_auth_url = "http://{}:5000/v2.0".format(_keystone_ip)
+    _os_auth_url = "http://{}:5000/v3".format(_keystone_ip)
     _os_tenantname = "admin"
     _os_username = "admin"
     _os_password = "admin"
@@ -77,6 +77,8 @@ class ODLTesting(unittest.TestCase):
     _odl_restconfport = "8181"
     _odl_username = "admin"
     _odl_password = "admin"
+    _os_userdomainname = 'Default'
+    _os_projectdomainname = 'Default'
 
     def setUp(self):
         for var in ("INSTALLER_TYPE", "SDN_CONTROLLER", "SDN_CONTROLLER_IP"):
@@ -84,15 +86,20 @@ class ODLTesting(unittest.TestCase):
                 del os.environ[var]
         os.environ["OS_AUTH_URL"] = self._os_auth_url
         os.environ["OS_USERNAME"] = self._os_username
+        os.environ["OS_USER_DOMAIN_NAME"] = self._os_userdomainname
         os.environ["OS_PASSWORD"] = self._os_password
         os.environ["OS_TENANT_NAME"] = self._os_tenantname
+        os.environ["OS_PROJECT_DOMAIN_NAME"] = self._os_projectdomainname
+        os.environ["OS_PASSWORD"] = self._os_password
         self.test = odl.ODLTests(case_name='odl', project_name='functest')
         self.defaultargs = {'odlusername': self._odl_username,
                             'odlpassword': self._odl_password,
                             'neutronip': self._keystone_ip,
                             'osauthurl': self._os_auth_url,
                             'osusername': self._os_username,
+                            'osuserdomainname': self._os_userdomainname,
                             'ostenantname': self._os_tenantname,
+                            'osprojectdomainname': self._os_projectdomainname,
                             'ospassword': self._os_password,
                             'odlip': self._keystone_ip,
                             'odlwebport': self._odl_webport,
@@ -211,7 +218,9 @@ class ODLMainTesting(ODLTesting):
                   'neutronip': self._neutron_ip,
                   'osauthurl': self._os_auth_url,
                   'osusername': self._os_username,
+                  'osuserdomainname': self._os_userdomainname,
                   'ostenantname': self._os_tenantname,
+                  'osprojectdomainname': self._os_projectdomainname,
                   'ospassword': self._os_password,
                   'odlip': self._sdn_controller_ip,
                   'odlwebport': self._odl_webport,
@@ -231,7 +240,11 @@ class ODLMainTesting(ODLTesting):
                         'NEUTRON:{}'.format(self._neutron_ip),
                         'OS_AUTH_URL:"{}"'.format(self._os_auth_url),
                         'OSUSERNAME:"{}"'.format(self._os_username),
+                        'OSUSERDOMAINNAME:"{}"'.format(
+                            self._os_userdomainname),
                         'OSTENANTNAME:"{}"'.format(self._os_tenantname),
+                        'OSPROJECTDOMAINNAME:"{}"'.format(
+                            self._os_projectdomainname),
                         'OSPASSWORD:"{}"'.format(self._os_password),
                         'ODL_SYSTEM_IP:{}'.format(self._sdn_controller_ip),
                         'PORT:{}'.format(self._odl_webport),
@@ -383,7 +396,9 @@ class ODLRunTesting(ODLTesting):
                 odlusername=self._odl_username, odlwebport=odlwebport,
                 osauthurl=self._os_auth_url,
                 ospassword=self._os_password, ostenantname=self._os_tenantname,
-                osusername=self._os_username)
+                osusername=self._os_username,
+                osprojectdomainname=self._os_projectdomainname,
+                osuserdomainname=self._os_userdomainname)
 
     def _test_multiple_suites(self, suites,
                               status=testcase.TestCase.EX_OK, **kwargs):
@@ -404,7 +419,9 @@ class ODLRunTesting(ODLTesting):
                 odlusername=self._odl_username, odlwebport=odlwebport,
                 osauthurl=self._os_auth_url,
                 ospassword=self._os_password, ostenantname=self._os_tenantname,
-                osusername=self._os_username)
+                osusername=self._os_username,
+                osprojectdomainname=self._os_projectdomainname,
+                osuserdomainname=self._os_userdomainname)
 
     def test_exc(self):
         with mock.patch('functest.utils.openstack_utils.get_endpoint',
@@ -462,7 +479,8 @@ class ODLRunTesting(ODLTesting):
     def test_fuel(self):
         os.environ["INSTALLER_TYPE"] = "fuel"
         self._test_run(testcase.TestCase.EX_OK,
-                       odlip=self._neutron_ip, odlwebport='8282')
+                       odlip=self._neutron_ip, odlwebport='8181',
+                       odlrestconfport='8282')
 
     def test_apex_no_controller_ip(self):
         with mock.patch('functest.utils.openstack_utils.get_endpoint',
@@ -578,9 +596,15 @@ class ODLArgParserTesting(ODLTesting):
     def test_osusername(self):
         self._test_arg('osusername', 'foo')
 
+    def test_osuserdomainname(self):
+        self._test_arg('osuserdomainname', 'domain')
+
     def test_ostenantname(self):
         self._test_arg('ostenantname', 'foo')
 
+    def test_osprojectdomainname(self):
+        self._test_arg('osprojectdomainname', 'domain')
+
     def test_ospassword(self):
         self._test_arg('ospassword', 'foo')
 
index ca09748..61e950a 100644 (file)
@@ -1,11 +1,14 @@
 #!/usr/bin/env python
+
 # Copyright (c) 2017 Huawei Technologies Co.,Ltd and others.
-# matthew.lijun@huawei.com wangwulin@huawei.com
+#
 # All rights reserved. This program and the accompanying materials
 # are made available under the terms of the Apache License, Version 2.0
 # which accompanies this distribution, and is available at
 # http://www.apache.org/licenses/LICENSE-2.0
 
+# pylint: disable=missing-docstring
+
 import logging
 import mock
 import pkg_resources
@@ -18,8 +21,13 @@ from functest.utils.constants import CONST
 
 from snaps.openstack.os_credentials import OSCreds
 
+__author__ = ("Matthew Li <matthew.lijun@huawei.com>,"
+              "Linda Wang <wangwulin@huawei.com>")
+
 
 class OSRefstackClientTesting(unittest.TestCase):
+    """The class testing RefstackClient """
+    # pylint: disable=missing-docstring, too-many-public-methods
 
     _config = pkg_resources.resource_filename(
         'functest',
@@ -32,13 +40,20 @@ class OSRefstackClientTesting(unittest.TestCase):
                              'testlist': self._testlist}
         CONST.__setattr__('OS_AUTH_URL', 'https://ip:5000/v3')
         CONST.__setattr__('OS_INSECURE', 'true')
+        self.case_name = 'refstack_defcore'
+        self.result = 0
         self.os_creds = OSCreds(
             username='user', password='pass',
             auth_url='http://foo.com:5000/v3', project_name='bar')
+        self.details = {"tests": 3,
+                        "failures": 1,
+                        "success": ['tempest.api.compute [18.464988s]'],
+                        "errors": ['tempest.api.volume [0.230334s]'],
+                        "skipped": ['tempest.api.network [1.265828s]']}
 
     @mock.patch('functest.opnfv_tests.openstack.refstack_client.tempest_conf.'
                 'TempestConf', return_value=mock.Mock())
-    def _create_client(self, mock_conf):
+    def _create_client(self, *args):
         with mock.patch('snaps.openstack.tests.openstack_tests.'
                         'get_credentials', return_value=self.os_creds):
             return RefstackClient()
@@ -49,11 +64,11 @@ class OSRefstackClientTesting(unittest.TestCase):
         testlist = 'testlist'
         client = self._create_client()
         with mock.patch('functest.opnfv_tests.openstack.refstack_client.'
-                        'refstack_client.ft_utils.execute_command') as m:
+                        'refstack_client.ft_utils.execute_command') as m_cmd:
             cmd = ("refstack-client test {0} -c {1} -v --test-list {2}"
                    .format(insecure, config, testlist))
             client.run_defcore(config, testlist)
-            m.assert_any_call(cmd)
+            m_cmd.assert_any_call(cmd)
 
     def test_run_defcore(self):
         CONST.__setattr__('OS_AUTH_URL', 'http://ip:5000/v3')
@@ -62,25 +77,22 @@ class OSRefstackClientTesting(unittest.TestCase):
         testlist = 'testlist'
         client = self._create_client()
         with mock.patch('functest.opnfv_tests.openstack.refstack_client.'
-                        'refstack_client.ft_utils.execute_command') as m:
+                        'refstack_client.ft_utils.execute_command') as m_cmd:
             cmd = ("refstack-client test {0} -c {1} -v --test-list {2}"
                    .format(insecure, config, testlist))
             client.run_defcore(config, testlist)
-            m.assert_any_call(cmd)
+            m_cmd.assert_any_call(cmd)
 
     @mock.patch('functest.opnfv_tests.openstack.refstack_client.'
                 'refstack_client.LOGGER.info')
     @mock.patch('__builtin__.open', side_effect=Exception)
-    def test_parse_refstack_result_missing_log_file(self, mock_open,
-                                                    mock_logger_info):
-        self.case_name = 'refstack_defcore'
-        self.result = 0
+    def test_parse_refstack_result_fail(self, *args):
         self._create_client().parse_refstack_result()
-        mock_logger_info.assert_called_once_with(
+        args[1].assert_called_once_with(
             "Testcase %s success_rate is %s%%",
             self.case_name, self.result)
 
-    def test_parse_refstack_result_default(self):
+    def test_parse_refstack_result_ok(self):
         log_file = ('''
                     {0} tempest.api.compute [18.464988s] ... ok
                     {0} tempest.api.volume [0.230334s] ... FAILED
@@ -90,11 +102,6 @@ class OSRefstackClientTesting(unittest.TestCase):
                     - Skipped: 1
                     - Failed: 1
                    ''')
-        self.details = {"tests": 3,
-                        "failures": 1,
-                        "success": ['tempest.api.compute [18.464988s]'],
-                        "errors": ['tempest.api.volume [0.230334s]'],
-                        "skipped": ['tempest.api.network [1.265828s]']}
         client = self._create_client()
         with mock.patch('__builtin__.open',
                         mock.mock_open(read_data=log_file)):
@@ -108,16 +115,6 @@ class OSRefstackClientTesting(unittest.TestCase):
             del kwargs[key]
         return kwargs
 
-    def _test_main(self, status, *args):
-        kwargs = self._get_main_kwargs()
-        client = self._create_client()
-        self.assertEqual(client.main(**kwargs), status)
-        if len(args) > 0:
-            args[0].assert_called_once_with(
-                RefstackClient.result_dir)
-        if len(args) > 1:
-            args
-
     def _test_main_missing_keyword(self, key):
         kwargs = self._get_main_kwargs(key)
         client = self._create_client()
index 9df97b4..50b0edc 100644 (file)
@@ -159,9 +159,23 @@ class OSTempestConfUtilsTesting(unittest.TestCase):
 
     def test_backup_tempest_config_default(self):
         with mock.patch('functest.opnfv_tests.openstack.tempest.'
-                        'conf_utils.shutil.copyfile') as m1:
+                        'conf_utils.os.path.exists',
+                        return_value=False), \
+            mock.patch('functest.opnfv_tests.openstack.tempest.'
+                       'conf_utils.os.makedirs') as m1, \
+            mock.patch('functest.opnfv_tests.openstack.tempest.'
+                       'conf_utils.shutil.copyfile') as m2:
             conf_utils.backup_tempest_config('test_conf_file')
             self.assertTrue(m1.called)
+            self.assertTrue(m2.called)
+
+        with mock.patch('functest.opnfv_tests.openstack.tempest.'
+                        'conf_utils.os.path.exists',
+                        return_value=True), \
+            mock.patch('functest.opnfv_tests.openstack.tempest.'
+                       'conf_utils.shutil.copyfile') as m2:
+            conf_utils.backup_tempest_config('test_conf_file')
+            self.assertTrue(m2.called)
 
     def test_configure_tempest_default(self):
         with mock.patch('functest.opnfv_tests.openstack.tempest.'
index 54d7d49..6fe103f 100644 (file)
@@ -171,6 +171,19 @@ class OSTempestTesting(unittest.TestCase):
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs')
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'TempestResourcesManager.create', return_value={})
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_active_compute_cnt', side_effect=Exception)
+    def test_run_get_active_compute_cnt_ko(self, *args):
+        self.assertEqual(self.tempestcommon.run(),
+                         testcase.TestCase.EX_RUN_ERROR)
+
+    @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+                'os.path.exists', return_value=False)
+    @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs')
+    @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
+                'TempestResourcesManager.create', return_value={})
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_active_compute_cnt', return_value=2)
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'conf_utils.configure_tempest', side_effect=Exception)
     def test_run_configure_tempest_ko(self, *args):
@@ -182,6 +195,8 @@ class OSTempestTesting(unittest.TestCase):
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.os.makedirs')
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'TempestResourcesManager.create', return_value={})
+    @mock.patch('functest.opnfv_tests.openstack.snaps.snaps_utils.'
+                'get_active_compute_cnt', return_value=2)
     @mock.patch('functest.opnfv_tests.openstack.tempest.tempest.'
                 'conf_utils.configure_tempest')
     def _test_run(self, status, *args):
index f0483c6..cdd657a 100644 (file)
@@ -13,8 +13,6 @@ import mock
 from functest.core import vnf
 from functest.opnfv_tests.vnf.ims import cloudify_ims
 
-from snaps.openstack.os_credentials import OSCreds
-
 
 class CloudifyImsTesting(unittest.TestCase):
 
@@ -57,114 +55,10 @@ class CloudifyImsTesting(unittest.TestCase):
                         'vnf': {},
                         'test_vnf':  {}}
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/v1'})
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    def test_prepare_default(self, *args):
-        self.assertIsNone(self.ims_vnf.prepare())
-        args[4].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/no_v'})
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    def test_prepare_bad_auth_url(self, *args):
-        with self.assertRaises(Exception):
-            self.ims_vnf.image_creator(
-                OSCreds(username='user', password='pass', auth_url='url',
-                        project_name='project', identity_api_version=3),
-                mock.Mock())
-            args[0].assert_not_called()
-
     def test_prepare_missing_param(self):
         with self.assertRaises(vnf.VnfPreparationException):
             self.ims_vnf.prepare()
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                side_effect=Exception)
-    def test_prepare_keystone_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                side_effect=Exception)
-    def test_prepare_tenant_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                side_effect=Exception)
-    def test_prepare_user_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[2].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                side_effect=Exception)
-    def test_prepare_credentials_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    # @mock.patch('snaps.openstack.create_keypairs.OpenStackKeypair',
-    #             side_effect=Exception)
-    # def test_deploy_orchestrator_keypair_exception(self, *args):
-    #    with self.assertRaises(vnf.OrchestratorDeploymentException):
-    #        self.ims_vnf.deploy_orchestrator()
-
-    #   def test_deploy_orchestrator_network_creation_fail(self):
-    #   def test_deploy_orchestrator_floatting_ip_creation_fail(self):
-    #   def test_deploy_orchestrator_flavor_fail(self):
-    #   def test_deploy_orchestrator_get_image_id_fail(self):
-    #   def test_deploy_orchestrator_create_instance_fail(self):
-    #   def test_deploy_orchestrator_secgroup_fail(self):
-    #   def test_deploy_orchestrator_add_floating_ip_fail(self):
-    #   def test_deploy_orchestrator_get_endpoint_fail(self):
-    #   def test_deploy_orchestrator_initiate CloudifyClient_fail(self):
-    #   def test_deploy_orchestrator_get_status_fail(self):
-    #
-
-    #   def test_deploy_vnf(self):
-    #   def test_deploy_vnf_publish_fail(self):
-    #   def test_deploy_vnf_get_flavor_fail(self):
-    #   def test_deploy_vnf_get_external_net_fail(self):
-    #   def test_deploy_vnf_deployment_create_fail(self):
-    #   def test_deploy_vnf_start_fail(self):
-    #
-    #   def test_test_vnf(self):
-    #   def test_test_vnf_deployment_get_fail(self):
-    #   def test_test_vnf_run_live_test_fail(self):
-    #
-    #   def test_clean(self):
-    #   def test_clean_execution_start_fail(self):
-    #   def test_clean_deployment_delete_fail(self):
-    #   def test_clean_blueprint_delete_fail(self):
-
 
 if __name__ == "__main__":
     logging.disable(logging.CRITICAL)
index ef227ca..2e83f30 100644 (file)
@@ -11,7 +11,6 @@ import logging
 import unittest
 
 import mock
-from snaps.openstack.os_credentials import OSCreds
 
 from functest.core import vnf
 from functest.opnfv_tests.vnf.ims import orchestra_clearwaterims
@@ -110,117 +109,11 @@ class OrchestraClearwaterImsTesting(unittest.TestCase):
                         'vnf': {},
                         'test_vnf': {}}
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/v1'})
-    @mock.patch(
-        'functest.utils.openstack_utils.get_tenant_id',
-        return_value={'mocked_tenant_id'})
-    @mock.patch(
-        'functest.utils.openstack_utils.get_floating_ips',
-        return_value=[])
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    @mock.patch('snaps.openstack.create_flavor.OpenStackFlavor.create')
-    @mock.patch(
-        'snaps.openstack.create_security_group.OpenStackSecurityGroup.create')
-    @mock.patch('snaps.openstack.create_network.OpenStackNetwork.create')
-    @mock.patch('snaps.openstack.create_router.OpenStackRouter.create')
-    @mock.patch(
-        'functest.opnfv_tests.openstack.snaps.snaps_utils.get_ext_net_name')
-    @mock.patch(
-        'functest.opnfv_tests.openstack.snaps.'
-        'snaps_utils.neutron_utils.create_floating_ip')
-    def test_prepare_default(self, *args):
-        """Testing prepare function without any exceptions expected"""
-        self.assertIsNone(self.ims_vnf.prepare())
-        args[4].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/no_v'})
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    def test_prepare_bad_auth_url(self, *args):
-        """Testing prepare function with bad auth url"""
-        with self.assertRaises(Exception):
-            self.ims_vnf.image_creator(
-                OSCreds(username='user', password='pass', auth_url='url',
-                        project_name='project', identity_api_version=3),
-                mock.Mock())
-            args[0].assert_not_called()
-
     def test_prepare_missing_param(self):
         """Testing prepare function with missing param"""
         with self.assertRaises(vnf.VnfPreparationException):
             self.ims_vnf.prepare()
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                side_effect=Exception)
-    def test_prepare_keystone_exception(self, *args):
-        """Testing prepare function with keystone exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                side_effect=Exception)
-    def test_prepare_tenant_exception(self, *args):
-        """Testing prepare function with tenant exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-            args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                side_effect=Exception)
-    def test_prepare_user_exception(self, *args):
-        """Testing prepare function with user exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[2].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                side_effect=Exception)
-    def test_prepare_credentials_exception(self, *args):
-        """Testing prepare function with credentials exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    # # @mock.patch('functest.opnfv_tests.vnf.
-        # ims.orchestra_clearwaterims.get_userdata')
-    # def test_deploy_orchestrator(self, *args):
-    #     floating_ip = FloatingIp
-    #     floating_ip.ip = 'mocked_ip'
-    #     details = {'fip':floating_ip,'flavor':{'name':'mocked_name'}}
-    #     self.mano['details'] = details
-    #     with mock.patch.dict(self.mano, {'details':
-    #     {'fip':floating_ip,'flavor':{'name':'mocked_name'}}}):
-    #     # with mock.patch.dict(self.mano, details):
-    #         orchestra_clearwaterims.get_userdata(self.mano)
-    #     self.assertIsNone(self.ims_vnf.deploy_orchestrator())
-    #     args[4].assert_called_once_with()
-
 
 if __name__ == "__main__":
     logging.disable(logging.CRITICAL)
index 5911cf7..47a8d03 100644 (file)
@@ -11,7 +11,6 @@ import logging
 import unittest
 
 import mock
-from snaps.openstack.os_credentials import OSCreds
 
 from functest.core import vnf
 from functest.opnfv_tests.vnf.ims import orchestra_openims
@@ -112,117 +111,11 @@ class OrchestraOpenImsTesting(unittest.TestCase):
                         'vnf': {},
                         'test_vnf': {}}
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/v1'})
-    @mock.patch(
-        'functest.utils.openstack_utils.get_tenant_id',
-        return_value={'mocked_tenant_id'})
-    @mock.patch(
-        'functest.utils.openstack_utils.get_floating_ips',
-        return_value=[])
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    @mock.patch('snaps.openstack.create_flavor.OpenStackFlavor.create')
-    @mock.patch(
-        'snaps.openstack.create_security_group.OpenStackSecurityGroup.create')
-    @mock.patch('snaps.openstack.create_network.OpenStackNetwork.create')
-    @mock.patch('snaps.openstack.create_router.OpenStackRouter.create')
-    @mock.patch(
-        'functest.opnfv_tests.openstack.snaps.snaps_utils.get_ext_net_name')
-    @mock.patch(
-        'functest.opnfv_tests.openstack.snaps.snaps_utils.'
-        'neutron_utils.create_floating_ip')
-    def test_prepare_default(self, *args):
-        """Testing prepare function without any exceptions expected"""
-        self.assertIsNone(self.ims_vnf.prepare())
-        args[4].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/no_v'})
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    def test_prepare_bad_auth_url(self, *args):
-        """Testing prepare function with bad auth url"""
-        with self.assertRaises(Exception):
-            self.ims_vnf.image_creator(
-                OSCreds(username='user', password='pass', auth_url='url',
-                        project_name='project', identity_api_version=3),
-                mock.Mock())
-            args[0].assert_not_called()
-
     def test_prepare_missing_param(self):
         """Testing prepare function with missing param"""
         with self.assertRaises(vnf.VnfPreparationException):
             self.ims_vnf.prepare()
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                side_effect=Exception)
-    def test_prepare_keystone_exception(self, *args):
-        """Testing prepare function with keystone exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                side_effect=Exception)
-    def test_prepare_tenant_exception(self, *args):
-        """Testing prepare function with tenant exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                side_effect=Exception)
-    def test_prepare_user_exception(self, *args):
-        """Testing prepare function with user exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[2].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                side_effect=Exception)
-    def test_prepare_credentials_exception(self, *args):
-        """Testing prepare function with credentials exception"""
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.ims_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    # # @mock.patch('functest.opnfv_tests.
-        # vnf.ims.orchestra_openims.get_userdata')
-    # def test_deploy_orchestrator(self, *args):
-    #     floating_ip = FloatingIp
-    #     floating_ip.ip = 'mocked_ip'
-    #     details = {'fip':floating_ip,'flavor':{'name':'mocked_name'}}
-    #     self.mano['details'] = details
-    #     with mock.patch.dict(self.mano, {'details':
-    #     {'fip':floating_ip,'flavor':{'name':'mocked_name'}}}):
-    #     # with mock.patch.dict(self.mano, details):
-    #         orchestra_openims.get_userdata(self.mano)
-    #     self.assertIsNone(self.ims_vnf.deploy_orchestrator())
-    #     args[4].assert_called_once_with()
-
 
 if __name__ == "__main__":
     logging.disable(logging.CRITICAL)
index 7f2091b..4f25623 100644 (file)
@@ -15,8 +15,6 @@ import mock
 from functest.core import vnf
 from functest.opnfv_tests.vnf.router import cloudify_vrouter
 
-from snaps.openstack.os_credentials import OSCreds
-
 
 class CloudifyVrouterTesting(unittest.TestCase):
 
@@ -60,80 +58,10 @@ class CloudifyVrouterTesting(unittest.TestCase):
                         'vnf': {},
                         'test_vnf':  {}}
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/v1'})
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    def test_prepare_default(self, *args):
-        self.assertIsNone(self.router_vnf.prepare())
-        args[4].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                return_value={'auth_url': 'test/no_v'})
-    @mock.patch('snaps.openstack.create_image.OpenStackImage.create')
-    def test_prepare_bad_auth_url(self, *args):
-        with self.assertRaises(Exception):
-            self.router_vnf.image_creator(
-                OSCreds(username='user', password='pass', auth_url='url',
-                        project_name='project', identity_api_version=3),
-                mock.Mock())
-            args[0].assert_not_called()
-
     def test_prepare_missing_param(self):
         with self.assertRaises(vnf.VnfPreparationException):
             self.router_vnf.prepare()
 
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                side_effect=Exception)
-    def test_prepare_keystone_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.router_vnf.prepare()
-        args[0].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                side_effect=Exception)
-    def test_prepare_tenant_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.router_vnf.prepare()
-        args[1].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                side_effect=Exception)
-    def test_prepare_user_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.router_vnf.prepare()
-        args[2].assert_called_once_with()
-
-    @mock.patch('functest.core.vnf.os_utils.get_keystone_client',
-                return_value='test')
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_tenant_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_or_create_user_for_vnf',
-                return_value=True)
-    @mock.patch('functest.core.vnf.os_utils.get_credentials',
-                side_effect=Exception)
-    def test_prepare_credentials_exception(self, *args):
-        with self.assertRaises(vnf.VnfPreparationException):
-            self.router_vnf.prepare()
-        args[0].assert_called_once_with()
-
 
 if __name__ == "__main__":
     logging.disable(logging.CRITICAL)
index e406237..f07f59d 100644 (file)
@@ -227,14 +227,14 @@ def get_ci_envvars():
 
 
 def execute_command_raise(cmd, info=False, error_msg="",
-                          verbose=True, output_file=None, env=None):
-    ret = execute_command(cmd, info, error_msg, verbose, output_file, env)
+                          verbose=True, output_file=None):
+    ret = execute_command(cmd, info, error_msg, verbose, output_file)
     if ret != 0:
         raise Exception(error_msg)
 
 
 def execute_command(cmd, info=False, error_msg="",
-                    verbose=True, output_file=None, env=None):
+                    verbose=True, output_file=None):
     if not error_msg:
         error_msg = ("The command '%s' failed." % cmd)
     msg_exec = ("Executing command: '%s'" % cmd)
@@ -243,7 +243,7 @@ def execute_command(cmd, info=False, error_msg="",
             logger.info(msg_exec)
         else:
             logger.debug(msg_exec)
-    p = subprocess.Popen(cmd, env=env, shell=True, stdout=subprocess.PIPE,
+    p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,
                          stderr=subprocess.STDOUT)
     if output_file:
         f = open(output_file, "w")
index 73d1cde..f211627 100644 (file)
@@ -1195,8 +1195,13 @@ def get_image_id(glance_client, image_name):
     return id
 
 
-def create_glance_image(glance_client, image_name, file_path, disk="qcow2",
-                        container="bare", public="public"):
+def create_glance_image(glance_client,
+                        image_name,
+                        file_path,
+                        disk="qcow2",
+                        extra_properties={},
+                        container="bare",
+                        public="public"):
     if not os.path.isfile(file_path):
         logger.error("Error: file %s does not exist." % file_path)
         return None
@@ -1211,7 +1216,8 @@ def create_glance_image(glance_client, image_name, file_path, disk="qcow2",
             image = glance_client.images.create(name=image_name,
                                                 visibility=public,
                                                 disk_format=disk,
-                                                container_format=container)
+                                                container_format=container,
+                                                **extra_properties)
             image_id = image.id
             with open(file_path) as image_data:
                 glance_client.images.upload(image_id, image_data)
@@ -1222,7 +1228,7 @@ def create_glance_image(glance_client, image_name, file_path, disk="qcow2",
         return None
 
 
-def get_or_create_image(name, path, format):
+def get_or_create_image(name, path, format, extra_properties):
     image_exists = False
     glance_client = get_glance_client()
 
@@ -1232,7 +1238,11 @@ def get_or_create_image(name, path, format):
         image_exists = True
     else:
         logger.info("Creating image '%s' from '%s'..." % (name, path))
-        image_id = create_glance_image(glance_client, name, path, format)
+        image_id = create_glance_image(glance_client,
+                                       name,
+                                       path,
+                                       format,
+                                       extra_properties)
         if not image_id:
             logger.error("Failed to create a Glance image...")
         else:
@@ -1561,62 +1571,3 @@ def get_resource(heat_client, stack_id, resource):
     except Exception as e:
         logger.error("Error [get_resource]: %s" % e)
         return None
-
-
-# *********************************************
-#   TEMPEST
-# *********************************************
-def init_tempest_cleanup(tempest_config_dir=None,
-                         tempest_config_filename='tempest.conf',
-                         output_file=None):
-    """
-    Initialize the Tempest Cleanup utility.
-    See  https://docs.openstack.org/tempest/latest/cleanup.html for docs.
-
-    :param tempest_config_dir: The directory where the Tempest config file is
-            located. If not specified, we let Tempest pick both the directory
-            and the filename (i.e. second parameter is ignored)
-    :param tempest_config_filename: The filename of the Tempest config file
-    :param output_file: Optional file where to save output
-    """
-    # The Tempest cleanup utility currently offers no cmd argument to specify
-    # the config file, therefore it has to be configured with env variables
-    env = None
-    if tempest_config_dir:
-        env = os.environ.copy()
-        env['TEMPEST_CONFIG_DIR'] = tempest_config_dir
-        env['TEMPEST_CONFIG'] = tempest_config_filename
-
-    # If this command fails, an exception must be raised to stop the script
-    # otherwise the later cleanup would destroy also other resources
-    cmd_line = "tempest cleanup --init-saved-state"
-    ft_utils.execute_command_raise(cmd_line, env=env, output_file=output_file,
-                                   error_msg="Tempest cleanup init failed")
-
-
-def perform_tempest_cleanup(tempest_config_dir=None,
-                            tempest_config_filename='tempest.conf',
-                            output_file=None):
-    """
-    Perform cleanup using the Tempest Cleanup utility.
-    See  https://docs.openstack.org/tempest/latest/cleanup.html for docs.
-
-    :param tempest_config_dir: The directory where the Tempest config file is
-            located. If not specified, we let Tempest pick both the directory
-            and the filename (i.e. second parameter is ignored)
-    :param tempest_config_filename: The filename of the Tempest config file
-    :param output_file: Optional file where to save output
-    """
-    # The Tempest cleanup utility currently offers no cmd argument to specify
-    # the config file, therefore it has to be configured with env variables
-    env = None
-    if tempest_config_dir:
-        env = os.environ.copy()
-        env['TEMPEST_CONFIG_DIR'] = tempest_config_dir
-        env['TEMPEST_CONFIG'] = tempest_config_filename
-
-    # If this command fails, an exception must be raised to stop the script
-    # otherwise the later cleanup would destroy also other resources
-    cmd_line = "tempest cleanup"
-    ft_utils.execute_command(cmd_line, env=env, output_file=output_file,
-                             error_msg="Tempest cleanup failed")
index 75e264c..da1b5ad 100644 (file)
@@ -8,7 +8,6 @@ python-heatclient>=1.6.1 # Apache-2.0
 python-keystoneclient>=3.8.0 # Apache-2.0
 python-neutronclient>=5.1.0 # Apache-2.0
 python-novaclient!=7.0.0,>=6.0.0 # Apache-2.0
-pexpect!=3.3,>=3.1 # ISC License
 requests!=2.12.2,>=2.10.0 # Apache-2.0
 robotframework>=3.0
 robotframework-httplibrary
@@ -30,7 +29,7 @@ six>=1.9.0 # MIT
 opnfv
 snaps
 tempest>=12.1.0 # Apache-2.0
-openstack-requirements
+rally
 SQLAlchemy<1.1.0,>=1.0.10 # MIT
 paramiko>=2.0 # LGPLv2.1+
 Jinja2!=2.9.0,!=2.9.1,!=2.9.2,!=2.9.3,!=2.9.4,>=2.8 # BSD License (3 clause)
index 98d7c55..62a460a 100644 (file)
@@ -5,7 +5,8 @@ git+https://gerrit.opnfv.org/gerrit/sdnvpn#egg=sdnvpn
 git+https://gerrit.opnfv.org/gerrit/securityscanning#egg=securityscanning
 git+https://gerrit.opnfv.org/gerrit/sfc#egg=sfc
 -e git+https://gerrit.opnfv.org/gerrit/promise#egg=promise
--e git+https://github.com/openstack/refstack-client#egg=refstack-client
+-e git+https://gerrit.opnfv.org/gerrit/doctor#egg=doctor-test
+git+https://gerrit.opnfv.org/gerrit/domino#egg=domino
 cloudify-rest-client===4.0
 iniparse===0.4
 openbaton-cli===2.2.1b7
@@ -14,4 +15,4 @@ robotframework-httplibrary===0.4.2
 robotframework-requests===0.4.7
 robotframework-sshlibrary===2.1.3;python_version=='2.7'
 IPy===0.83
--e git+https://github.com/openstack/requirements@stable/ocata#egg=openstack-requirements
+os-faults===0.1.10