Extracted all global parameters into functest_constants.py 19/24619/19
authorhelenyao <yaohelan@huawei.com>
Mon, 21 Nov 2016 11:50:06 +0000 (06:50 -0500)
committerjose.lausuch <jose.lausuch@ericsson.com>
Thu, 24 Nov 2016 14:14:45 +0000 (15:14 +0100)
JIRA: FUNCTEST-533

1. Extracted all global variables into functest_constants.py and updated all affected areas accordingly
2. Used os.path.join to replace '/'  to come up with the path for better cross-platform support and improve the path accuracy
3. Removed unused variables
4. Updated the hardcoded path in Dockerfile by using variable reference
5. Removed "/" ending from all path variables
6. Updated the unit test

Change-Id: Ib30a81d1f0c83fbaef042d63c187c27bd18301bb
Signed-off-by: helenyao <yaohelan@huawei.com>
51 files changed:
docker/Dockerfile
docker/requirements.pip
docs/configguide/configguide.rst
docs/devguide/index.rst
docs/userguide/runfunctest.rst
docs/userguide/troubleshooting.rst
functest/ci/__init__.py [changed mode: 0644->0755]
functest/ci/check_os.sh [changed mode: 0644->0755]
functest/ci/config_functest.yaml [changed mode: 0644->0755]
functest/ci/config_patch.yaml [changed mode: 0644->0755]
functest/ci/exec_test.sh
functest/ci/generate_report.py [changed mode: 0644->0755]
functest/ci/prepare_env.py [changed mode: 0644->0755]
functest/ci/run_tests.py
functest/ci/testcases.yaml [changed mode: 0644->0755]
functest/ci/tier_builder.py [changed mode: 0644->0755]
functest/ci/tier_handler.py [changed mode: 0644->0755]
functest/cli/cli_base.py
functest/cli/commands/cli_env.py
functest/cli/commands/cli_os.py
functest/cli/commands/cli_testcase.py
functest/cli/commands/cli_tier.py
functest/core/TestCasesBase.py
functest/opnfv_tests/Controllers/ODL/OpenDaylightTesting.py
functest/opnfv_tests/Controllers/ONOS/Sfc/Sfc.py
functest/opnfv_tests/Controllers/ONOS/Teston/adapters/environment.py
functest/opnfv_tests/Controllers/ONOS/Teston/adapters/foundation.py
functest/opnfv_tests/Controllers/ONOS/Teston/onosfunctest.py
functest/opnfv_tests/OpenStack/examples/create_instance_and_ip.py
functest/opnfv_tests/OpenStack/rally/run_rally-cert.py
functest/opnfv_tests/OpenStack/tempest/gen_tempest_conf.py
functest/opnfv_tests/OpenStack/tempest/run_tempest.py
functest/opnfv_tests/features/copper.py
functest/opnfv_tests/features/doctor.py
functest/opnfv_tests/features/domino.py
functest/opnfv_tests/features/multisite.py
functest/opnfv_tests/features/promise.py
functest/opnfv_tests/security_scan/connect.py
functest/opnfv_tests/security_scan/scripts/internet_check.py
functest/opnfv_tests/security_scan/security_scan.py
functest/opnfv_tests/vnf/vIMS/vIMS.py
functest/opnfv_tests/vnf/vRNC/parser.py
functest/tests/unit/core/test_base.py
functest/tests/unit/odl/test_odl.py
functest/tests/unit/utils/test_utils.py
functest/utils/functest_constants.py [new file with mode: 0644]
functest/utils/functest_utils.py
functest/utils/functest_vacation.py
functest/utils/openstack_clean.py
functest/utils/openstack_snapshot.py
run_unit_tests.sh

index 8d8bc04..9da04fd 100644 (file)
@@ -12,7 +12,7 @@
 #    $ docker run -t -i \
 #      -e "INSTALLER_TYPE=fuel|apex|compass|joid \
 #      -e "INSTALLER_IP=10.20.0.2" \
-#      -v $(pwd)/config_functest.yaml:/home/opnfv/repos/functest/ci/config_functest.yaml
+#      -v $(pwd)/config_functest.yaml:/home/opnfv/repos/functest/functest/ci/config_functest.yaml
 #      opnfv/functest /bin/bash
 #
 # NOTE: providing config_functest.yaml is optional. If not provided, it will
@@ -28,6 +28,7 @@ FROM ubuntu:14.04
 MAINTAINER Jose Lausuch <jose.lausuch@ericsson.com>
 LABEL version="0.1" description="OPNFV Functest Docker container"
 
+# Environment variables
 ARG BRANCH=master
 ARG TEMPEST_TAG=12.2.0
 ARG RALLY_TAG=0.7.0
@@ -35,13 +36,24 @@ ARG ODL_TAG=release/beryllium-sr3
 ARG OPENSTACK_TAG=stable/mitaka
 ARG KINGBIRD_TAG=0.2.2
 ARG VIMS_TAG=stable
+ARG REPOS_DIR=/home/opnfv/repos
+ARG FUNCTEST_BASE_DIR=/home/opnfv/functest
+ARG FUNCTEST_CONF_DIR=${FUNCTEST_BASE_DIR}/conf
+ARG FUNCTEST_DATA_DIR=${FUNCTEST_BASE_DIR}/data
+ARG FUNCTEST_RESULTS_DIR=${FUNCTEST_BASE_DIR}/results
+ARG FUNCTEST_REPO_DIR=${REPOS_DIR}/functest
+ARG FUNCTEST_TEST_DIR=${FUNCTEST_REPO_DIR}/functest/opnfv_tests
+
+# Environment variables
 ENV HOME /home/opnfv
-ENV repos_dir /home/opnfv/repos
-ENV creds /home/opnfv/functest/conf/openstack.creds
+ENV CONFIG_FUNCTEST_YAML ${FUNCTEST_REPO_DIR}/functest/ci/config_functest.yaml
+ENV REPOS_DIR ${HOME}/repos
+ENV creds ${FUNCTEST_CONF_DIR}/openstack.creds
 ENV TERM xterm
 ENV COLORTERM gnome-terminal
-ENV CONFIG_FUNCTEST_YAML /home/opnfv/repos/functest/functest/ci/config_functest.yaml
-WORKDIR /home/opnfv
+
+
+WORKDIR ${HOME}
 
 # Packaged dependencies
 RUN apt-get update && apt-get install -y \
@@ -64,95 +76,94 @@ libgmp3-dev \
 libxml2-dev \
 libffi-dev \
 crudini \
-ruby-dev \
+ruby1.9.1-dev \
 --no-install-recommends
 
 RUN pip install --upgrade pip
 
-RUN mkdir -p ${repos_dir}
-RUN mkdir -p /home/opnfv/functest/results
-RUN mkdir -p /home/opnfv/functest/conf
+RUN mkdir -p ${REPOS_DIR}
+RUN mkdir -p ${FUNCTEST_BASE_DIR}/results
+RUN mkdir -p ${FUNCTEST_BASE_DIR}/conf
 RUN mkdir -p /root/.ssh
 RUN chmod 700 /root/.ssh
 
 RUN git config --global http.sslVerify false
 
 # OPNFV repositories
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/functest ${repos_dir}/functest
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/copper ${repos_dir}/copper
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/moon ${repos_dir}/moon
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/sdnvpn ${repos_dir}/sdnvpn
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/domino ${repos_dir}/domino
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/parser ${repos_dir}/parser
-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/ovno ${repos_dir}/ovno
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/promise ${repos_dir}/promise
-RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/sfc ${repos_dir}/sfc
-RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/securityscanning ${repos_dir}/securityscanning
-RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${repos_dir}/releng
-
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/functest ${REPOS_DIR}/functest
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/copper ${REPOS_DIR}/copper
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/moon ${REPOS_DIR}/moon
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/sdnvpn ${REPOS_DIR}/sdnvpn
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/domino ${REPOS_DIR}/domino
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/parser ${REPOS_DIR}/parser
+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/ovno ${REPOS_DIR}/ovno
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/promise ${REPOS_DIR}/promise
+RUN git clone --depth 1 -b $BRANCH https://gerrit.opnfv.org/gerrit/sfc ${REPOS_DIR}/sfc
+RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/securityscanning ${REPOS_DIR}/securityscanning
+RUN git clone --depth 1 https://gerrit.opnfv.org/gerrit/releng ${REPOS_DIR}/releng
 
 # OpenStack repositories
-RUN git clone --depth 1 -b $OPENSTACK_TAG https://github.com/openstack/networking-bgpvpn ${repos_dir}/bgpvpn
-RUN git clone --depth 1 -b $KINGBIRD_TAG https://github.com/openstack/kingbird.git ${repos_dir}/kingbird
-RUN git clone --depth 1 -b $RALLY_TAG https://github.com/openstack/rally.git ${repos_dir}/rally
-RUN git clone --depth 1 -b $TEMPEST_TAG https://github.com/openstack/tempest.git ${repos_dir}/tempest
+RUN git clone --depth 1 -b $OPENSTACK_TAG https://github.com/openstack/networking-bgpvpn ${REPOS_DIR}/bgpvpn
+#RUN git clone --depth 1 -b $KINGBIRD_TAG https://github.com/openstack/kingbird.git ${REPOS_DIR}/kingbird
+RUN git clone --depth 1 -b $RALLY_TAG https://github.com/openstack/rally.git ${REPOS_DIR}/rally
+RUN git clone --depth 1 -b $TEMPEST_TAG https://github.com/openstack/tempest.git ${REPOS_DIR}/tempest
 
 # other repositories
-RUN git clone --depth 1 -b $ODL_TAG https://git.opendaylight.org/gerrit/p/integration/test.git ${repos_dir}/odl_test
-RUN git clone --depth 1 -b $VIMS_TAG https://github.com/boucherv-orange/clearwater-live-test ${repos_dir}/vims-test
-RUN git clone --depth 1 https://github.com/wuwenbin2/OnosSystemTest.git ${repos_dir}/onos
+RUN git clone --depth 1 -b $ODL_TAG https://git.opendaylight.org/gerrit/p/integration/test.git ${REPOS_DIR}/odl_test
+RUN git clone --depth 1 -b $VIMS_TAG https://github.com/boucherv-orange/clearwater-live-test ${REPOS_DIR}/vims-test
+RUN git clone --depth 1 https://github.com/wuwenbin2/OnosSystemTest.git ${REPOS_DIR}/onos
 
-RUN pip install -r ${repos_dir}/functest/docker/requirements.pip
-RUN cd ${repos_dir}/functest && pip install .
-RUN pip install -r ${repos_dir}/rally/requirements.txt
-RUN pip install -r ${repos_dir}/tempest/requirements.txt
+RUN pip install -r ${FUNCTEST_REPO_DIR}/docker/requirements.pip
+RUN cd ${FUNCTEST_REPO_DIR} && pip install .
+RUN pip install -r ${REPOS_DIR}/rally/requirements.txt
+RUN pip install -r ${REPOS_DIR}/tempest/requirements.txt
 
-RUN find ${repos_dir}/functest -name "*.py" \
+RUN find ${FUNCTEST_REPO_DIR} -name "*.py" \
     -not -path *unit_tests* |xargs grep __main__ |cut -d\: -f 1 |xargs chmod -c 755
-RUN find ${repos_dir}/functest -name "*.sh" |xargs grep \#\! |cut -d\:  -f 1 |xargs chmod -c 755
+RUN find ${FUNCTEST_REPO_DIR} -name "*.sh" |xargs grep \#\! |cut -d\:  -f 1 |xargs chmod -c 755
 
-RUN /bin/bash ${repos_dir}/parser/tests/parser_install.sh ${repos_dir}
-RUN ${repos_dir}/rally/install_rally.sh --yes
+RUN /bin/bash ${REPOS_DIR}/parser/tests/parser_install.sh ${REPOS_DIR}
+RUN ${REPOS_DIR}/rally/install_rally.sh --yes
 
-ADD http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img /home/opnfv/functest/data/
-ADD http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-lxc.tar.gz /home/opnfv/functest/data/
-ADD http://205.177.226.237:9999/onosfw/firewall_block_image.img /home/opnfv/functest/data/
+ADD http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img ${FUNCTEST_BASE_DIR}/data/
+ADD http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-lxc.tar.gz ${FUNCTEST_BASE_DIR}/data/
+ADD http://205.177.226.237:9999/onosfw/firewall_block_image.img ${FUNCTEST_BASE_DIR}/data/
 
 RUN gpg --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
 RUN curl -L https://get.rvm.io | bash -s stable
 
 # SNAPS integration
-RUN git clone --depth 1 https://gerrit.cablelabs.com/snaps-provisioning ${repos_dir}/snaps
-RUN pip install -e ${repos_dir}/snaps/
+RUN git clone --depth 1 https://gerrit.cablelabs.com/snaps-provisioning ${REPOS_DIR}/snaps
+RUN pip install -e ${REPOS_DIR}/snaps/
 
-RUN /bin/bash -c ". /home/opnfv/repos/sfc/tests/functest/odl-sfc/tacker_client_install.sh"
-RUN cd ${repos_dir}/bgpvpn && pip install .
-#RUN cd ${repos_dir}/kingbird && pip install -e .
-RUN cd ${repos_dir}/moon/moonclient/ && python setup.py install
+RUN /bin/bash -c ". ${REPOS_DIR}/sfc/tests/functest/odl-sfc/tacker_client_install.sh"
+RUN cd ${REPOS_DIR}/bgpvpn && pip install .
+#RUN cd ${REPOS_DIR}/kingbird && pip install -e .
+RUN cd ${REPOS_DIR}/moon/moonclient/ && python setup.py install
 
 RUN /bin/bash -c ". /etc/profile.d/rvm.sh \
-    && cd /home/opnfv/repos/vims-test \
+    && cd ${REPOS_DIR}/vims-test \
     && rvm autolibs enable"
 RUN /bin/bash -c ". /etc/profile.d/rvm.sh \
-    && cd /home/opnfv/repos/vims-test \
+    && cd ${REPOS_DIR}/vims-test \
     && rvm install 1.9.3"
 RUN /bin/bash -c ". /etc/profile.d/rvm.sh \
-    && cd /home/opnfv/repos/vims-test \
+    && cd ${REPOS_DIR}/vims-test \
     && rvm use 1.9.3"
 RUN /bin/bash -c ". /etc/profile.d/rvm.sh \
-    && cd /home/opnfv/repos/vims-test \
+    && cd ${REPOS_DIR}/vims-test \
     && bundle install"
 
 RUN sh -c 'curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -'
 RUN sudo apt-get install -y nodejs
-RUN cd ${repos_dir}/promise && sudo npm -g install npm@latest
-RUN cd ${repos_dir}/promise/source && npm install
+RUN cd ${REPOS_DIR}/promise && sudo npm -g install npm@latest
+RUN cd ${REPOS_DIR}/promise/source && npm install
 
 RUN echo "set nocompatible \n\
 set backspace=2" \
->> /home/opnfv/.vimrc
-RUN echo set nocompatible >> /home/opnfv/.exrc
+>> ${HOME}/.vimrc
+RUN echo set nocompatible >> ${HOME}/.exrc
 RUN echo "alias ll='ls -lh' \n\
-. /home/opnfv/repos/functest/functest/cli/functest-complete.sh" \
->> /home/opnfv/.bashrc
+. ${FUNCTEST_REPO_DIR}/functest/cli/functest-complete.sh" \
+>> ${HOME}/.bashrc
index ed941bc..4e79522 100644 (file)
@@ -28,4 +28,4 @@ paramiko==1.16.0
 subprocess32
 shyaml
 dnspython
-Pillow==3.3.0
+Pillow==3.3.0
\ No newline at end of file
index 4ef673c..ea5b01e 100644 (file)
@@ -74,7 +74,7 @@ executing the following sequence
   #. Log in to container and execute the following command. Replace
      the IP with installer address after the "-a" parameter::
 
-       $repos_dir/releng/utils/fetch_os_creds.sh \
+       $REPOS_DIR/releng/utils/fetch_os_creds.sh \
        -d /home/opnfv/functest/conf/openstack.creds \
        -i fuel \
        -a 10.20.0.2 \
index cab9ec3..6b3e1f0 100644 (file)
@@ -785,7 +785,7 @@ Dockerfile
 This file lists the repositories (internal or external) to be cloned in
 the Functest container. You can also add external packages::
 
- RUN git clone https://gerrit.opnfv.org/gerrit/<your project> ${repos_dir}/<your project>
+ RUN git clone https://gerrit.opnfv.org/gerrit/<your project> ${REPOS_DIR}/<your project>
 
 testcases.yaml
 --------------
index f3da540..a6a2c17 100644 (file)
@@ -264,13 +264,13 @@ Example::
 
 Functest includes a cleaning mechanism in order to remove all the OpenStack
 resources except those present before running any test. The script
-*$repos_dir/functest/utils/generate_defaults.py* is called once when setting up
+*$REPOS_DIR/functest/functest/utils/generate_defaults.py* is called once when setting up
 the Functest environment (i.e. CLI command 'functest env prepare') to snapshot
 all the OpenStack resources (images, networks, volumes, security groups, tenants,
 users) so that an eventual cleanup does not remove any of these defaults.
 
 The script **clean_openstack.py** which is located in
-*$repos_dir/functest/utils/* is normally called after a test execution. It is
+*$REPOS_DIR/functest/functest/utils/* is normally called after a test execution. It is
 in charge of cleaning the OpenStack resources that are not specified in the
 defaults file generated previously which is stored in
 */home/opnfv/functest/conf/os_defaults.yaml* in the Functest docker container.
@@ -289,7 +289,7 @@ full Functest execution.
 Although the Functest CLI provides an easy way to run any test, it is possible to
 do a direct call to the desired test script. For example:
 
-    python $repos_dir/functest/testcases/OpenStack/vPing/vPing_ssh.py -d
+    python $REPOS_DIR/functest/functest/opnfv_tests/OpenStack/vPing/vPing_ssh.py -d
 
 
 Automated testing
@@ -325,7 +325,7 @@ variables:
    * mode = (ha|noha)
 
 The constraints per test case are defined in the Functest configuration file
-*/home/opnfv/repos/functest/ci/testcases.yaml*::
+*/home/opnfv/repos/functest/functest/ci/testcases.yaml*::
 
  tiers:
     -
index dbbcc5d..bf94935 100644 (file)
@@ -44,8 +44,8 @@ These test cases can be run inside the container, using new Functest CLI as foll
 
 The Functest CLI is designed to route a call to the corresponding internal
 python scripts, located in paths:
-*$repos_dir/functest/testcases/vPing/CI/libraries/vPing_ssh.py* and
-*$repos_dir/functest/testcases/vPing/CI/libraries/vPing_userdata.py*
+*$REPOS_DIR/functest/functest/opnfv_tests/vPing/CI/libraries/vPing_ssh.py* and
+*$REPOS_DIR/functest/functest/opnfv_tests/vPing/CI/libraries/vPing_userdata.py*
 
 Notes:
   #. In this Colorado Funtest Userguide, the use of the Functest CLI is
@@ -125,7 +125,7 @@ This test case creates a floating IP on the external network and assigns it to
 the second instance **opnfv-vping-2**. The purpose of this is to establish
 a SSH connection to that instance and SCP a script that will ping the first
 instance. This script is located in the repository under
-*$repos_dir/functest/testcases/OpenStack/vPing/ping.sh* and takes an IP as
+*$REPOS_DIR/functest/functest/opnfv_tests/OpenStack/vPing/ping.sh* and takes an IP as
 a parameter. When the SCP is completed, the test will do an SSH call to that script
 inside the second instance. Some problems can happen here::
 
@@ -263,7 +263,7 @@ lead to errors in Rally as well.
 It is possible to run only one Rally scenario, instead of the whole suite.
 To do that, call the alternative python script as follows::
 
-  python $repos_dir/functest/testcases/OpenStack/rally/run_rally-cert.py -h
+  python $REPOS_DIR/functest/functest/opnfv_tests/OpenStack/rally/run_rally-cert.py -h
   usage: run_rally-cert.py [-h] [-d] [-r] [-s] [-v] [-n] test_name
 
   positional arguments:
@@ -282,7 +282,7 @@ To do that, call the alternative python script as follows::
 
 For example, to run the Glance scenario with debug information::
 
-  python $repos_dir/functest/testcases/OpenStack/rally/run_rally-cert.py -d glance
+  python $REPOS_DIR/functest/functest/opnfv_tests/OpenStack/rally/run_rally-cert.py -d glance
 
 Possible scenarios are:
  * authenticate
@@ -297,7 +297,7 @@ Possible scenarios are:
  * vm
 
 To know more about what those scenarios are doing, they are defined in directory:
-*$repos_dir/functest/testcases/OpenStack/rally/scenario*
+*$REPOS_DIR/functest/functest/opnfv_tests/OpenStack/rally/scenario*
 For more info about Rally scenario definition please refer to the Rally official
 documentation. `[3]`_
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index de01948..a19139c
-general:
-    directories:
-        # Relative to the path where the repo is cloned:
-        dir_vping:         functest/opnfv_tests/OpenStack/vPing/
-        dir_odl:           functest/opnfv_tests/Controllers/ODL/
-        dir_rally:         functest/opnfv_tests/OpenStack/rally/
-        dir_tempest_cases: functest/opnfv_tests/OpenStack/tempest/custom_tests/
-        dir_vIMS:          functest/opnfv_tests/vnf/vIMS/
-        dir_onos:          functest/opnfv_tests/Controllers/ONOS/Teston/
-        dir_onos_sfc:      functest/opnfv_tests/Controllers/ONOS/Sfc/
-
-        # Absolute path
-        dir_repos:          /home/opnfv/repos
-        dir_repo_functest:  /home/opnfv/repos/functest
-        dir_repo_rally:     /home/opnfv/repos/rally
-        dir_repo_tempest:   /home/opnfv/repos/tempest
-        dir_repo_releng:    /home/opnfv/repos/releng
-        dir_repo_vims_test: /home/opnfv/repos/vims-test
-        dir_repo_bgpvpn:    /home/opnfv/repos/bgpvpn
-        dir_repo_onos:      /home/opnfv/repos/onos
-        dir_repo_promise:   /home/opnfv/repos/promise
-        dir_repo_doctor:    /home/opnfv/repos/doctor
-        dir_repo_copper:    /home/opnfv/repos/copper
-        dir_repo_ovno:      /home/opnfv/repos/ovno
-        dir_repo_parser:    /home/opnfv/repos/parser
-        dir_repo_domino:    /home/opnfv/repos/domino
-        dir_functest:       /home/opnfv/functest
-        dir_results:        /home/opnfv/functest/results
-        dir_functest_conf:  /home/opnfv/functest/conf
-        dir_rally_res:      /home/opnfv/functest/results/rally/
-        dir_functest_data:  /home/opnfv/functest/data
-        dir_vIMS_data:      /home/opnfv/functest/data/vIMS
-        dir_rally_inst:     /home/opnfv/.rally
-
-    openstack:
-        snapshot_file: /home/opnfv/functest/conf/openstack_snapshot.yaml
-
-        image_name: Cirros-0.3.4
-        image_file_name:  cirros-0.3.4-x86_64-disk.img
-        image_disk_format:  qcow2
-
-        flavor_name: opnfv_flavor
-        flavor_ram: 512
-        flavor_disk: 1
-        flavor_vcpus: 1
-
-        # Private network for functest. Will be created by config_functest.py
-        neutron_private_net_name: functest-net
-        neutron_private_subnet_name: functest-subnet
-        neutron_private_subnet_cidr: 192.168.120.0/24
-        neutron_private_subnet_start: 192.168.120.2
-        neutron_private_subnet_end: 192.168.120.254
-        neutron_private_subnet_gateway: 192.168.120.254
-        neutron_router_name: functest-router
-
-healthcheck:
-    disk_image: /home/opnfv/functest/data/cirros-0.3.4-x86_64-disk.img
-    disk_format: qcow2
-    wait_time: 60
-
-vping:
-    ping_timeout:   200
-    vm_flavor: m1.tiny # adapt to your environment
-    vm_name_1: opnfv-vping-1
-    vm_name_2: opnfv-vping-2
-    image_name: functest-vping
-    vping_private_net_name: vping-net
-    vping_private_subnet_name: vping-subnet
-    vping_private_subnet_cidr: 192.168.130.0/24
-    vping_router_name: vping-router
-    vping_sg_name: vPing-sg
-    vping_sg_descr: Security group for vPing test case
-
-onos_sfc:
-    image_name: TestSfcVm
-    image_file_name: firewall_block_image.img
-
-tempest:
-    identity:
-        tenant_name: tempest
-        tenant_description: Tenant for Tempest test suite
-        user_name: tempest
-        user_password: tempest
-    validation:
-        ssh_timeout: 130
-    private_net_name: tempest-net
-    private_subnet_name: tempest-subnet
-    private_subnet_cidr: 192.168.150.0/24
-    router_name: tempest-router
-    use_custom_images: False
-    use_custom_flavors: False
-
-rally:
-    deployment_name: opnfv-rally
-    network_name: rally-net
-    subnet_name: rally-subnet
-    subnet_cidr: 192.168.140.0/24
-    router_name: rally-router
-
-vIMS:
-    general:
-        tenant_name: vIMS
-        tenant_description: vIMS Functionality Testing
-        images:
-            ubuntu:
-                image_url: 'http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img'
-                image_name: ubuntu_14.04
-            centos:
-                image_url: 'http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1510.qcow2'
-                image_name: centos_7
-    cloudify:
-        blueprint:
-            url: https://github.com/boucherv-orange/cloudify-manager-blueprints.git
-            branch: "3.3.1-build"
-        requierments:
-            ram_min: 3000
-            os_image: centos_7
-        inputs:
-            keystone_username: ""
-            keystone_password: ""
-            keystone_tenant_name: ""
-            keystone_url: ""
-            manager_public_key_name: 'manager-kp'
-            agent_public_key_name: 'agent-kp'
-            image_id: ""
-            flavor_id: "3"
-            external_network_name: ""
-            ssh_user: centos
-            agents_user: ubuntu
-    clearwater:
-        blueprint:
-            file_name: 'openstack-blueprint.yaml'
-            name: "clearwater-opnfv"
-            destination_folder: "opnfv-cloudify-clearwater"
-            url: 'https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater.git'
-            branch: "stable"
-        deployment-name: 'clearwater-opnfv'
-        requierments:
-            ram_min: 1700
-            os_image: ubuntu_14.04
-        inputs:
-            image_id: ''
-            flavor_id: ''
-            agent_user: 'ubuntu'
-            external_network_name: ''
-            public_domain: clearwater.opnfv
-ONOS:
-    general:
-        onosbench_username: 'root'
-        onosbench_password: 'root'
-        onoscli_username: 'root'
-        onoscli_password: 'root'
-        runtimeout: 300
-    environment:
-        OCT: '10.20.0.1'
-        OC1: '10.20.0.7'
-        OC2: '10.20.0.7'
-        OC3: '10.20.0.7'
-        OCN: '10.20.0.4'
-        OCN2: '10.20.0.5'
-        installer_master: '10.20.0.2'
-        installer_master_username: 'root'
-        installer_master_password: 'r00tme'
-multisite:
-    fuel_environment:
-        installer_username: 'root'
-        installer_password: 'r00tme'
-    compass_environment:
-        installer_username: 'root'
-        installer_password: 'root'
-        multisite_controller_ip: '10.1.0.50'
-promise:
-    tenant_name: promise
-    tenant_description: promise Functionality Testing
-    user_name: promiser
-    user_pwd: test
-    image_name: promise-img
-    flavor_name: promise-flavor
-    flavor_vcpus: 1
-    flavor_ram: 128
-    flavor_disk: 0
-    network_name: promise-net
-    subnet_name: promise-subnet
-    subnet_cidr: 192.168.121.0/24
-    router_name: promise-router
-
-example:
-    example_vm_name: example-vm
-    example_flavor: m1.small
-    example_image_name: functest-example-vm
-    example_private_net_name: example-net
-    example_private_subnet_name: example-subnet
-    example_private_subnet_cidr: 192.168.170.0/24
-    example_router_name: example-router
-    example_sg_name: example-sg
-    example_sg_descr: Example Security group
-
-results:
-    test_db_url: http://testresults.opnfv.org/test/api/v1
+general:\r
+    directories:\r
+        # Relative to the path where the repo is cloned:\r
+        dir_vping:         functest/opnfv_tests/OpenStack/vPing\r
+        dir_odl:           functest/opnfv_tests/Controllers/ODL\r
+        dir_rally:         functest/opnfv_tests/OpenStack/rally\r
+        dir_tempest_cases: functest/opnfv_tests/OpenStack/tempest/custom_tests\r
+        dir_vIMS:          functest/opnfv_tests/vnf/vIMS\r
+        dir_onos:          functest/opnfv_tests/Controllers/ONOS/Teston\r
+        dir_onos_sfc:      functest/opnfv_tests/Controllers/ONOS/Sfc\r
+\r
+        # Absolute path\r
+        dir_home:           /home/opnfv\r
+        dir_repos:          /home/opnfv/repos\r
+        dir_repo_functest:  /home/opnfv/repos/functest\r
+        dir_repo_rally:     /home/opnfv/repos/rally\r
+        dir_repo_tempest:   /home/opnfv/repos/tempest\r
+        dir_repo_releng:    /home/opnfv/repos/releng\r
+        dir_repo_vims_test: /home/opnfv/repos/vims-test\r
+        dir_repo_sdnvpn:    /home/opnfv/repos/sdnvpn\r
+        dir_repo_sfc:       /home/opnfv/repos/sfc\r
+        dir_repo_onos:      /home/opnfv/repos/onos\r
+        dir_repo_promise:   /home/opnfv/repos/promise\r
+        dir_repo_doctor:    /home/opnfv/repos/doctor\r
+        dir_repo_copper:    /home/opnfv/repos/copper\r
+        dir_repo_ovno:      /home/opnfv/repos/ovno\r
+        dir_repo_parser:    /home/opnfv/repos/parser\r
+        dir_repo_domino:    /home/opnfv/repos/domino\r
+        dir_functest:       /home/opnfv/functest\r
+        dir_functest_test:  /home/opnfv/repos/functest/functest/opnfv_tests\r
+        dir_results:        /home/opnfv/functest/results\r
+        dir_functest_conf:  /home/opnfv/functest/conf\r
+        dir_functest_data:  /home/opnfv/functest/data\r
+        dir_vIMS_data:      /home/opnfv/functest/data/vIMS/\r
+        dir_rally_inst:     /home/opnfv/.rally\r
+\r
+    openstack:\r
+        creds: /home/opnfv/functest/conf/openstack.creds\r
+        snapshot_file: /home/opnfv/functest/conf/openstack_snapshot.yaml\r
+\r
+        image_name: Cirros-0.3.4\r
+        image_file_name:  cirros-0.3.4-x86_64-disk.img\r
+        image_disk_format:  qcow2\r
+\r
+        flavor_name: opnfv_flavor\r
+        flavor_ram: 512\r
+        flavor_disk: 1\r
+        flavor_vcpus: 1\r
+\r
+        # Private network for functest. Will be created by config_functest.py\r
+        neutron_private_net_name: functest-net\r
+        neutron_private_subnet_name: functest-subnet\r
+        neutron_private_subnet_cidr: 192.168.120.0/24\r
+        neutron_private_subnet_start: 192.168.120.2\r
+        neutron_private_subnet_end: 192.168.120.254\r
+        neutron_private_subnet_gateway: 192.168.120.254\r
+        neutron_router_name: functest-router\r
+\r
+    functest:\r
+        testcases_yaml: /home/opnfv/repos/functest/functest/ci/testcases.yaml\r
+\r
+healthcheck:\r
+    disk_image: /home/opnfv/functest/data/cirros-0.3.4-x86_64-disk.img\r
+    disk_format: qcow2\r
+    wait_time: 60\r
+\r
+vping:\r
+    ping_timeout:   200\r
+    vm_flavor: m1.tiny # adapt to your environment\r
+    vm_name_1: opnfv-vping-1\r
+    vm_name_2: opnfv-vping-2\r
+    image_name: functest-vping\r
+    vping_private_net_name: vping-net\r
+    vping_private_subnet_name: vping-subnet\r
+    vping_private_subnet_cidr: 192.168.130.0/24\r
+    vping_router_name: vping-router\r
+    vping_sg_name: vPing-sg\r
+    vping_sg_descr: Security group for vPing test case\r
+\r
+onos_sfc:\r
+    image_base_url: http://artifacts.opnfv.org/sfc/demo\r
+    image_name: TestSfcVm\r
+    image_file_name: firewall_block_image.img\r
+\r
+tempest:\r
+    identity:\r
+        tenant_name: tempest\r
+        tenant_description: Tenant for Tempest test suite\r
+        user_name: tempest\r
+        user_password: tempest\r
+    validation:\r
+        ssh_timeout: 130\r
+    private_net_name: tempest-net\r
+    private_subnet_name: tempest-subnet\r
+    private_subnet_cidr: 192.168.150.0/24\r
+    router_name: tempest-router\r
+    use_custom_images: False\r
+    use_custom_flavors: False\r
+\r
+rally:\r
+    deployment_name: opnfv-rally\r
+    network_name: rally-net\r
+    subnet_name: rally-subnet\r
+    subnet_cidr: 192.168.140.0/24\r
+    router_name: rally-router\r
+\r
+vIMS:\r
+    general:\r
+        tenant_name: vIMS\r
+        tenant_description: vIMS Functionality Testing\r
+        images:\r
+            ubuntu:\r
+                image_url: http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img\r
+                image_name: ubuntu_14.04\r
+            centos:\r
+                image_url: http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud-1510.qcow2\r
+                image_name: centos_7\r
+    cloudify:\r
+        blueprint:\r
+            url: https://github.com/boucherv-orange/cloudify-manager-blueprints.git\r
+            branch: "3.3.1-build"\r
+        requierments:\r
+            ram_min: 3000\r
+            os_image: centos_7\r
+        inputs:\r
+            keystone_username: ""\r
+            keystone_password: ""\r
+            keystone_tenant_name: ""\r
+            keystone_url: ""\r
+            manager_public_key_name: 'manager-kp'\r
+            agent_public_key_name: 'agent-kp'\r
+            image_id: ""\r
+            flavor_id: "3"\r
+            external_network_name: ""\r
+            ssh_user: centos\r
+            agents_user: ubuntu\r
+    clearwater:\r
+        blueprint:\r
+            file_name: 'openstack-blueprint.yaml'\r
+            name: "clearwater-opnfv"\r
+            destination_folder: "opnfv-cloudify-clearwater"\r
+            url: https://github.com/Orange-OpenSource/opnfv-cloudify-clearwater.git\r
+            branch: "stable"\r
+        deployment-name: 'clearwater-opnfv'\r
+        requierments:\r
+            ram_min: 1700\r
+            os_image: ubuntu_14.04\r
+        inputs:\r
+            image_id: ''\r
+            flavor_id: ''\r
+            agent_user: 'ubuntu'\r
+            external_network_name: ''\r
+            public_domain: clearwater.opnfv\r
+ONOS:\r
+    general:\r
+        onosbench_username: 'root'\r
+        onosbench_password: 'root'\r
+        onoscli_username: 'root'\r
+        onoscli_password: 'root'\r
+        runtimeout: 300\r
+    environment:\r
+        OCT: '10.20.0.1'\r
+        OC1: '10.20.0.7'\r
+        OC2: '10.20.0.7'\r
+        OC3: '10.20.0.7'\r
+        OCN: '10.20.0.4'\r
+        OCN2: '10.20.0.5'\r
+        installer_master: '10.20.0.2'\r
+        installer_master_username: 'root'\r
+        installer_master_password: 'r00tme'\r
+multisite:\r
+    fuel_environment:\r
+        installer_username: 'root'\r
+        installer_password: 'r00tme'\r
+    compass_environment:\r
+        installer_username: 'root'\r
+        installer_password: 'root'\r
+        multisite_controller_ip: '10.1.0.50'\r
+promise:\r
+    tenant_name: promise\r
+    tenant_description: promise Functionality Testing\r
+    user_name: promiser\r
+    user_pwd: test\r
+    image_name: promise-img\r
+    flavor_name: promise-flavor\r
+    flavor_vcpus: 1\r
+    flavor_ram: 128\r
+    flavor_disk: 0\r
+    network_name: promise-net\r
+    subnet_name: promise-subnet\r
+    subnet_cidr: 192.168.121.0/24\r
+    router_name: promise-router\r
+\r
+example:\r
+    example_vm_name: example-vm\r
+    example_flavor: m1.small\r
+    example_image_name: functest-example-vm\r
+    example_private_net_name: example-net\r
+    example_private_subnet_name: example-subnet\r
+    example_private_subnet_cidr: 192.168.170.0/24\r
+    example_router_name: example-router\r
+    example_sg_name: example-sg\r
+    example_sg_descr: Example Security group\r
+\r
+results:\r
+    test_db_url: http://testresults.opnfv.org/test/api/v1\r
old mode 100644 (file)
new mode 100755 (executable)
index f7b96af..a71079e 100644 (file)
@@ -127,18 +127,18 @@ function run_test(){
         "ovno")
             # suite under rewritting for colorado
             # no need to run anything until refactoring done
-            # ${repos_dir}/ovno/Testcases/RunTests.sh
+            # ${REPOS_DIR}/ovno/Testcases/RunTests.sh
         ;;
         "security_scan")
             echo "Sourcing Credentials ${FUNCTEST_CONF_DIR}/stackrc for undercloud .."
             source ${FUNCTEST_CONF_DIR}/stackrc
-            python ${repos_dir}/securityscanning/security_scan.py --config ${repos_dir}/securityscanning/config.ini
+            python ${REPOS_DIR}/securityscanning/security_scan.py --config ${REPOS_DIR}/securityscanning/config.ini
         ;;
         "copper")
             python ${FUNCTEST_TEST_DIR}/features/copper.py $report
         ;;
         "moon")
-            python ${repos_dir}/moon/tests/run_tests.py $report
+            python ${REPOS_DIR}/moon/tests/run_tests.py $report
         ;;
         "multisite")
             python ${FUNCTEST_TEST_DIR}/OpenStack/tempest/gen_tempest_conf.py
@@ -147,7 +147,8 @@ function run_test(){
                 -c ${FUNCTEST_TEST_DIR}/OpenStack/tempest/tempest_multisite.conf
         ;;
         "odl-sfc")
-            ODL_SFC_DIR=${repos_dir}/sfc/tests/functest/odl-sfc
+            ODL_SFC_DIR=${REPOS_DIR}/sfc/tests/functest/odl-sfc
+            # pass FUNCTEST_REPO_DIR inside prepare_odl_sfc.bash
             FUNCTEST_REPO_DIR=${FUNCTEST_REPO_DIR} python ${ODL_SFC_DIR}/prepare_odl_sfc.py || exit $?
             source ${ODL_SFC_DIR}/tackerc
             python ${ODL_SFC_DIR}/sfc.py $report
@@ -196,8 +197,8 @@ done
 
 
 # Source credentials
-echo "Sourcing Credentials ${FUNCTEST_CONF_DIR}/openstack.creds to run the test.."
-source ${FUNCTEST_CONF_DIR}/openstack.creds
+echo "Sourcing Credentials ${creds} to run the test.."
+source ${creds}
 
 # ODL Boron workaround to create additional flow rules to allow port 22 TCP
 if [[ $DEPLOY_SCENARIO == *"odl_l2-sfc"* ]]; then
old mode 100644 (file)
new mode 100755 (executable)
index c934372..9ae9dca
@@ -1,10 +1,10 @@
 import json
-import os
 import re
 import urllib2
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_constants as ft_constants
 
 
 COL_1_LEN = 25
@@ -15,8 +15,15 @@ COL_5_LEN = 75
 
 # If we run from CI (Jenkins) we will push the results to the DB
 # and then we can print the url to the specific test result
-IS_CI_RUN = False
-BUILD_TAG = None
+
+
+class GlobalVariables:
+    IS_CI_RUN = ft_constants.IS_CI_RUN
+    BUILD_TAG = ft_constants.CI_BUILD_TAG
+    INSTALLER = ft_constants.CI_INSTALLER_TYPE
+    CI_LOOP = ft_constants.CI_LOOP
+    SCENARIO = ft_constants.CI_SCENARIO
+
 
 logger = ft_logger.Logger("generate_report").getLogger()
 
@@ -34,7 +41,8 @@ def init(tiers_to_run):
 
 
 def get_results_from_db():
-    url = ft_utils.get_db_url() + '/results?build_tag=' + BUILD_TAG
+    url = ft_utils.get_db_url() + '/results?build_tag=' \
+        + GlobalVariables.BUILD_TAG
     logger.debug("Query to rest api: %s" % url)
     try:
         data = json.load(urllib2.urlopen(url))
@@ -61,7 +69,7 @@ def print_line(w1, w2='', w3='', w4='', w5=''):
            '| ' + w2.ljust(COL_2_LEN - 1) +
            '| ' + w3.ljust(COL_3_LEN - 1) +
            '| ' + w4.ljust(COL_4_LEN - 1))
-    if IS_CI_RUN:
+    if GlobalVariables.IS_CI_RUN:
         str += ('| ' + w5.ljust(COL_5_LEN - 1))
     str += '|\n'
     return str
@@ -69,7 +77,7 @@ def print_line(w1, w2='', w3='', w4='', w5=''):
 
 def print_line_no_columns(str):
     TOTAL_LEN = COL_1_LEN + COL_2_LEN + COL_3_LEN + COL_4_LEN + 2
-    if IS_CI_RUN:
+    if GlobalVariables.IS_CI_RUN:
         TOTAL_LEN += COL_5_LEN + 1
     return ('| ' + str.ljust(TOTAL_LEN) + "|\n")
 
@@ -79,21 +87,16 @@ def print_separator(char="=", delimiter="+"):
            delimiter + char * COL_2_LEN +
            delimiter + char * COL_3_LEN +
            delimiter + char * COL_4_LEN)
-    if IS_CI_RUN:
+    if GlobalVariables.IS_CI_RUN:
         str += (delimiter + char * COL_5_LEN)
     str += '+\n'
     return str
 
 
 def main(args):
-    global BUILD_TAG, IS_CI_RUN
     executed_test_cases = args
 
-    BUILD_TAG = os.getenv("BUILD_TAG")
-    if BUILD_TAG is not None:
-        IS_CI_RUN = True
-
-    if IS_CI_RUN:
+    if GlobalVariables.IS_CI_RUN:
         results = get_results_from_db()
         if results is not None:
             for test in executed_test_cases:
@@ -102,19 +105,15 @@ def main(args):
                              "result": data['result']})
 
     TOTAL_LEN = COL_1_LEN + COL_2_LEN + COL_3_LEN + COL_4_LEN
-    if IS_CI_RUN:
+    if GlobalVariables.IS_CI_RUN:
         TOTAL_LEN += COL_5_LEN
     MID = TOTAL_LEN / 2
 
-    INSTALLER = os.getenv('INSTALLER_TYPE', 'unknown')
-    CI_LOOP = os.getenv('CI_LOOP')
-    SCENARIO = os.getenv('DEPLOY_SCENARIO')
-    CI_LOOP = None
-    if BUILD_TAG is not None:
-        if re.search("daily", BUILD_TAG) is not None:
-            CI_LOOP = "daily"
+    if GlobalVariables.BUILD_TAG is not None:
+        if re.search("daily", GlobalVariables.BUILD_TAG) is not None:
+            GlobalVariables.CI_LOOP = "daily"
         else:
-            CI_LOOP = "weekly"
+            GlobalVariables.CI_LOOP = "weekly"
 
     str = ''
     str += print_separator('=', delimiter="=")
@@ -122,16 +121,20 @@ def main(args):
     str += print_separator('=', delimiter="=")
     str += print_line_no_columns(' ')
     str += print_line_no_columns(" Deployment description:")
-    str += print_line_no_columns("   INSTALLER: %s" % INSTALLER)
-    if SCENARIO is not None:
-        str += print_line_no_columns("   SCENARIO:  %s" % SCENARIO)
-    if BUILD_TAG is not None:
-        str += print_line_no_columns("   BUILD TAG: %s" % BUILD_TAG)
-    if CI_LOOP is not None:
-        str += print_line_no_columns("   CI LOOP:   %s" % CI_LOOP)
+    str += print_line_no_columns("   INSTALLER: %s"
+                                 % GlobalVariables.INSTALLER)
+    if GlobalVariables.SCENARIO is not None:
+        str += print_line_no_columns("   SCENARIO:  %s"
+                                     % GlobalVariables.SCENARIO)
+    if GlobalVariables.BUILD_TAG is not None:
+        str += print_line_no_columns("   BUILD TAG: %s"
+                                     % GlobalVariables.BUILD_TAG)
+    if GlobalVariables.CI_LOOP is not None:
+        str += print_line_no_columns("   CI LOOP:   %s"
+                                     % GlobalVariables.CI_LOOP)
     str += print_line_no_columns(' ')
     str += print_separator('=')
-    if IS_CI_RUN:
+    if GlobalVariables.IS_CI_RUN:
         str += print_line('TEST CASE', 'TIER', 'DURATION', 'RESULT', 'URL')
     else:
         str += print_line('TEST CASE', 'TIER', 'DURATION', 'RESULT')
old mode 100644 (file)
new mode 100755 (executable)
index e5c24cc..246a02a
@@ -25,6 +25,7 @@ import yaml
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
+import functest.utils.functest_constants as ft_constants
 
 actions = ['start', 'check']
 parser = argparse.ArgumentParser()
@@ -38,34 +39,13 @@ args = parser.parse_args()
 logger = ft_logger.Logger("prepare_env").getLogger()
 
 
-""" global variables """
-INSTALLERS = ['fuel', 'compass', 'apex', 'joid']
-CI_INSTALLER_TYPE = ""
-CI_INSTALLER_IP = ""
-CI_SCENARIO = ""
-CI_DEBUG = False
-CONFIG_FUNCTEST_PATH = os.environ["CONFIG_FUNCTEST_YAML"]
+CONFIG_FUNCTEST_PATH = ft_constants.CONFIG_FUNCTEST_YAML
 CONFIG_PATCH_PATH = os.path.join(os.path.dirname(
     CONFIG_FUNCTEST_PATH), "config_patch.yaml")
 
 with open(CONFIG_PATCH_PATH) as f:
     functest_patch_yaml = yaml.safe_load(f)
 
-FUNCTEST_CONF_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_functest_conf')
-
-
-FUNCTEST_DATA_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_functest_data')
-FUNCTEST_RESULTS_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_results')
-DEPLOYMENT_MAME = \
-    ft_utils.get_functest_config('rally.deployment_name')
-TEMPEST_REPO_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_repo_tempest')
-
-ENV_FILE = FUNCTEST_CONF_DIR + "/env_active"
-
 
 def print_separator():
     logger.info("==============================================")
@@ -74,97 +54,97 @@ def print_separator():
 def check_env_variables():
     print_separator()
     logger.info("Checking environment variables...")
-    global CI_INSTALLER_TYPE
-    global CI_INSTALLER_IP
-    global CI_DEBUG
-    global CI_SCENARIO
-    CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
-    CI_INSTALLER_IP = os.getenv('INSTALLER_IP')
-    CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
-    CI_NODE = os.getenv('NODE_NAME')
-    CI_BUILD_TAG = os.getenv('BUILD_TAG')
-    CI_DEBUG = os.getenv('CI_DEBUG')
-
-    if CI_INSTALLER_TYPE is None:
+
+    if ft_constants.CI_INSTALLER_TYPE is None:
         logger.warning("The env variable 'INSTALLER_TYPE' is not defined.")
-        CI_INSTALLER_TYPE = "undefined"
+        ft_constants.CI_INSTALLER_TYPE = "undefined"
     else:
-        if CI_INSTALLER_TYPE not in INSTALLERS:
+        if ft_constants.CI_INSTALLER_TYPE not in ft_constants.INSTALLERS:
             logger.warning("INSTALLER_TYPE=%s is not a valid OPNFV installer. "
                            "Available OPNFV Installers are : %s. "
                            "Setting INSTALLER_TYPE=undefined."
-                           % (CI_INSTALLER_TYPE, INSTALLERS))
-            CI_INSTALLER_TYPE = "undefined"
+                           % (ft_constants.CI_INSTALLER_TYPE,
+                              ft_constants.INSTALLERS))
+            ft_constants.CI_INSTALLER_TYPE = "undefined"
         else:
-            logger.info("    INSTALLER_TYPE=%s" % CI_INSTALLER_TYPE)
+            logger.info("    INSTALLER_TYPE=%s"
+                        % ft_constants.CI_INSTALLER_TYPE)
 
-    if CI_INSTALLER_IP is None:
+    if ft_constants.CI_INSTALLER_IP is None:
         logger.warning("The env variable 'INSTALLER_IP' is not defined. "
                        "It is needed to fetch the OpenStack credentials. "
                        "If the credentials are not provided to the "
                        "container as a volume, please add this env variable "
                        "to the 'docker run' command.")
     else:
-        logger.info("    INSTALLER_IP=%s" % CI_INSTALLER_IP)
+        logger.info("    INSTALLER_IP=%s" % ft_constants.CI_INSTALLER_IP)
 
-    if CI_SCENARIO is None:
+    if ft_constants.CI_SCENARIO is None:
         logger.warning("The env variable 'DEPLOY_SCENARIO' is not defined. "
                        "Setting CI_SCENARIO=undefined.")
-        CI_SCENARIO = "undefined"
+        ft_constants.CI_SCENARIO = "undefined"
     else:
-        logger.info("    DEPLOY_SCENARIO=%s" % CI_SCENARIO)
-    if CI_DEBUG:
-        logger.info("    CI_DEBUG=%s" % CI_DEBUG)
+        logger.info("    DEPLOY_SCENARIO=%s" % ft_constants.CI_SCENARIO)
+    if ft_constants.CI_DEBUG:
+        logger.info("    CI_DEBUG=%s" % ft_constants.CI_DEBUG)
 
-    if CI_NODE:
-        logger.info("    NODE_NAME=%s" % CI_NODE)
+    if ft_constants.CI_NODE:
+        logger.info("    NODE_NAME=%s" % ft_constants.CI_NODE)
 
-    if CI_BUILD_TAG:
-        logger.info("    BUILD_TAG=%s" % CI_BUILD_TAG)
+    if ft_constants.CI_BUILD_TAG:
+        logger.info("    BUILD_TAG=%s" % ft_constants.CI_BUILD_TAG)
+
+    if ft_constants.IS_CI_RUN:
+        logger.info("    IS_CI_RUN=%s" % ft_constants.IS_CI_RUN)
 
 
 def create_directories():
     print_separator()
     logger.info("Creating needed directories...")
-    if not os.path.exists(FUNCTEST_CONF_DIR):
-        os.makedirs(FUNCTEST_CONF_DIR)
-        logger.info("    %s created." % FUNCTEST_CONF_DIR)
+    if not os.path.exists(ft_constants.FUNCTEST_CONF_DIR):
+        os.makedirs(ft_constants.FUNCTEST_CONF_DIR)
+        logger.info("    %s created." % ft_constants.FUNCTEST_CONF_DIR)
     else:
-        logger.debug("   %s already exists." % FUNCTEST_CONF_DIR)
+        logger.debug("   %s already exists."
+                     % ft_constants.FUNCTEST_CONF_DIR)
 
-    if not os.path.exists(FUNCTEST_DATA_DIR):
-        os.makedirs(FUNCTEST_DATA_DIR)
-        logger.info("    %s created." % FUNCTEST_DATA_DIR)
+    if not os.path.exists(ft_constants.FUNCTEST_DATA_DIR):
+        os.makedirs(ft_constants.FUNCTEST_DATA_DIR)
+        logger.info("    %s created." % ft_constants.FUNCTEST_DATA_DIR)
     else:
-        logger.debug("   %s already exists." % FUNCTEST_DATA_DIR)
+        logger.debug("   %s already exists."
+                     % ft_constants.FUNCTEST_DATA_DIR)
 
 
 def source_rc_file():
     print_separator()
     logger.info("Fetching RC file...")
-    rc_file = os.getenv('creds')
-    if rc_file is None:
+
+    if ft_constants.OPENSTACK_CREDS is None:
         logger.warning("The environment variable 'creds' must be set and"
                        "pointing to the local RC file. Using default: "
                        "/home/opnfv/functest/conf/openstack.creds ...")
-        rc_file = "/home/opnfv/functest/conf/openstack.creds"
+        ft_constants.OPENSTACK_CREDS = \
+            "/home/opnfv/functest/conf/openstack.creds"
 
-    if not os.path.isfile(rc_file):
+    if not os.path.isfile(ft_constants.OPENSTACK_CREDS):
         logger.info("RC file not provided. "
                     "Fetching it from the installer...")
-        if CI_INSTALLER_IP is None:
+        if ft_constants.CI_INSTALLER_IP is None:
             logger.error("The env variable CI_INSTALLER_IP must be provided in"
                          " order to fetch the credentials from the installer.")
             sys.exit("Missing CI_INSTALLER_IP.")
-        if CI_INSTALLER_TYPE not in INSTALLERS:
+        if ft_constants.CI_INSTALLER_TYPE not in ft_constants.INSTALLERS:
             logger.error("Cannot fetch credentials. INSTALLER_TYPE=%s is "
                          "not a valid OPNFV installer. Available "
-                         "installers are : %s." % INSTALLERS)
+                         "installers are : %s." % ft_constants.INSTALLERS)
             sys.exit("Wrong INSTALLER_TYPE.")
 
         cmd = ("/home/opnfv/repos/releng/utils/fetch_os_creds.sh "
                "-d %s -i %s -a %s"
-               % (rc_file, CI_INSTALLER_TYPE, CI_INSTALLER_IP))
+               % (ft_constants.OPENSTACK_CREDS,
+                  ft_constants.CI_INSTALLER_TYPE,
+                  ft_constants.CI_INSTALLER_IP))
         logger.debug("Executing command: %s" % cmd)
         p = subprocess.Popen(cmd.split(), stdout=subprocess.PIPE)
         output = p.communicate()[0]
@@ -173,24 +153,39 @@ def source_rc_file():
             logger.error("Failed to fetch credentials from installer.")
             sys.exit(1)
     else:
-        logger.info("RC file provided in %s." % rc_file)
-        if os.path.getsize(rc_file) == 0:
-            logger.error("The file %s is empty." % rc_file)
+        logger.info("RC file provided in %s."
+                    % ft_constants.OPENSTACK_CREDS)
+        if os.path.getsize(ft_constants.OPENSTACK_CREDS) == 0:
+            logger.error("The file %s is empty."
+                         % ft_constants.OPENSTACK_CREDS)
             sys.exit(1)
 
     logger.info("Sourcing the OpenStack RC file...")
-    creds = os_utils.source_credentials(rc_file)
+    creds = os_utils.source_credentials(
+        ft_constants.OPENSTACK_CREDS)
     str = ""
     for key, value in creds.iteritems():
         if re.search("OS_", key):
             str += "\n\t\t\t\t\t\t   " + key + "=" + value
+            if key == 'OS_AUTH_URL':
+                ft_constants.OS_AUTH_URL = value
+            elif key == 'OS_USERNAME':
+                ft_constants.OS_USERNAME = value
+            elif key == 'OS_TENANT_NAME':
+                ft_constants.OS_TENANT_NAME = value
+            elif key == 'OS_PASSWORD':
+                ft_constants.OS_PASSWORD = value
     logger.debug("Used credentials: %s" % str)
+    logger.debug("OS_AUTH_URL:%s" % ft_constants.OS_AUTH_URL)
+    logger.debug("OS_USERNAME:%s" % ft_constants.OS_USERNAME)
+    logger.debug("OS_TENANT_NAME:%s" % ft_constants.OS_TENANT_NAME)
+    logger.debug("OS_PASSWORD:%s" % ft_constants.OS_PASSWORD)
 
 
 def patch_config_file():
     updated = False
     for key in functest_patch_yaml:
-        if key in CI_SCENARIO:
+        if key in ft_constants.CI_SCENARIO:
             new_functest_yaml = dict(ft_utils.merge_dicts(
                 ft_utils.get_functest_yaml(), functest_patch_yaml[key]))
             updated = True
@@ -205,7 +200,7 @@ def patch_config_file():
 def verify_deployment():
     print_separator()
     logger.info("Verifying OpenStack services...")
-    cmd = ("%s/functest/ci/check_os.sh" % ft_utils.FUNCTEST_REPO)
+    cmd = ("%s/functest/ci/check_os.sh" % ft_constants.FUNCTEST_REPO_DIR)
 
     logger.debug("Executing command: %s" % cmd)
     p = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True)
@@ -223,19 +218,21 @@ def install_rally():
     logger.info("Creating Rally environment...")
 
     cmd = "rally deployment destroy opnfv-rally"
-    ft_utils.execute_command(cmd,
-                             error_msg=("Deployment %s does not exist."
-                                        % DEPLOYMENT_MAME), verbose=False)
+    ft_utils.execute_command(cmd, error_msg=(
+        "Deployment %s does not exist."
+        % ft_constants.RALLY_DEPLOYMENT_NAME),
+        verbose=False)
     rally_conf = os_utils.get_credentials_for_rally()
     with open('rally_conf.json', 'w') as fp:
         json.dump(rally_conf, fp)
     cmd = "rally deployment create --file=rally_conf.json --name="
-    cmd += DEPLOYMENT_MAME
+    cmd += ft_constants.RALLY_DEPLOYMENT_NAME
     ft_utils.execute_command(cmd,
                              error_msg="Problem creating Rally deployment")
 
     logger.info("Installing tempest from existing repo...")
-    cmd = ("rally verify install --source " + TEMPEST_REPO_DIR +
+    cmd = ("rally verify install --source " +
+           ft_constants.TEMPEST_REPO_DIR +
            " --system-wide")
     ft_utils.execute_command(cmd,
                              error_msg="Problem installing Tempest.")
@@ -258,11 +255,11 @@ def install_rally():
 
 def check_environment():
     msg_not_active = "The Functest environment is not installed."
-    if not os.path.isfile(ENV_FILE):
+    if not os.path.isfile(ft_constants.ENV_FILE):
         logger.error(msg_not_active)
         sys.exit(1)
 
-    with open(ENV_FILE, "r") as env_file:
+    with open(ft_constants.ENV_FILE, "r") as env_file:
         s = env_file.read()
         if not re.search("1", s):
             logger.error(msg_not_active)
@@ -285,7 +282,7 @@ def main():
         verify_deployment()
         install_rally()
 
-        with open(ENV_FILE, "w") as env_file:
+        with open(ft_constants.ENV_FILE, "w") as env_file:
             env_file.write("1")
 
         check_environment()
@@ -295,5 +292,6 @@ def main():
 
     exit(0)
 
+
 if __name__ == '__main__':
     main()
index 015b584..da9d28a 100644 (file)
@@ -21,6 +21,7 @@ import functest.ci.tier_builder as tb
 import functest.core.TestCasesBase as TestCasesBase
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_constants as ft_constants
 import functest.utils.openstack_clean as os_clean
 import functest.utils.openstack_snapshot as os_snapshot
 import functest.utils.openstack_utils as os_utils
@@ -43,14 +44,17 @@ logger = ft_logger.Logger("run_tests").getLogger()
 
 
 """ global variables """
-EXEC_SCRIPT = ("%s/functest/ci/exec_test.sh" % ft_utils.FUNCTEST_REPO)
-CLEAN_FLAG = True
-REPORT_FLAG = False
-EXECUTED_TEST_CASES = []
+EXEC_SCRIPT = ("%s/functest/ci/exec_test.sh" % ft_constants.FUNCTEST_REPO_DIR)
 
 # This will be the return code of this script. If any of the tests fails,
 # this variable will change to -1
-OVERALL_RESULT = 0
+
+
+class GlobalVariables:
+    EXECUTED_TEST_CASES = []
+    OVERALL_RESULT = 0
+    CLEAN_FLAG = True
+    REPORT_FLAG = False
 
 
 def print_separator(str, count=45):
@@ -61,12 +65,26 @@ def print_separator(str, count=45):
 
 
 def source_rc_file():
-    rc_file = os.getenv('creds')
+    rc_file = ft_constants.OPENSTACK_CREDS
     if not os.path.isfile(rc_file):
         logger.error("RC file %s does not exist..." % rc_file)
         sys.exit(1)
     logger.debug("Sourcing the OpenStack RC file...")
-    os_utils.source_credentials(rc_file)
+    creds = os_utils.source_credentials(rc_file)
+    for key, value in creds.iteritems():
+        if re.search("OS_", key):
+            if key == 'OS_AUTH_URL':
+                ft_constants.OS_AUTH_URL = value
+            elif key == 'OS_USERNAME':
+                ft_constants.OS_USERNAME = value
+            elif key == 'OS_TENANT_NAME':
+                ft_constants.OS_TENANT_NAME = value
+            elif key == 'OS_PASSWORD':
+                ft_constants.OS_PASSWORD = value
+    logger.debug("OS_AUTH_URL:%s" % ft_constants.OS_AUTH_URL)
+    logger.debug("OS_USERNAME:%s" % ft_constants.OS_USERNAME)
+    logger.debug("OS_TENANT_NAME:%s" % ft_constants.OS_TENANT_NAME)
+    logger.debug("OS_PASSWORD:%s" % ft_constants.OS_PASSWORD)
 
 
 def generate_os_snapshot():
@@ -78,7 +96,7 @@ def cleanup():
 
 
 def update_test_info(test_name, result, duration):
-    for test in EXECUTED_TEST_CASES:
+    for test in GlobalVariables.EXECUTED_TEST_CASES:
         if test['test_name'] == test_name:
             test.update({"result": result,
                          "duration": duration})
@@ -98,7 +116,6 @@ def get_run_dict_if_defined(testname):
 
 
 def run_test(test, tier_name):
-    global OVERALL_RESULT, EXECUTED_TEST_CASES
     result_str = "PASS"
     start = datetime.datetime.now()
     test_name = test.get_name()
@@ -108,11 +125,11 @@ def run_test(test, tier_name):
     print_separator("=")
     logger.debug("\n%s" % test)
 
-    if CLEAN_FLAG:
+    if GlobalVariables.CLEAN_FLAG:
         generate_os_snapshot()
 
     flags = (" -t %s" % (test_name))
-    if REPORT_FLAG:
+    if GlobalVariables.REPORT_FLAG:
         flags += " -r"
 
     result = TestCasesBase.TestCasesBase.EX_RUN_ERROR
@@ -123,7 +140,9 @@ def run_test(test, tier_name):
             cls = getattr(module, run_dict['class'])
             test_case = cls()
             result = test_case.run()
-            if result != TestCasesBase.TestCasesBase.EX_SKIP and REPORT_FLAG:
+
+            if result != TestCasesBase.TestCasesBase.EX_SKIP and \
+               GlobalVariables.REPORT_FLAG:
                 test_case.push_to_db()
         except ImportError:
             logger.exception("Cannot import module {}".format(
@@ -138,7 +157,7 @@ def run_test(test, tier_name):
                         cmd, test_name))
         result = ft_utils.execute_command(cmd)
 
-    if CLEAN_FLAG:
+    if GlobalVariables.CLEAN_FLAG:
         cleanup()
     end = datetime.datetime.now()
     duration = (end - start).seconds
@@ -156,7 +175,7 @@ def run_test(test, tier_name):
                             "execution.")
                 # if it is a single test we don't print the whole results table
                 update_test_info(test_name, result_str, duration_str)
-                generate_report.main(EXECUTED_TEST_CASES)
+                generate_report.main(GlobalVariables.EXECUTED_TEST_CASES)
             logger.info("Execution exit value: %s" % OVERALL_RESULT)
             sys.exit(OVERALL_RESULT)
 
@@ -180,9 +199,8 @@ def run_tier(tier):
 
 
 def run_all(tiers):
-    global EXECUTED_TEST_CASES
     summary = ""
-    BUILD_TAG = os.getenv('BUILD_TAG')
+    BUILD_TAG = ft_constants.CI_BUILD_TAG
     if BUILD_TAG is not None and re.search("daily", BUILD_TAG) is not None:
         CI_LOOP = "daily"
     else:
@@ -199,28 +217,26 @@ def run_all(tiers):
                            tier.get_test_names()))
 
     logger.info("Tests to be executed:%s" % summary)
-    EXECUTED_TEST_CASES = generate_report.init(tiers_to_run)
+    GlobalVariables.EXECUTED_TEST_CASES = generate_report.init(tiers_to_run)
     for tier in tiers_to_run:
         run_tier(tier)
 
-    generate_report.main(EXECUTED_TEST_CASES)
+    generate_report.main(GlobalVariables.EXECUTED_TEST_CASES)
 
 
 def main():
-    global CLEAN_FLAG
-    global REPORT_FLAG
 
-    CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
-    CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
+    CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
+    CI_SCENARIO = ft_constants.CI_SCENARIO
 
-    file = ft_utils.get_testcases_file()
+    file = ft_constants.FUNCTEST_TESTCASES_YAML
     _tiers = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, file)
 
     if args.noclean:
-        CLEAN_FLAG = False
+        GlobalVariables.CLEAN_FLAG = False
 
     if args.report:
-        REPORT_FLAG = True
+        GlobalVariables.REPORT_FLAG = True
 
     if args.test:
         source_rc_file()
@@ -242,8 +258,9 @@ def main():
     else:
         run_all(_tiers)
 
-    logger.info("Execution exit value: %s" % OVERALL_RESULT)
-    sys.exit(OVERALL_RESULT)
+    logger.info("Execution exit value: %s" % GlobalVariables.OVERALL_RESULT)
+    sys.exit(GlobalVariables.OVERALL_RESULT)
+
 
 if __name__ == '__main__':
     main()
old mode 100644 (file)
new mode 100755 (executable)
index 195108b..a5ddcf2
@@ -151,7 +151,7 @@ tiers:
                 dependencies:
                     installer: '(fuel)|(apex)'
                     scenario: 'bgpvpn'
-                 run:
+                run:
                     module: 'functest.opnfv_tests.features.sdnvpn'
                     class: 'SDNVPN'
 
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index 827f8a4..3b14fa3 100644 (file)
@@ -22,6 +22,7 @@ CONTEXT_SETTINGS = dict(help_option_names=['-h', '--help'])
 def cli():
     pass
 
+
 _env = CliEnv()
 _openstack = CliOpenStack()
 _testcase = CliTestcase()
index d331cc1..9f793e7 100644 (file)
@@ -13,9 +13,7 @@ import click
 import git
 
 import functest.utils.functest_utils as ft_utils
-
-ENV_FILE = "/home/opnfv/functest/conf/env_active"
-FUNCTEST_REPO = ft_utils.FUNCTEST_REPO
+import functest.utils.functest_constants as ft_constants
 
 
 class CliEnv:
@@ -30,44 +28,45 @@ class CliEnv:
                                "it again? [y|n]\n")
             while True:
                 if answer.lower() in ["y", "yes"]:
-                    os.remove(ENV_FILE)
+                    os.remove(ft_constants.ENV_FILE)
                     break
                 elif answer.lower() in ["n", "no"]:
                     return
                 else:
                     answer = raw_input("Invalid answer. Please type [y|n]\n")
 
-        cmd = ("python %s/functest/ci/prepare_env.py start" % FUNCTEST_REPO)
+        cmd = ("python %s/functest/ci/prepare_env.py start" %
+               ft_constants.FUNCTEST_REPO_DIR)
         ft_utils.execute_command(cmd)
 
     def show(self):
-        CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
+        CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
         if CI_INSTALLER_TYPE is None:
             CI_INSTALLER_TYPE = "Unknown"
-        CI_INSTALLER_IP = os.getenv('INSTALLER_IP')
+        CI_INSTALLER_IP = ft_constants.CI_INSTALLER_IP
         if CI_INSTALLER_IP is None:
             CI_INSTALLER_IP = "Unknown"
         CI_INSTALLER = ("%s, %s" % (CI_INSTALLER_TYPE, CI_INSTALLER_IP))
 
-        CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
+        CI_SCENARIO = ft_constants.CI_SCENARIO
         if CI_SCENARIO is None:
             CI_SCENARIO = "Unknown"
 
-        CI_NODE = os.getenv('NODE_NAME')
+        CI_NODE = ft_constants.CI_NODE
         if CI_NODE is None:
             CI_NODE = "Unknown"
 
-        repo = git.Repo(FUNCTEST_REPO)
+        repo = git.Repo(ft_constants.FUNCTEST_REPO_DIR)
         branch = repo.head.reference
         GIT_BRANCH = branch.name
         GIT_HASH = branch.commit.hexsha
 
-        CI_BUILD_TAG = os.getenv('BUILD_TAG')
+        CI_BUILD_TAG = ft_constants.CI_BUILD_TAG
         if CI_BUILD_TAG is not None:
             CI_BUILD_TAG = CI_BUILD_TAG.lstrip(
                 "jenkins-").lstrip("functest").lstrip("-")
 
-        CI_DEBUG = os.getenv('CI_DEBUG')
+        CI_DEBUG = ft_constants.CI_DEBUG
         if CI_DEBUG is None:
             CI_DEBUG = "false"
 
@@ -93,7 +92,7 @@ class CliEnv:
 
     def status(self, verbose=True):
         ret_val = 0
-        if not os.path.isfile(ENV_FILE):
+        if not os.path.isfile(ft_constants.ENV_FILE):
             if verbose:
                 click.echo("Functest environment is not installed.\n")
             ret_val = 1
index 2530b5f..140be19 100644 (file)
@@ -15,19 +15,17 @@ import click
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_clean as os_clean
 import functest.utils.openstack_snapshot as os_snapshot
+import functest.utils.functest_constants as ft_constants
 
 
-FUNCTEST_CONF_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_functest_conf')
-RC_FILE = os.getenv('creds')
-OS_SNAPSHOT_FILE = \
-    ft_utils.get_functest_config("general.openstack.snapshot_file")
+OPENSTACK_RC_FILE = ft_constants.OPENSTACK_CREDS
+OPENSTACK_SNAPSHOT_FILE = ft_constants.OPENSTACK_SNAPSHOT_FILE
 
 
 class CliOpenStack:
 
     def __init__(self):
-        self.os_auth_url = os.getenv('OS_AUTH_URL')
+        self.os_auth_url = ft_constants.OS_AUTH_URL
         self.endpoint_ip = None
         self.endpoint_port = None
         if self.os_auth_url is not None:
@@ -51,7 +49,7 @@ class CliOpenStack:
                 click.echo("{}={}".format(key, value))
 
     def fetch_credentials(self):
-        if os.path.isfile(RC_FILE):
+        if os.path.isfile(OPENSTACK_RC_FILE):
             answer = raw_input("It seems the RC file is already present. "
                                "Do you want to overwrite it? [y|n]\n")
             while True:
@@ -62,29 +60,30 @@ class CliOpenStack:
                 else:
                     answer = raw_input("Invalid answer. Please type [y|n]\n")
 
-        CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
+        CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
         if CI_INSTALLER_TYPE is None:
             click.echo("The environment variable 'INSTALLER_TYPE' is not"
                        "defined. Please export it")
-        CI_INSTALLER_IP = os.getenv('INSTALLER_IP')
+        CI_INSTALLER_IP = ft_constants.CI_INSTALLER_IP
         if CI_INSTALLER_IP is None:
             click.echo("The environment variable 'INSTALLER_IP' is not"
                        "defined. Please export it")
-        cmd = ("/home/opnfv/repos/releng/utils/fetch_os_creds.sh "
-               "-d %s -i %s -a %s"
-               % (RC_FILE, CI_INSTALLER_TYPE, CI_INSTALLER_IP))
+        cmd = ft_constants.REPOS_DIR + \
+            ("/releng/utils/fetch_os_creds.sh "
+             "-d %s -i %s -a %s"
+             % (OPENSTACK_RC_FILE, CI_INSTALLER_TYPE, CI_INSTALLER_IP))
         click.echo("Fetching credentials from installer node '%s' with IP=%s.."
                    % (CI_INSTALLER_TYPE, CI_INSTALLER_IP))
         ft_utils.execute_command(cmd, verbose=False)
 
     def check(self):
         self.ping_endpoint()
-        cmd = ft_utils.FUNCTEST_REPO + "/functest/ci/check_os.sh"
+        cmd = ft_constants.FUNCTEST_REPO_DIR + "/functest/ci/check_os.sh"
         ft_utils.execute_command(cmd, verbose=False)
 
     def snapshot_create(self):
         self.ping_endpoint()
-        if os.path.isfile(OS_SNAPSHOT_FILE):
+        if os.path.isfile(OPENSTACK_SNAPSHOT_FILE):
             answer = raw_input("It seems there is already an OpenStack "
                                "snapshot. Do you want to overwrite it with "
                                "the current OpenStack status? [y|n]\n")
@@ -100,18 +99,18 @@ class CliOpenStack:
         os_snapshot.main()
 
     def snapshot_show(self):
-        if not os.path.isfile(OS_SNAPSHOT_FILE):
+        if not os.path.isfile(OPENSTACK_SNAPSHOT_FILE):
             click.echo("There is no OpenStack snapshot created. To create "
                        "one run the command "
                        "'functest openstack snapshot-create'")
             return
-        with open(OS_SNAPSHOT_FILE, 'r') as yaml_file:
+        with open(OPENSTACK_SNAPSHOT_FILE, 'r') as yaml_file:
             click.echo("\n%s"
                        % yaml_file.read())
 
     def clean(self):
         self.ping_endpoint()
-        if not os.path.isfile(OS_SNAPSHOT_FILE):
+        if not os.path.isfile(OPENSTACK_SNAPSHOT_FILE):
             click.echo("Not possible to clean OpenStack without a snapshot. "
                        "This could cause problems. "
                        "Run first the command "
index da78ae9..efe177d 100644 (file)
@@ -16,20 +16,16 @@ import click
 import functest.ci.tier_builder as tb
 import functest.utils.functest_utils as ft_utils
 import functest.utils.functest_vacation as vacation
-
-
-FUNCTEST_CONF_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_functest_conf')
-ENV_FILE = FUNCTEST_CONF_DIR + "/env_active"
-FUNCTEST_REPO = ft_utils.FUNCTEST_REPO
+import functest.utils.functest_constants as ft_constants
 
 
 class CliTestcase:
 
     def __init__(self):
-        CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
-        CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
-        testcases = ft_utils.get_testcases_file()
+        CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
+        CI_SCENARIO = ft_constants.CI_SCENARIO
+        testcases = ft_constants.FUNCTEST_TESTCASES_YAML
+
         self.tiers = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, testcases)
 
     def list(self):
@@ -50,14 +46,14 @@ class CliTestcase:
     def run(self, testname, noclean=False):
         if testname == 'vacation':
             vacation.main()
-        elif not os.path.isfile(ENV_FILE):
+        elif not os.path.isfile(ft_constants.ENV_FILE):
             click.echo("Functest environment is not ready. "
                        "Run first 'functest env prepare'")
         else:
             if noclean:
                 cmd = ("python %s/functest/ci/run_tests.py "
-                       "-n -t %s" % (FUNCTEST_REPO, testname))
+                       "-n -t %s" % (ft_constants.FUNCTEST_REPO_DIR, testname))
             else:
                 cmd = ("python %s/functest/ci/run_tests.py "
-                       "-t %s" % (FUNCTEST_REPO, testname))
+                       "-t %s" % (ft_constants.FUNCTEST_REPO_DIR, testname))
             ft_utils.execute_command(cmd)
index fa2de58..9da5107 100644 (file)
@@ -15,20 +15,15 @@ import click
 
 import functest.ci.tier_builder as tb
 import functest.utils.functest_utils as ft_utils
-
-
-FUNCTEST_CONF_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_functest_conf')
-ENV_FILE = FUNCTEST_CONF_DIR + "/env_active"
-FUNCTEST_REPO = ft_utils.FUNCTEST_REPO
+import functest.utils.functest_constants as ft_constants
 
 
 class CliTier:
 
     def __init__(self):
-        CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
-        CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
-        testcases = ft_utils.get_testcases_file()
+        CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
+        CI_SCENARIO = ft_constants.CI_SCENARIO
+        testcases = ft_constants.FUNCTEST_TESTCASES_YAML
         self.tiers = tb.TierBuilder(CI_INSTALLER_TYPE, CI_SCENARIO, testcases)
 
     def list(self):
@@ -60,14 +55,14 @@ class CliTier:
             click.echo("Test cases in tier '%s':\n %s\n" % (tiername, tests))
 
     def run(self, tiername, noclean=False):
-        if not os.path.isfile(ENV_FILE):
+        if not os.path.isfile(ft_constants.ENV_FILE):
             click.echo("Functest environment is not ready. "
                        "Run first 'functest env prepare'")
         else:
             if noclean:
                 cmd = ("python %s/functest/ci/run_tests.py "
-                       "-n -t %s" % (FUNCTEST_REPO, tiername))
+                       "-n -t %s" % (ft_constants.FUNCTEST_REPO_DIR, tiername))
             else:
                 cmd = ("python %s/functest/ci/run_tests.py "
-                       "-t %s" % (FUNCTEST_REPO, tiername))
+                       "-t %s" % (ft_constants.FUNCTEST_REPO_DIR, tiername))
             ft_utils.execute_command(cmd)
index ab1ad0d..e1c002d 100644 (file)
@@ -11,6 +11,7 @@ import os
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_constants as ft_constants
 
 
 class TestCasesBase(object):
@@ -23,7 +24,7 @@ class TestCasesBase(object):
     logger = ft_logger.Logger(__name__).getLogger()
 
     def __init__(self):
-        self.functest_repo = ft_utils.FUNCTEST_REPO
+        self.functest_repo = ft_constants.FUNCTEST_REPO_DIR
         self.details = {}
         self.project_name = "functest"
         self.case_name = ""
index 8c003ab..0ddb58c 100755 (executable)
@@ -23,6 +23,7 @@ from robot.utils.robottime import timestamp_to_secs
 from functest.core import TestCasesBase
 import functest.utils.functest_logger as ft_logger
 import functest.utils.openstack_utils as op_utils
+import functest.utils.functest_constants as ft_constants
 
 
 class ODLResultVisitor(ResultVisitor):
@@ -48,11 +49,14 @@ class ODLResultVisitor(ResultVisitor):
 
 class ODLTestCases(TestCasesBase.TestCasesBase):
 
-    repos = "/home/opnfv/repos/"
-    odl_test_repo = repos + "odl_test/"
-    neutron_suite_dir = odl_test_repo + "csit/suites/openstack/neutron/"
-    basic_suite_dir = odl_test_repo + "csit/suites/integration/basic/"
-    res_dir = '/home/opnfv/functest/results/odl/'
+    repos = ft_constants.REPOS_DIR
+    odl_test_repo = os.path.join(repos, "odl_test")
+    neutron_suite_dir = os.path.join(odl_test_repo,
+                                     "csit/suites/openstack/neutron")
+    basic_suite_dir = os.path.join(odl_test_repo,
+                                   "csit/suites/integration/basic")
+    res_dir = os.path.join(ft_constants.FUNCTEST_RESULTS_DIR, "odl")
+
     logger = ft_logger.Logger("opendaylight").getLogger()
 
     def __init__(self):
@@ -60,7 +64,8 @@ class ODLTestCases(TestCasesBase.TestCasesBase):
 
     @classmethod
     def set_robotframework_vars(cls, odlusername="admin", odlpassword="admin"):
-        odl_variables_files = cls.odl_test_repo + 'csit/variables/Variables.py'
+        odl_variables_files = os.path.join(cls.odl_test_repo,
+                                           'csit/variables/Variables.py')
         try:
             for line in fileinput.input(odl_variables_files,
                                         inplace=True):
@@ -74,7 +79,8 @@ class ODLTestCases(TestCasesBase.TestCasesBase):
             return False
 
     def parse_results(self):
-        result = ExecutionResult(self.res_dir + 'output.xml')
+        output_dir = os.path.join(self.res_dir, 'output.xml')
+        result = ExecutionResult(output_dir)
         visitor = ODLResultVisitor()
         result.visit(visitor)
         self.criteria = result.suite.status
@@ -109,10 +115,11 @@ class ODLTestCases(TestCasesBase.TestCasesBase):
                     self.logger.exception(
                         "Cannot create {}".format(self.res_dir))
                     return self.EX_RUN_ERROR
-            stdout_file = self.res_dir + 'stdout.txt'
+            stdout_file = os.path.join(self.res_dir, 'stdout.txt')
+            output_dir = os.path.join(self.res_dir, 'output.xml')
             with open(stdout_file, 'w+') as stdout:
                 robot.run(*dirs, variable=variables,
-                          output=self.res_dir + 'output.xml',
+                          output=output_dir,
                           log='NONE',
                           report='NONE',
                           stdout=stdout)
@@ -148,23 +155,29 @@ class ODLTestCases(TestCasesBase.TestCasesBase):
             kwargs['odlrestconfport'] = '8181'
             kwargs['odlusername'] = 'admin'
             kwargs['odlpassword'] = 'admin'
-            installer_type = None
-            if 'INSTALLER_TYPE' in os.environ:
-                installer_type = os.environ['INSTALLER_TYPE']
-            kwargs['osusername'] = os.environ['OS_USERNAME']
-            kwargs['ostenantname'] = os.environ['OS_TENANT_NAME']
-            kwargs['ospassword'] = os.environ['OS_PASSWORD']
+
+            installer_type = ft_constants.CI_INSTALLER_TYPE
+            kwargs['osusername'] = ft_constants.OS_USERNAME
+            kwargs['ostenantname'] = ft_constants.OS_TENANT_NAME
+            kwargs['ospassword'] = ft_constants.OS_PASSWORD
+
             if installer_type == 'fuel':
                 kwargs['odlwebport'] = '8282'
             elif installer_type == 'apex':
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
+                if ft_constants.SDN_CONTROLLER_IP is None:
+                    return self.EX_RUN_ERROR
+                kwargs['odlip'] = ft_constants.SDN_CONTROLLER_IP
                 kwargs['odlwebport'] = '8181'
             elif installer_type == 'joid':
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER']
+                if ft_constants.SDN_CONTROLLER is None:
+                    return self.EX_RUN_ERROR
+                kwargs['odlip'] = ft_constants.SDN_CONTROLLER
             elif installer_type == 'compass':
                 kwargs['odlwebport'] = '8181'
             else:
-                kwargs['odlip'] = os.environ['SDN_CONTROLLER_IP']
+                if ft_constants.SDN_CONTROLLER_IP is None:
+                    return self.EX_RUN_ERROR
+                kwargs['odlip'] = ft_constants.SDN_CONTROLLER_IP
         except KeyError as e:
             self.logger.error("Cannot run ODL testcases. "
                               "Please check env var: "
@@ -176,6 +189,7 @@ class ODLTestCases(TestCasesBase.TestCasesBase):
 
         return self.main(**kwargs)
 
+
 if __name__ == '__main__':
     parser = argparse.ArgumentParser()
     parser.add_argument('-k', '--keystoneip',
index bea2828..e3f0804 100755 (executable)
@@ -25,7 +25,7 @@
 
 import time
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as functest_utils
+import functest.utils.functest_utils as ft_utils
 from Sfc_fun import Sfc_fun
 
 logger = ft_logger.Logger("sfc").getLogger()
@@ -81,7 +81,7 @@ def ConfigSfc():
     logger.info(
         "Testcase 4 : Configure Port Chain and verify flows are added")
     logger.info("4.1 Creation of Port Chain")
-    check(Sfc_obj.createPortChain, CREATED,  "Creation of Port Chain")
+    check(Sfc_obj.createPortChain, CREATED, "Creation of Port Chain")
 
 
 def VerifySfcTraffic():
@@ -152,13 +152,13 @@ def PushDB(status, info):
         # ONOS SFC success criteria = all tests OK
         duration = round(stop_time - start_time, 1)
         logger.info("Result is " + status)
-        functest_utils.push_results_to_db("functest",
-                                          "onos_sfc",
-                                          start_time,
-                                          stop_time,
-                                          status,
-                                          details={'duration': duration,
-                                                   'error': info})
+        ft_utils.push_results_to_db("functest",
+                                    "onos_sfc",
+                                    start_time,
+                                    stop_time,
+                                    status,
+                                    details={'duration': duration,
+                                             'error': info})
     except:
         logger.error("Error pushing results into Database")
 
index f2755b6..01f70b8 100644 (file)
@@ -141,8 +141,8 @@ class environment(connection):
             result = self.CheckSshNoPasswd(host)
             if not result:
                 self.logger.info(
-                        "ssh login failed,try to copy master publickey" +
-                        "to agent " + str(host))
+                    "ssh login failed,try to copy master publickey" +
+                    "to agent " + str(host))
                 self.CopyPublicKey(host)
         self.OnosPushKeys(handle, "onos-push-keys " + self.OCT, masterpass)
         self.OnosPushKeys(handle, "onos-push-keys " + self.OC1, agentpass)
index 603e993..6f7a40f 100644 (file)
@@ -17,6 +17,7 @@ import os
 import re
 import time
 
+import functest.utils.functest_constants as ft_constants
 import functest.utils.functest_utils as ft_utils
 
 
@@ -25,8 +26,8 @@ class foundation:
     def __init__(self):
 
         # currentpath = os.getcwd()
-        REPO_PATH = ft_utils.FUNCTEST_REPO + '/'
-        currentpath = REPO_PATH + 'opnfv_tests/Controllers/ONOS/Teston/CI'
+        currentpath = \
+            ft_constants.FUNCTEST_TEST_DIR + '/Controllers/ONOS/Teston/CI'
         self.cipath = currentpath
         self.logdir = os.path.join(currentpath, 'log')
         self.workhome = currentpath[0: currentpath.rfind('opnfv_tests') - 1]
@@ -54,30 +55,23 @@ class foundation:
         """
         Get Default Parameters value
         """
-        self.Result_DB = str(
-            ft_utils.get_functest_config('results.test_db_url'))
-        self.masterusername = str(
-            ft_utils.get_functest_config('ONOS.general.onosbench_username'))
-        self.masterpassword = str(
-            ft_utils.get_functest_config('ONOS.general.onosbench_password'))
-        self.agentusername = str(
-            ft_utils.get_functest_config('ONOS.general.onoscli_username'))
-        self.agentpassword = str(
-            ft_utils.get_functest_config('ONOS.general.onoscli_password'))
-        self.runtimeout = \
-            ft_utils.get_functest_config('ONOS.general.runtimeout')
-        self.OCT = str(ft_utils.get_functest_config('ONOS.environment.OCT'))
-        self.OC1 = str(ft_utils.get_functest_config('ONOS.environment.OC1'))
-        self.OC2 = str(ft_utils.get_functest_config('ONOS.environment.OC2'))
-        self.OC3 = str(ft_utils.get_functest_config('ONOS.environment.OC3'))
-        self.OCN = str(ft_utils.get_functest_config('ONOS.environment.OCN'))
-        self.OCN2 = str(ft_utils.get_functest_config('ONOS.environment.OCN2'))
-        self.installer_master = str(
-            ft_utils.get_functest_config('ONOS.environment.installer_master'))
-        self.installer_master_username = str(ft_utils.get_functest_config(
-            'ONOS.environment.installer_master_username'))
-        self.installer_master_password = str(ft_utils.get_functest_config(
-            'ONOS.environment.installer_master_password'))
+        self.Result_DB = str(ft_utils.get_db_url())
+        self.masterusername = str(ft_constants.ONOSBENCH_USERNAME)
+        self.masterpassword = str(ft_constants.ONOSBENCH_PASSWORD)
+        self.agentusername = str(ft_constants.ONOSCLI_USERNAME)
+        self.agentpassword = str(ft_constants.ONOSCLI_PASSWORD)
+        self.runtimeout = ft_constants.ONOS_RUNTIMEOUT
+        self.OCT = str(ft_constants.ONOS_OCT)
+        self.OC1 = str(ft_constants.ONOS_OC1)
+        self.OC2 = str(ft_constants.ONOS_OC2)
+        self.OC3 = str(ft_constants.ONOS_OC3)
+        self.OCN = str(ft_constants.ONOS_OCN)
+        self.OCN2 = str(ft_constants.ONOS_OCN2)
+        self.installer_master = str(ft_constants.ONOS_INSTALLER_MASTER)
+        self.installer_master_username = \
+            str(ft_constants.ONOS_INSTALLER_MASTER_USERNAME)
+        self.installer_master_password = \
+            ft_constants.ONOS_INSTALLER_MASTER_PASSWORD
         self.hosts = [self.OC1, self.OCN, self.OCN2]
         self.localhost = self.OCT
 
index c8045fd..300f56d 100755 (executable)
@@ -25,6 +25,8 @@ from neutronclient.v2_0 import client as neutronclient
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as openstack_utils
+import functest.utils.functest_constants as ft_constants
+
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-t", "--testcase", help="Testcase name")
@@ -35,27 +37,15 @@ args = parser.parse_args()
 logger = ft_logger.Logger("onos").getLogger()
 
 # onos parameters
-TEST_DB = ft_utils.get_functest_config("results.test_db_url")
-ONOS_REPO_PATH = \
-    ft_utils.get_functest_config("general.directories.dir_repos")
-ONOS_CONF_DIR = \
-    ft_utils.get_functest_config("general.directories.dir_functest_conf")
-
-ONOSCI_PATH = ONOS_REPO_PATH + "/"
+ONOSCI_PATH = ft_constants.REPOS_DIR + "/"
 starttime = datetime.datetime.now()
 
-HOME = os.environ['HOME'] + "/"
-INSTALLER_TYPE = os.environ['INSTALLER_TYPE']
-DEPLOY_SCENARIO = os.environ['DEPLOY_SCENARIO']
-ONOSCI_PATH = ONOS_REPO_PATH + "/"
-GLANCE_IMAGE_NAME = ft_utils.get_functest_config("onos_sfc.image_name")
-GLANCE_IMAGE_FILENAME = \
-    ft_utils.get_functest_config("onos_sfc.image_file_name")
-GLANCE_IMAGE_PATH = \
-    ft_utils.get_functest_config("general.directories.dir_functest_data") + \
-    "/" + GLANCE_IMAGE_FILENAME
-SFC_PATH = ft_utils.FUNCTEST_REPO + "/" + \
-           ft_utils.get_functest_config("general.directories.dir_onos_sfc")
+INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
+ONOS_SFC_IMAGE_NAME = ft_constants.ONOS_SFC_IMAGE_NAME
+ONOS_SFC_IMAGE_PATH = os.path.join(ft_constants.FUNCTEST_DATA_DIR,
+                                   ft_constants.ONOS_SFC_IMAGE_FILENAME)
+ONOS_SFC_PATH = os.path.join(ft_constants.FUNCTEST_REPO_DIR,
+                             ft_constants.ONOS_SFC_RELATIVE_PATH)
 
 
 def RunScript(testname):
@@ -173,18 +163,18 @@ def CleanOnosTest():
 def CreateImage():
     glance_client = openstack_utils.get_glance_client()
     image_id = openstack_utils.create_glance_image(glance_client,
-                                                   GLANCE_IMAGE_NAME,
-                                                   GLANCE_IMAGE_PATH)
+                                                   ONOS_SFC_IMAGE_NAME,
+                                                   ONOS_SFC_IMAGE_PATH)
     EXIT_CODE = -1
     if not image_id:
         logger.error("Failed to create a Glance image...")
         return(EXIT_CODE)
     logger.debug("Image '%s' with ID=%s created successfully."
-                 % (GLANCE_IMAGE_NAME, image_id))
+                 % (ONOS_SFC_IMAGE_NAME, image_id))
 
 
 def SfcTest():
-    cmd = "python " + SFC_PATH + "Sfc.py"
+    cmd = "python " + ONOS_SFC_PATH + "/Sfc.py"
     logger.debug("Run sfc tests")
     os.system(cmd)
 
@@ -197,8 +187,8 @@ def GetIp(type):
 
 
 def Replace(before, after):
-    file = "Sfc_fun.py"
-    cmd = "sed -i 's/" + before + "/" + after + "/g' " + SFC_PATH + file
+    file = "/Sfc_fun.py"
+    cmd = "sed -i 's/" + before + "/" + after + "/g' " + ONOS_SFC_PATH + file
     os.system(cmd)
 
 
@@ -207,7 +197,7 @@ def SetSfcConf():
     Replace("neutron_ip", GetIp("neutron"))
     Replace("nova_ip", GetIp("nova"))
     Replace("glance_ip", GetIp("glance"))
-    pwd = os.environ['OS_PASSWORD']
+    pwd = ft_constants.OS_PASSWORD
     Replace("console", pwd)
     creds_neutron = openstack_utils.get_credentials("neutron")
     neutron_client = neutronclient.Client(**creds_neutron)
@@ -266,5 +256,6 @@ def main():
     else:
         OnosTest()
 
+
 if __name__ == '__main__':
     main()
index 50cdf8a..6a2abe6 100755 (executable)
 #
 
 import argparse
-import os
 import sys
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
+import functest.utils.functest_constants as ft_constants
 
 parser = argparse.ArgumentParser()
 
@@ -28,34 +27,27 @@ args = parser.parse_args()
 """ logging configuration """
 logger = ft_logger.Logger("create_instance_and_ip").getLogger()
 
-HOME = os.environ['HOME'] + "/"
+HOME = ft_constants.HOME + "/"
 
 VM_BOOT_TIMEOUT = 180
 
-INSTANCE_NAME = ft_utils.get_functest_config("example.example_vm_name")
-FLAVOR = ft_utils.get_functest_config("example.example_flavor")
-IMAGE_NAME = ft_utils.get_functest_config("example.example_image_name")
-IMAGE_FILENAME = \
-    ft_utils.get_functest_config("general.openstack.image_file_name")
-IMAGE_FORMAT = \
-    ft_utils.get_functest_config("general.openstack.image_disk_format")
-IMAGE_PATH = \
-    ft_utils.get_functest_config("general.directories.dir_functest_data") + \
+EXAMPLE_INSTANCE_NAME = ft_constants.EXAMPLE_INSTANCE_NAME
+EXAMPLE_FLAVOR = ft_constants.EXAMPLE_FLAVOR
+EXAMPLE_IMAGE_NAME = ft_constants.EXAMPLE_IMAGE_NAME
+IMAGE_FILENAME = ft_constants.GLANCE_IMAGE_FILENAME
+IMAGE_FORMAT = ft_constants.GLANCE_IMAGE_FORMAT
+IMAGE_PATH = ft_constants.FUNCTEST_DATA_DIR + \
     "/" + IMAGE_FILENAME
 
 # NEUTRON Private Network parameters
 
-NET_NAME = ft_utils.get_functest_config("example.example_private_net_name")
-SUBNET_NAME = \
-    ft_utils.get_functest_config("example.example_private_subnet_name")
-SUBNET_CIDR = \
-    ft_utils.get_functest_config("example.example_private_subnet_cidr")
-ROUTER_NAME = ft_utils.get_functest_config("example.example_router_name")
+EXAMPLE_PRIVATE_NET_NAME = ft_constants.EXAMPLE_PRIVATE_NET_NAME
+EXAMPLE_PRIVATE_SUBNET_NAME = ft_constants.EXAMPLE_PRIVATE_SUBNET_NAME
+EXAMPLE_PRIVATE_SUBNET_CIDR = ft_constants.EXAMPLE_PRIVATE_SUBNET_CIDR
+EXAMPLE_ROUTER_NAME = ft_constants.EXAMPLE_ROUTER_NAME
 
-SECGROUP_NAME = ft_utils.get_functest_config("example.example_sg_name")
-SECGROUP_DESCR = ft_utils.get_functest_config("example.example_sg_descr")
-
-TEST_DB = ft_utils.get_functest_config("results.test_db_url")
+EXAMPLE_SECGROUP_NAME = ft_constants.EXAMPLE_SECGROUP_NAME
+EXAMPLE_SECGROUP_DESCR = ft_constants.EXAMPLE_SECGROUP_DESCR
 
 
 def main():
@@ -65,17 +57,17 @@ def main():
     glance_client = os_utils.get_glance_client()
 
     image_id = os_utils.create_glance_image(glance_client,
-                                            IMAGE_NAME,
+                                            EXAMPLE_IMAGE_NAME,
                                             IMAGE_PATH,
                                             disk=IMAGE_FORMAT,
                                             container="bare",
                                             public=True)
 
     network_dic = os_utils.create_network_full(neutron_client,
-                                               NET_NAME,
-                                               SUBNET_NAME,
-                                               ROUTER_NAME,
-                                               SUBNET_CIDR)
+                                               EXAMPLE_PRIVATE_NET_NAME,
+                                               EXAMPLE_PRIVATE_SUBNET_NAME,
+                                               EXAMPLE_ROUTER_NAME,
+                                               EXAMPLE_PRIVATE_SUBNET_CIDR)
     if not network_dic:
         logger.error(
             "There has been a problem when creating the neutron network")
@@ -84,31 +76,34 @@ def main():
     network_id = network_dic["net_id"]
 
     sg_id = os_utils.create_security_group_full(neutron_client,
-                                                SECGROUP_NAME, SECGROUP_DESCR)
+                                                EXAMPLE_SECGROUP_NAME,
+                                                EXAMPLE_SECGROUP_DESCR)
 
     # boot INTANCE
-    logger.info("Creating instance '%s'..." % INSTANCE_NAME)
+    logger.info("Creating instance '%s'..." % EXAMPLE_INSTANCE_NAME)
     logger.debug(
         "Configuration:\n name=%s \n flavor=%s \n image=%s \n "
-        "network=%s \n" % (INSTANCE_NAME, FLAVOR, image_id, network_id))
-    instance = os_utils.create_instance_and_wait_for_active(FLAVOR,
-                                                            image_id,
-                                                            network_id,
-                                                            INSTANCE_NAME)
+        "network=%s \n"
+        % (EXAMPLE_INSTANCE_NAME, EXAMPLE_FLAVOR, image_id, network_id))
+    instance = \
+        os_utils.create_instance_and_wait_for_active(EXAMPLE_FLAVOR,
+                                                     image_id,
+                                                     network_id,
+                                                     EXAMPLE_INSTANCE_NAME)
 
     if instance is None:
         logger.error("Error while booting instance.")
         sys.exit(-1)
     # Retrieve IP of INSTANCE
-    instance_ip = instance.networks.get(NET_NAME)[0]
+    instance_ip = instance.networks.get(EXAMPLE_PRIVATE_NET_NAME)[0]
     logger.debug("Instance '%s' got private ip '%s'." %
-                 (INSTANCE_NAME, instance_ip))
+                 (EXAMPLE_INSTANCE_NAME, instance_ip))
 
     logger.info("Adding '%s' to security group '%s'..."
-                % (INSTANCE_NAME, SECGROUP_NAME))
+                % (EXAMPLE_INSTANCE_NAME, EXAMPLE_SECGROUP_NAME))
     os_utils.add_secgroup_to_instance(nova_client, instance.id, sg_id)
 
-    logger.info("Creating floating IP for VM '%s'..." % INSTANCE_NAME)
+    logger.info("Creating floating IP for VM '%s'..." % EXAMPLE_INSTANCE_NAME)
     floatip_dic = os_utils.create_floating_ip(neutron_client)
     floatip = floatip_dic['fip_addr']
     # floatip_id = floatip_dic['fip_id']
@@ -119,12 +114,13 @@ def main():
     logger.info("Floating IP created: '%s'" % floatip)
 
     logger.info("Associating floating ip: '%s' to VM '%s' "
-                % (floatip, INSTANCE_NAME))
+                % (floatip, EXAMPLE_INSTANCE_NAME))
     if not os_utils.add_floating_ip(nova_client, instance.id, floatip):
         logger.error("Cannot associate floating IP to VM.")
         sys.exit(-1)
 
     sys.exit(0)
 
+
 if __name__ == '__main__':
     main()
index 8b8adce..6d8f016 100755 (executable)
@@ -28,6 +28,7 @@ import yaml
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
+import functest.utils.functest_constants as ft_constants
 
 tests = ['authenticate', 'glance', 'cinder', 'heat', 'keystone',
          'neutron', 'nova', 'quotas', 'requests', 'vm', 'all']
@@ -61,7 +62,6 @@ parser.add_argument("-z", "--sanity",
 
 args = parser.parse_args()
 
-network_dict = {}
 
 if args.verbose:
     RALLY_STDERR = subprocess.STDOUT
@@ -69,18 +69,17 @@ else:
     RALLY_STDERR = open(os.devnull, 'w')
 
 """ logging configuration """
-logger = ft_logger.Logger("run_rally").getLogger()
-
-
-HOME = os.environ['HOME'] + "/"
-RALLY_DIR = ft_utils.FUNCTEST_REPO + '/' + \
-            ft_utils.get_functest_config('general.directories.dir_rally')
-SANITY_MODE_DIR = RALLY_DIR + "scenario/sanity"
-FULL_MODE_DIR = RALLY_DIR + "scenario/full"
-TEMPLATE_DIR = RALLY_DIR + "scenario/templates"
-SUPPORT_DIR = RALLY_DIR + "scenario/support"
-TEMP_DIR = RALLY_DIR + "var"
-BLACKLIST_FILE = RALLY_DIR + "blacklist.txt"
+logger = ft_logger.Logger("run_rally-cert").getLogger()
+
+RALLY_DIR = os.path.join(ft_constants.FUNCTEST_REPO_DIR,
+                         ft_constants.RALLY_RELATIVE_PATH)
+RALLY_SCENARIO_DIR = os.path.join(RALLY_DIR, "scenario")
+SANITY_MODE_DIR = os.path.join(RALLY_SCENARIO_DIR, "sanity")
+FULL_MODE_DIR = os.path.join(RALLY_SCENARIO_DIR, "full")
+TEMPLATE_DIR = os.path.join(RALLY_SCENARIO_DIR, "templates")
+SUPPORT_DIR = os.path.join(RALLY_SCENARIO_DIR, "support")
+TEMP_DIR = os.path.join(RALLY_DIR, "var")
+BLACKLIST_FILE = os.path.join(RALLY_DIR, "blacklist.txt")
 
 FLAVOR_NAME = "m1.tiny"
 USERS_AMOUNT = 2
@@ -88,33 +87,27 @@ TENANTS_AMOUNT = 3
 ITERATIONS_AMOUNT = 10
 CONCURRENCY = 4
 
-RESULTS_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_rally_res')
-TEMPEST_CONF_FILE = \
-    ft_utils.get_functest_config('general.directories.dir_results') + \
-    '/tempest/tempest.conf'
-TEST_DB = ft_utils.get_functest_config('results.test_db_url')
-
-PRIVATE_NET_NAME = ft_utils.get_functest_config('rally.network_name')
-PRIVATE_SUBNET_NAME = ft_utils.get_functest_config('rally.subnet_name')
-PRIVATE_SUBNET_CIDR = ft_utils.get_functest_config('rally.subnet_cidr')
-ROUTER_NAME = ft_utils.get_functest_config('rally.router_name')
-
-GLANCE_IMAGE_NAME = \
-    ft_utils.get_functest_config('general.openstack.image_name')
-GLANCE_IMAGE_FILENAME = \
-    ft_utils.get_functest_config('general.openstack.image_file_name')
-GLANCE_IMAGE_FORMAT = \
-    ft_utils.get_functest_config('general.openstack.image_disk_format')
-GLANCE_IMAGE_PATH = \
-    ft_utils.get_functest_config('general.directories.dir_functest_data') + \
-    "/" + GLANCE_IMAGE_FILENAME
+RESULTS_DIR = os.path.join(ft_constants.FUNCTEST_RESULTS_DIR, 'rally')
+TEMPEST_CONF_FILE = os.path.join(ft_constants.FUNCTEST_RESULTS_DIR,
+                                 'tempest/tempest.conf')
 
+RALLY_PRIVATE_NET_NAME = ft_constants.RALLY_PRIVATE_NET_NAME
+RALLY_PRIVATE_SUBNET_NAME = ft_constants.RALLY_PRIVATE_SUBNET_NAME
+RALLY_PRIVATE_SUBNET_CIDR = ft_constants.RALLY_PRIVATE_SUBNET_CIDR
+RALLY_ROUTER_NAME = ft_constants.RALLY_ROUTER_NAME
+
+GLANCE_IMAGE_NAME = ft_constants.GLANCE_IMAGE_NAME
+GLANCE_IMAGE_FILENAME = ft_constants.GLANCE_IMAGE_FILENAME
+GLANCE_IMAGE_FORMAT = ft_constants.GLANCE_IMAGE_FORMAT
+GLANCE_IMAGE_PATH = os.path.join(ft_constants.FUNCTEST_DATA_DIR,
+                                 GLANCE_IMAGE_FILENAME)
 CINDER_VOLUME_TYPE_NAME = "volume_test"
 
 
-SUMMARY = []
-neutron_client = None
+class GlobalVariables:
+    SUMMARY = []
+    neutron_client = None
+    network_dict = {}
 
 
 def get_task_id(cmd_raw):
@@ -179,16 +172,16 @@ def build_task_args(test_file_name):
     else:
         task_args['smoke'] = args.smoke
 
-    ext_net = os_utils.get_external_net(neutron_client)
+    ext_net = os_utils.get_external_net(GlobalVariables.neutron_client)
     if ext_net:
         task_args['floating_network'] = str(ext_net)
     else:
         task_args['floating_network'] = ''
 
-    net_id = network_dict['net_id']
+    net_id = GlobalVariables.network_dict['net_id']
     task_args['netid'] = str(net_id)
 
-    auth_url = os.getenv('OS_AUTH_URL')
+    auth_url = ft_constants.OS_AUTH_URL
     if auth_url is not None:
         task_args['request_url'] = auth_url.rsplit(":", 1)[0]
     else:
@@ -198,7 +191,6 @@ def build_task_args(test_file_name):
 
 
 def get_output(proc, test_name):
-    global SUMMARY
     result = ""
     nb_tests = 0
     overall_duration = 0.0
@@ -255,7 +247,7 @@ def get_output(proc, test_name):
                         'overall_duration': overall_duration,
                         'nb_tests': nb_tests,
                         'success': success_avg}
-    SUMMARY.append(scenario_summary)
+    GlobalVariables.SUMMARY.append(scenario_summary)
 
     logger.debug("\n" + result)
 
@@ -279,8 +271,8 @@ def excl_scenario():
         with open(BLACKLIST_FILE, 'r') as black_list_file:
             black_list_yaml = yaml.safe_load(black_list_file)
 
-        installer_type = os.getenv('INSTALLER_TYPE')
-        deploy_scenario = os.getenv('DEPLOY_SCENARIO')
+        installer_type = ft_constants.CI_INSTALLER_TYPE
+        deploy_scenario = ft_constants.CI_SCENARIO
         if (bool(installer_type) * bool(deploy_scenario)):
             if 'scenario' in black_list_yaml.keys():
                 for item in black_list_yaml['scenario']:
@@ -345,22 +337,24 @@ def apply_blacklist(case_file_name, result_file_name):
 
 
 def prepare_test_list(test_name):
-    scenario_file_name = '{}opnfv-{}.yaml'.format(RALLY_DIR + "scenario/",
-                                                  test_name)
+    test_yaml_file_name = 'opnfv-{}.yaml'.format(test_name)
+    scenario_file_name = os.path.join(RALLY_SCENARIO_DIR, test_yaml_file_name)
+
     if not os.path.exists(scenario_file_name):
         if args.sanity:
-            scenario_file_name = '{}opnfv-{}.yaml'.format(SANITY_MODE_DIR +
-                                                          "/", test_name)
+            scenario_file_name = os.path.join(SANITY_MODE_DIR,
+                                              test_yaml_file_name)
         else:
-            scenario_file_name = '{}opnfv-{}.yaml'.format(FULL_MODE_DIR +
-                                                          "/", test_name)
+            scenario_file_name = os.path.join(FULL_MODE_DIR,
+                                              test_yaml_file_name)
+
         if not os.path.exists(scenario_file_name):
             logger.info("The scenario '%s' does not exist."
                         % scenario_file_name)
             exit(-1)
 
     logger.debug('Scenario fetched from : {}'.format(scenario_file_name))
-    test_file_name = '{}opnfv-{}.yaml'.format(TEMP_DIR + "/", test_name)
+    test_file_name = os.path.join(TEMP_DIR, test_yaml_file_name)
 
     if not os.path.exists(TEMP_DIR):
         os.makedirs(TEMP_DIR)
@@ -385,11 +379,10 @@ def run_task(test_name):
     # :param test_name: name for the rally test
     # :return: void
     #
-    global SUMMARY
     logger.info('Starting test scenario "{}" ...'.format(test_name))
     start_time = time.time()
 
-    task_file = '{}task.yaml'.format(RALLY_DIR)
+    task_file = os.path.join(RALLY_DIR, 'task.yaml')
     if not os.path.exists(task_file):
         logger.error("Task file '%s' does not exist." % task_file)
         exit(-1)
@@ -428,9 +421,10 @@ def run_task(test_name):
         os.makedirs(RESULTS_DIR)
 
     # write html report file
-    report_file_name = '{}opnfv-{}.html'.format(RESULTS_DIR, test_name)
+    report_html_name = 'opnfv-{}.html'.format(test_name)
+    report_html_dir = os.path.join(RESULTS_DIR, report_html_name)
     cmd_line = "rally task report {} --out {}".format(task_id,
-                                                      report_file_name)
+                                                      report_html_dir)
 
     logger.debug('running command line : {}'.format(cmd_line))
     os.popen(cmd_line)
@@ -440,12 +434,13 @@ def run_task(test_name):
     logger.debug('running command line : {}'.format(cmd_line))
     cmd = os.popen(cmd_line)
     json_results = cmd.read()
-    with open('{}opnfv-{}.json'.format(RESULTS_DIR, test_name), 'w') as f:
+    report_json_name = 'opnfv-{}.json'.format(test_name)
+    report_json_dir = os.path.join(RESULTS_DIR, report_json_name)
+    with open(report_json_dir, 'w') as f:
         logger.debug('saving json file')
         f.write(json_results)
 
-    with open('{}opnfv-{}.json'
-              .format(RESULTS_DIR, test_name)) as json_file:
+    with open(report_json_dir) as json_file:
         json_data = json.load(json_file)
 
     """ parse JSON operation result """
@@ -469,12 +464,9 @@ def run_task(test_name):
 
 
 def main():
-    global SUMMARY
-    global network_dict
-    global neutron_client
 
-    nova_client = os_utils.get_nova_client()
-    neutron_client = os_utils.get_neutron_client()
+    GlobalVariables.nova_client = os_utils.get_nova_client()
+    GlobalVariables.neutron_client = os_utils.get_neutron_client()
     cinder_client = os_utils.get_cinder_client()
 
     start_time = time.time()
@@ -484,7 +476,7 @@ def main():
         logger.error('argument not valid')
         exit(-1)
 
-    SUMMARY = []
+    GlobalVariables.SUMMARY = []
 
     volume_types = os_utils.list_volume_types(cinder_client,
                                               private=False)
@@ -506,12 +498,13 @@ def main():
     if not image_id:
         exit(-1)
 
-    logger.debug("Creating network '%s'..." % PRIVATE_NET_NAME)
-    network_dict = os_utils.create_shared_network_full(PRIVATE_NET_NAME,
-                                                       PRIVATE_SUBNET_NAME,
-                                                       ROUTER_NAME,
-                                                       PRIVATE_SUBNET_CIDR)
-    if not network_dict:
+    logger.debug("Creating network '%s'..." % RALLY_PRIVATE_NET_NAME)
+    GlobalVariables.network_dict = \
+        os_utils.create_shared_network_full(RALLY_PRIVATE_NET_NAME,
+                                            RALLY_PRIVATE_SUBNET_NAME,
+                                            RALLY_ROUTER_NAME,
+                                            RALLY_PRIVATE_SUBNET_CIDR)
+    if not GlobalVariables.network_dict:
         exit(1)
 
     if args.test_name == "all":
@@ -541,7 +534,7 @@ def main():
     total_duration = 0.0
     total_nb_tests = 0
     total_success = 0.0
-    for s in SUMMARY:
+    for s in GlobalVariables.SUMMARY:
         name = "{0:<17}".format(s['test_name'])
         duration = float(s['overall_duration'])
         total_duration += duration
@@ -565,8 +558,8 @@ def main():
     total_duration_str2 = "{0:<10}".format(total_duration_str)
     total_nb_tests_str = "{0:<13}".format(total_nb_tests)
 
-    if len(SUMMARY):
-        success_rate = total_success / len(SUMMARY)
+    if len(GlobalVariables.SUMMARY):
+        success_rate = total_success / len(GlobalVariables.SUMMARY)
     else:
         success_rate = 100
     success_rate = "{:0.2f}".format(success_rate)
@@ -609,7 +602,8 @@ def main():
     if not image_exists:
         logger.debug("Deleting image '%s' with ID '%s'..."
                      % (GLANCE_IMAGE_NAME, image_id))
-        if not os_utils.delete_glance_image(nova_client, image_id):
+        if not os_utils.delete_glance_image(GlobalVariables.nova_client,
+                                            image_id):
             logger.error("Error deleting the glance image")
 
     if not volume_types:
index ca671d0..8e298d3 100755 (executable)
@@ -18,8 +18,12 @@ import functest.utils.functest_utils as ft_utils
 import functest.utils.functest_logger as ft_logger
 from run_tempest import configure_tempest
 from run_tempest import TEMPEST_RESULTS_DIR
+import functest.utils.functest_constants as ft_constants
 
-logger = ft_logger.Logger("multisite").getLogger()
+logger = ft_logger.Logger("gen_tempest_conf").getLogger()
+
+CI_INSTALLER_TYPE = ft_constants.CI_INSTALLER_TYPE
+CI_INSTALLER_IP = ft_constants.CI_INSTALLER_IP
 
 
 def configure_tempest_multisite(deployment_dir):
@@ -30,16 +34,16 @@ def configure_tempest_multisite(deployment_dir):
     configure_tempest(deployment_dir)
 
     logger.debug("Finding tempest.conf file...")
-    tempest_conf_file = deployment_dir + "/tempest.conf"
-    if not os.path.isfile(tempest_conf_file):
+    tempest_conf_old = os.path.join(deployment_dir, '/tempest.conf')
+    if not os.path.isfile(tempest_conf_old):
         logger.error("Tempest configuration file %s NOT found."
-                     % tempest_conf_file)
+                     % tempest_conf_old)
         exit(-1)
 
     # Copy tempest.conf to /home/opnfv/functest/results/tempest/
     cur_path = os.path.split(os.path.realpath(__file__))[0]
-    shutil.copyfile(tempest_conf_file, cur_path + '/tempest_multisite.conf')
-    tempest_conf_file = cur_path + "/tempest_multisite.conf"
+    tempest_conf_file = os.path.join(cur_path, '/tempest_multisite.conf')
+    shutil.copyfile(tempest_conf_old, tempest_conf_file)
 
     logger.debug("Updating selected tempest.conf parameters...")
     config = ConfigParser.RawConfigParser()
@@ -49,12 +53,12 @@ def configure_tempest_multisite(deployment_dir):
     cmd = "openstack endpoint show kingbird | grep publicurl |\
            awk '{print $4}' | awk -F '/' '{print $4}'"
     kingbird_api_version = os.popen(cmd).read()
-    if os.environ.get("INSTALLER_TYPE") == 'fuel':
+    if CI_INSTALLER_TYPE == 'fuel':
         # For MOS based setup, the service is accessible
         # via bind host
         kingbird_conf_path = "/etc/kingbird/kingbird.conf"
-        installer_type = os.getenv('INSTALLER_TYPE', 'Unknown')
-        installer_ip = os.getenv('INSTALLER_IP', 'Unknown')
+        installer_type = CI_INSTALLER_TYPE
+        installer_ip = CI_INSTALLER_IP
         installer_username = ft_utils.get_functest_config(
             "multisite." + installer_type +
             "_environment.installer_username")
index d2c01c6..cbf92c1 100755 (executable)
@@ -27,6 +27,7 @@ import yaml
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
+import functest.utils.functest_constants as ft_constants
 
 modes = ['full', 'smoke', 'baremetal', 'compute', 'data_processing',
          'identity', 'image', 'network', 'object_storage', 'orchestration',
@@ -58,69 +59,50 @@ args = parser.parse_args()
 """ logging configuration """
 logger = ft_logger.Logger("run_tempest").getLogger()
 
-TEST_DB = ft_utils.get_functest_config('results.test_db_url')
-
-MODE = "smoke"
-GLANCE_IMAGE_NAME = \
-    ft_utils.get_functest_config('general.openstack.image_name')
-GLANCE_IMAGE_FILENAME = \
-    ft_utils.get_functest_config('general.openstack.image_file_name')
-GLANCE_IMAGE_FORMAT = \
-    ft_utils.get_functest_config('general.openstack.image_disk_format')
-GLANCE_IMAGE_PATH = \
-    ft_utils.get_functest_config('general.directories.dir_functest_data') + \
+GLANCE_IMAGE_NAME = ft_constants.GLANCE_IMAGE_NAME
+GLANCE_IMAGE_FILENAME = ft_constants.GLANCE_IMAGE_FILENAME
+GLANCE_IMAGE_FORMAT = ft_constants.GLANCE_IMAGE_FORMAT
+GLANCE_IMAGE_PATH = ft_constants.FUNCTEST_DATA_DIR + \
     "/" + GLANCE_IMAGE_FILENAME
-IMAGE_ID = None
 IMAGE_ID_ALT = None
 
-FLAVOR_NAME = \
-    ft_utils.get_functest_config('general.openstack.flavor_name')
-FLAVOR_RAM = ft_utils.get_functest_config('general.openstack.flavor_ram')
-FLAVOR_DISK = ft_utils.get_functest_config('general.openstack.flavor_disk')
-FLAVOR_VCPUS = ft_utils.get_functest_config('general.openstack.flavor_vcpus')
-FLAVOR_ID = None
+FLAVOR_NAME = ft_constants.FLAVOR_NAME
+FLAVOR_RAM = ft_constants.FLAVOR_RAM
+FLAVOR_DISK = ft_constants.FLAVOR_DISK
+FLAVOR_VCPUS = ft_constants.FLAVOR_VCPUS
 FLAVOR_ID_ALT = None
 
-PRIVATE_NET_NAME = \
-    ft_utils.get_functest_config('tempest.private_net_name')
-PRIVATE_SUBNET_NAME = \
-    ft_utils.get_functest_config('tempest.private_subnet_name')
-PRIVATE_SUBNET_CIDR = \
-    ft_utils.get_functest_config('tempest.private_subnet_cidr')
-ROUTER_NAME = \
-    ft_utils.get_functest_config('tempest.router_name')
-TENANT_NAME = \
-    ft_utils.get_functest_config('tempest.identity.tenant_name')
-TENANT_DESCRIPTION = \
-    ft_utils.get_functest_config('tempest.identity.tenant_description')
-USER_NAME = \
-    ft_utils.get_functest_config('tempest.identity.user_name')
-USER_PASSWORD = \
-    ft_utils.get_functest_config('tempest.identity.user_password')
-SSH_TIMEOUT = \
-    ft_utils.get_functest_config('tempest.validation.ssh_timeout')
-USE_CUSTOM_IMAGES = \
-    ft_utils.get_functest_config('tempest.use_custom_images')
-USE_CUSTOM_FLAVORS = \
-    ft_utils.get_functest_config('tempest.use_custom_flavors')
-
-DEPLOYMENT_MAME = \
-    ft_utils.get_functest_config('rally.deployment_name')
-RALLY_INSTALLATION_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_rally_inst')
-
-RESULTS_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_results')
-TEMPEST_RESULTS_DIR = RESULTS_DIR + '/tempest'
-
-REPO_PATH = ft_utils.FUNCTEST_REPO + '/'
-TEST_LIST_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_tempest_cases')
-TEMPEST_CUSTOM = REPO_PATH + TEST_LIST_DIR + 'test_list.txt'
-TEMPEST_BLACKLIST = REPO_PATH + TEST_LIST_DIR + 'blacklist.txt'
-TEMPEST_DEFCORE = REPO_PATH + TEST_LIST_DIR + 'defcore_req.txt'
-TEMPEST_RAW_LIST = TEMPEST_RESULTS_DIR + '/test_raw_list.txt'
-TEMPEST_LIST = TEMPEST_RESULTS_DIR + '/test_list.txt'
+TEMPEST_PRIVATE_NET_NAME = ft_constants.TEMPEST_PRIVATE_NET_NAME
+TEMPEST_PRIVATE_SUBNET_NAME = ft_constants.TEMPEST_PRIVATE_SUBNET_NAME
+TEMPEST_PRIVATE_SUBNET_CIDR = ft_constants.TEMPEST_PRIVATE_SUBNET_CIDR
+TEMPEST_ROUTER_NAME = ft_constants.TEMPEST_ROUTER_NAME
+TEMPEST_TENANT_NAME = ft_constants.TEMPEST_TENANT_NAME
+TEMPEST_TENANT_DESCRIPTION = ft_constants.TEMPEST_TENANT_DESCRIPTION
+TEMPEST_USER_NAME = ft_constants.TEMPEST_USER_NAME
+TEMPEST_USER_PASSWORD = ft_constants.TEMPEST_USER_PASSWORD
+TEMPEST_SSH_TIMEOUT = ft_constants.TEMPEST_SSH_TIMEOUT
+TEMPEST_USE_CUSTOM_IMAGES = ft_constants.TEMPEST_USE_CUSTOM_IMAGES
+TEMPEST_USE_CUSTOM_FLAVORS = ft_constants.TEMPEST_USE_CUSTOM_FLAVORS
+
+RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
+TEMPEST_RESULTS_DIR = os.path.join(RESULTS_DIR, 'tempest')
+
+REPO_PATH = ft_constants.FUNCTEST_REPO_DIR
+TEMPEST_TEST_LIST_DIR = ft_constants.TEMPEST_TEST_LIST_DIR
+TEMPEST_CUSTOM = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
+                              'test_list.txt')
+TEMPEST_BLACKLIST = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
+                                 'blacklist.txt')
+TEMPEST_DEFCORE = os.path.join(REPO_PATH, TEMPEST_TEST_LIST_DIR,
+                               'defcore_req.txt')
+TEMPEST_RAW_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_raw_list.txt')
+TEMPEST_LIST = os.path.join(TEMPEST_RESULTS_DIR, 'test_list.txt')
+
+
+class GlobalVariables:
+    IMAGE_ID = None
+    FLAVOR_ID = None
+    MODE = "smoke"
 
 
 def get_info(file_result):
@@ -150,43 +132,41 @@ def create_tempest_resources():
 
     logger.debug("Creating tenant and user for Tempest suite")
     tenant_id = os_utils.create_tenant(keystone_client,
-                                       TENANT_NAME,
-                                       TENANT_DESCRIPTION)
+                                       TEMPEST_TENANT_NAME,
+                                       TEMPEST_TENANT_DESCRIPTION)
     if not tenant_id:
-        logger.error("Error : Failed to create %s tenant" % TENANT_NAME)
+        logger.error("Error : Failed to create %s tenant"
+                     % TEMPEST_TENANT_NAME)
 
-    user_id = os_utils.create_user(keystone_client, USER_NAME, USER_PASSWORD,
+    user_id = os_utils.create_user(keystone_client, TEMPEST_USER_NAME,
+                                   TEMPEST_USER_PASSWORD,
                                    None, tenant_id)
     if not user_id:
-        logger.error("Error : Failed to create %s user" % USER_NAME)
+        logger.error("Error : Failed to create %s user" % TEMPEST_USER_NAME)
 
     logger.debug("Creating private network for Tempest suite")
-    network_dic = os_utils.create_shared_network_full(PRIVATE_NET_NAME,
-                                                      PRIVATE_SUBNET_NAME,
-                                                      ROUTER_NAME,
-                                                      PRIVATE_SUBNET_CIDR)
+    network_dic = \
+        os_utils.create_shared_network_full(TEMPEST_PRIVATE_NET_NAME,
+                                            TEMPEST_PRIVATE_SUBNET_NAME,
+                                            TEMPEST_ROUTER_NAME,
+                                            TEMPEST_PRIVATE_SUBNET_CIDR)
     if not network_dic:
         exit(1)
 
-    if USE_CUSTOM_IMAGES:
+    if TEMPEST_USE_CUSTOM_IMAGES:
         # adding alternative image should be trivial should we need it
         logger.debug("Creating image for Tempest suite")
-        global IMAGE_ID
-        _, IMAGE_ID = os_utils.get_or_create_image(GLANCE_IMAGE_NAME,
-                                                   GLANCE_IMAGE_PATH,
-                                                   GLANCE_IMAGE_FORMAT)
-        if not IMAGE_ID:
+        _, GlobalVariables.IMAGE_ID = os_utils.get_or_create_image(
+            GLANCE_IMAGE_NAME, GLANCE_IMAGE_PATH, GLANCE_IMAGE_FORMAT)
+        if not GlobalVariables.IMAGE_ID:
             exit(-1)
 
-    if USE_CUSTOM_FLAVORS:
+    if TEMPEST_USE_CUSTOM_FLAVORS:
         # adding alternative flavor should be trivial should we need it
         logger.debug("Creating flavor for Tempest suite")
-        global FLAVOR_ID
-        _, FLAVOR_ID = os_utils.get_or_create_flavor(FLAVOR_NAME,
-                                                     FLAVOR_RAM,
-                                                     FLAVOR_DISK,
-                                                     FLAVOR_VCPUS)
-        if not FLAVOR_ID:
+        _, GlobalVariables.FLAVOR_ID = os_utils.get_or_create_flavor(
+            FLAVOR_NAME, FLAVOR_RAM, FLAVOR_DISK, FLAVOR_VCPUS)
+        if not GlobalVariables.FLAVOR_ID:
             exit(-1)
 
 
@@ -213,23 +193,23 @@ def configure_tempest(deployment_dir):
     logger.debug("Updating selected tempest.conf parameters...")
     config = ConfigParser.RawConfigParser()
     config.read(tempest_conf_file)
-    config.set('compute', 'fixed_network_name', PRIVATE_NET_NAME)
-    if USE_CUSTOM_IMAGES:
-        if IMAGE_ID is not None:
-            config.set('compute', 'image_ref', IMAGE_ID)
+    config.set('compute', 'fixed_network_name', TEMPEST_PRIVATE_NET_NAME)
+    if TEMPEST_USE_CUSTOM_IMAGES:
+        if GlobalVariables.IMAGE_ID is not None:
+            config.set('compute', 'image_ref', GlobalVariables.IMAGE_ID)
         if IMAGE_ID_ALT is not None:
             config.set('compute', 'image_ref_alt', IMAGE_ID_ALT)
-    if USE_CUSTOM_FLAVORS:
-        if FLAVOR_ID is not None:
-            config.set('compute', 'flavor_ref', FLAVOR_ID)
+    if TEMPEST_USE_CUSTOM_FLAVORS:
+        if GlobalVariables.FLAVOR_ID is not None:
+            config.set('compute', 'flavor_ref', GlobalVariables.FLAVOR_ID)
         if FLAVOR_ID_ALT is not None:
             config.set('compute', 'flavor_ref_alt', FLAVOR_ID_ALT)
-    config.set('identity', 'tenant_name', TENANT_NAME)
-    config.set('identity', 'username', USER_NAME)
-    config.set('identity', 'password', USER_PASSWORD)
-    config.set('validation', 'ssh_timeout', SSH_TIMEOUT)
+    config.set('identity', 'tenant_name', TEMPEST_TENANT_NAME)
+    config.set('identity', 'username', TEMPEST_USER_NAME)
+    config.set('identity', 'password', TEMPEST_USER_PASSWORD)
+    config.set('validation', 'ssh_timeout', TEMPEST_SSH_TIMEOUT)
 
-    if os.getenv('OS_ENDPOINT_TYPE') is not None:
+    if ft_constants.OS_ENDPOINT_TYPE is not None:
         services_list = ['compute', 'volume', 'image', 'network',
                          'data-processing', 'object-storage', 'orchestration']
         sections = config.sections()
@@ -237,7 +217,7 @@ def configure_tempest(deployment_dir):
             if service not in sections:
                 config.add_section(service)
             config.set(service, 'endpoint_type',
-                       os.environ.get("OS_ENDPOINT_TYPE"))
+                       ft_constants.OS_ENDPOINT_TYPE)
 
     with open(tempest_conf_file, 'wb') as config_file:
         config.write(config_file)
@@ -283,8 +263,8 @@ def apply_tempest_blacklist():
     result_file = open(TEMPEST_LIST, 'w')
     black_tests = []
     try:
-        installer_type = os.getenv('INSTALLER_TYPE')
-        deploy_scenario = os.getenv('DEPLOY_SCENARIO')
+        installer_type = ft_constants.CI_INSTALLER_TYPE
+        deploy_scenario = ft_constants.CI_SCENARIO
         if (bool(installer_type) * bool(deploy_scenario)):
             # if INSTALLER_TYPE and DEPLOY_SCENARIO are set we read the file
             black_list_file = open(TEMPEST_BLACKLIST)
@@ -325,9 +305,9 @@ def run_tempest(OPTION):
 
     header = ("Tempest environment:\n"
               "  Installer: %s\n  Scenario: %s\n  Node: %s\n  Date: %s\n" %
-              (os.getenv('INSTALLER_TYPE', 'Unknown'),
-               os.getenv('DEPLOY_SCENARIO', 'Unknown'),
-               os.getenv('NODE_NAME', 'Unknown'),
+              (ft_constants.CI_INSTALLER_TYPE,
+               ft_constants.CI_SCENARIO,
+               ft_constants.CI_NODE,
                time.strftime("%a %b %d %H:%M:%S %Z %Y")))
 
     f_stdout = open(TEMPEST_RESULTS_DIR + "/tempest.log", 'w+')
@@ -434,7 +414,6 @@ def run_tempest(OPTION):
 
 
 def main():
-    global MODE
 
     if not (args.mode in modes):
         logger.error("Tempest mode not valid. "
@@ -448,19 +427,19 @@ def main():
     create_tempest_resources()
 
     if "" == args.conf:
-        MODE = ""
+        GlobalVariables.MODE = ""
         configure_tempest(deployment_dir)
     else:
-        MODE = " --tempest-config " + args.conf
+        GlobalVariables.MODE = " --tempest-config " + args.conf
 
     generate_test_list(deployment_dir, args.mode)
     apply_tempest_blacklist()
 
-    MODE += " --tests-file " + TEMPEST_LIST
+    GlobalVariables.MODE += " --tests-file " + TEMPEST_LIST
     if args.serial:
-        MODE += " --concur 1"
+        GlobalVariables.MODE += " --concur 1"
 
-    ret_val = run_tempest(MODE)
+    ret_val = run_tempest(GlobalVariables.MODE)
     if ret_val != 0:
         sys.exit(-1)
 
index ab01626..d003779 100755 (executable)
@@ -20,7 +20,7 @@ import time
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as functest_utils
-
+import functest.utils.functest_constants as ft_constants
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-r", "--report",
@@ -28,16 +28,14 @@ parser.add_argument("-r", "--report",
                     action="store_true")
 args = parser.parse_args()
 
-COPPER_REPO = \
-    functest_utils.get_functest_config('general.directories.dir_repo_copper')
-RESULTS_DIR = \
-    functest_utils.get_functest_config('general.directories.dir_results')
+COPPER_REPO_DIR = ft_constants.COPPER_REPO_DIR
+RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
 
 logger = ft_logger.Logger("copper").getLogger()
 
 
 def main():
-    cmd = "%s/tests/run.sh %s/tests" % (COPPER_REPO, COPPER_REPO)
+    cmd = "%s/tests/run.sh %s/tests" % (COPPER_REPO_DIR, COPPER_REPO_DIR)
 
     start_time = time.time()
 
@@ -80,5 +78,6 @@ def main():
 
     sys.exit(0)
 
+
 if __name__ == '__main__':
     main()
index 00e5c1d..dbd803a 100755 (executable)
@@ -19,7 +19,7 @@ import time
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as functest_utils
-
+import functest.utils.functest_constants as ft_constants
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-r", "--report",
@@ -29,10 +29,8 @@ args = parser.parse_args()
 
 functest_yaml = functest_utils.get_functest_yaml()
 
-DOCTOR_REPO = \
-    functest_utils.get_functest_config('general.directories.dir_repo_doctor')
-RESULTS_DIR = \
-    functest_utils.get_functest_config('general.directories.dir_results')
+DOCTOR_REPO_DIR = ft_constants.DOCTOR_REPO_DIR
+RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
 
 logger = ft_logger.Logger("doctor").getLogger()
 
@@ -45,7 +43,7 @@ def main():
     if 'doctor' in functest_yaml and 'image_name' in functest_yaml['doctor']:
         os.environ["IMAGE_NAME"] = functest_yaml['doctor']['image_name']
 
-    cmd = 'cd %s/tests && ./run.sh' % DOCTOR_REPO
+    cmd = 'cd %s/tests && ./run.sh' % DOCTOR_REPO_DIR
     log_file = RESULTS_DIR + "/doctor.log"
 
     start_time = time.time()
@@ -86,5 +84,6 @@ def main():
 
     exit(exit_code)
 
+
 if __name__ == '__main__':
     main()
index be3dd54..2deeb4c 100755 (executable)
@@ -21,13 +21,12 @@ import time
 from functest.core import TestCasesBase
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_constants as ft_constants
 
 
 class DominoCases(TestCasesBase.TestCasesBase):
-    DOMINO_REPO = \
-        ft_utils.get_functest_config('general.directories.dir_repo_domino')
-    RESULTS_DIR = \
-        ft_utils.get_functest_config('general.directories.dir_results')
+    DOMINO_REPO = ft_constants.DOMINO_REPO
+    RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
     logger = ft_logger.Logger("domino").getLogger()
 
     def __init__(self):
@@ -66,6 +65,7 @@ class DominoCases(TestCasesBase.TestCasesBase):
         kwargs = {}
         return self.main(**kwargs)
 
+
 if __name__ == '__main__':
     parser = argparse.ArgumentParser()
     parser.add_argument("-r", "--report",
index 6d49218..15cfe2a 100755 (executable)
@@ -17,5 +17,6 @@ logger = ft_logger.Logger("multisite").getLogger()
 def main():
     logger.info("multisite OK")
 
+
 if __name__ == '__main__':
     main()
index e198bde..0a30e3a 100755 (executable)
@@ -21,7 +21,7 @@ import functest.utils.openstack_utils as openstack_utils
 import keystoneclient.v2_0.client as ksclient
 from neutronclient.v2_0 import client as ntclient
 import novaclient.client as nvclient
-
+import functest.utils.functest_constants as ft_constants
 
 parser = argparse.ArgumentParser()
 
@@ -32,34 +32,29 @@ parser.add_argument("-r", "--report",
 args = parser.parse_args()
 
 
-dirs = ft_utils.get_functest_config('general.directories')
-PROMISE_REPO = dirs.get('dir_repo_promise')
-RESULTS_DIR = ft_utils.get_functest_config('general.directories.dir_results')
+PROMISE_REPO_DIR = ft_constants.PROMISE_REPO_DIR
+RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
 
-TENANT_NAME = ft_utils.get_functest_config('promise.tenant_name')
-TENANT_DESCRIPTION = \
-    ft_utils.get_functest_config('promise.tenant_description')
-USER_NAME = ft_utils.get_functest_config('promise.user_name')
-USER_PWD = ft_utils.get_functest_config('promise.user_pwd')
-IMAGE_NAME = ft_utils.get_functest_config('promise.image_name')
-FLAVOR_NAME = ft_utils.get_functest_config('promise.flavor_name')
-FLAVOR_VCPUS = ft_utils.get_functest_config('promise.flavor_vcpus')
-FLAVOR_RAM = ft_utils.get_functest_config('promise.flavor_ram')
-FLAVOR_DISK = ft_utils.get_functest_config('promise.flavor_disk')
+PROMISE_TENANT_NAME = ft_constants.PROMISE_TENANT_NAME
+TENANT_DESCRIPTION = ft_constants.TENANT_DESCRIPTION
+PROMISE_USER_NAME = ft_constants.PROMISE_USER_NAME
+PROMISE_USER_PWD = ft_constants.PROMISE_USER_PWD
+PROMISE_IMAGE_NAME = ft_constants.PROMISE_IMAGE_NAME
+PROMISE_FLAVOR_NAME = ft_constants.PROMISE_FLAVOR_NAME
+PROMISE_FLAVOR_VCPUS = ft_constants.PROMISE_FLAVOR_VCPUS
+PROMISE_FLAVOR_RAM = ft_constants.PROMISE_FLAVOR_RAM
+PROMISE_FLAVOR_DISK = ft_constants.PROMISE_FLAVOR_DISK
 
 
-GLANCE_IMAGE_FILENAME = \
-    ft_utils.get_functest_config('general.openstack.image_file_name')
-GLANCE_IMAGE_FORMAT = \
-    ft_utils.get_functest_config('general.openstack.image_disk_format')
-GLANCE_IMAGE_PATH = \
-    ft_utils.get_functest_config('general.directories.dir_functest_data') + \
-    "/" + GLANCE_IMAGE_FILENAME
+GLANCE_IMAGE_FILENAME = ft_constants.GLANCE_IMAGE_FILENAME
+GLANCE_IMAGE_FORMAT = ft_constants.GLANCE_IMAGE_FORMAT
+GLANCE_IMAGE_PATH = os.path.join(ft_constants.FUNCTEST_DATA_DIR,
+                                 GLANCE_IMAGE_FILENAME)
 
-NET_NAME = ft_utils.get_functest_config('promise.network_name')
-SUBNET_NAME = ft_utils.get_functest_config('promise.subnet_name')
-SUBNET_CIDR = ft_utils.get_functest_config('promise.subnet_cidr')
-ROUTER_NAME = ft_utils.get_functest_config('promise.router_name')
+PROMISE_NET_NAME = ft_constants.PROMISE_NET_NAME
+PROMISE_SUBNET_NAME = ft_constants.PROMISE_SUBNET_NAME
+PROMISE_SUBNET_CIDR = ft_constants.PROMISE_SUBNET_CIDR
+PROMISE_ROUTER_NAME = ft_constants.PROMISE_ROUTER_NAME
 
 
 """ logging configuration """
@@ -81,13 +76,14 @@ def main():
                      ks_creds['username'])
         exit(-1)
 
-    logger.info("Creating tenant '%s'..." % TENANT_NAME)
+    logger.info("Creating tenant '%s'..." % PROMISE_TENANT_NAME)
     tenant_id = openstack_utils.create_tenant(
-        keystone, TENANT_NAME, TENANT_DESCRIPTION)
+        keystone, PROMISE_TENANT_NAME, TENANT_DESCRIPTION)
     if not tenant_id:
-        logger.error("Error : Failed to create %s tenant" % TENANT_NAME)
+        logger.error("Error : Failed to create %s tenant"
+                     % PROMISE_TENANT_NAME)
         exit(-1)
-    logger.debug("Tenant '%s' created successfully." % TENANT_NAME)
+    logger.debug("Tenant '%s' created successfully." % PROMISE_TENANT_NAME)
 
     roles_name = ["admin", "Admin"]
     role_id = ''
@@ -99,90 +95,91 @@ def main():
         logger.error("Error : Failed to get id for %s role" % role_name)
         exit(-1)
 
-    logger.info("Adding role '%s' to tenant '%s'..." % (role_id, TENANT_NAME))
+    logger.info("Adding role '%s' to tenant '%s'..."
+                % (role_id, PROMISE_TENANT_NAME))
     if not openstack_utils.add_role_user(keystone, user_id,
                                          role_id, tenant_id):
         logger.error("Error : Failed to add %s on tenant %s" %
-                     (ks_creds['username'], TENANT_NAME))
+                     (ks_creds['username'], PROMISE_TENANT_NAME))
         exit(-1)
     logger.debug("Role added successfully.")
 
-    logger.info("Creating user '%s'..." % USER_NAME)
+    logger.info("Creating user '%s'..." % PROMISE_USER_NAME)
     user_id = openstack_utils.create_user(
-        keystone, USER_NAME, USER_PWD, None, tenant_id)
+        keystone, PROMISE_USER_NAME, PROMISE_USER_PWD, None, tenant_id)
 
     if not user_id:
-        logger.error("Error : Failed to create %s user" % USER_NAME)
+        logger.error("Error : Failed to create %s user" % PROMISE_USER_NAME)
         exit(-1)
-    logger.debug("User '%s' created successfully." % USER_NAME)
+    logger.debug("User '%s' created successfully." % PROMISE_USER_NAME)
 
     logger.info("Updating OpenStack credentials...")
     ks_creds.update({
-        "username": TENANT_NAME,
-        "password": TENANT_NAME,
-        "tenant_name": TENANT_NAME,
+        "username": PROMISE_TENANT_NAME,
+        "password": PROMISE_TENANT_NAME,
+        "tenant_name": PROMISE_TENANT_NAME,
     })
 
     nt_creds.update({
-        "tenant_name": TENANT_NAME,
+        "tenant_name": PROMISE_TENANT_NAME,
     })
 
     nv_creds.update({
-        "project_id": TENANT_NAME,
+        "project_id": PROMISE_TENANT_NAME,
     })
 
     glance = openstack_utils.get_glance_client()
     nova = nvclient.Client("2", **nv_creds)
 
-    logger.info("Creating image '%s' from '%s'..." % (IMAGE_NAME,
+    logger.info("Creating image '%s' from '%s'..." % (PROMISE_IMAGE_NAME,
                                                       GLANCE_IMAGE_PATH))
     image_id = openstack_utils.create_glance_image(glance,
-                                                   IMAGE_NAME,
+                                                   PROMISE_IMAGE_NAME,
                                                    GLANCE_IMAGE_PATH)
     if not image_id:
         logger.error("Failed to create the Glance image...")
         exit(-1)
-    logger.debug("Image '%s' with ID '%s' created successfully." % (IMAGE_NAME,
-                                                                    image_id))
-    flavor_id = openstack_utils.get_flavor_id(nova, FLAVOR_NAME)
+    logger.debug("Image '%s' with ID '%s' created successfully."
+                 % (PROMISE_IMAGE_NAME, image_id))
+    flavor_id = openstack_utils.get_flavor_id(nova, PROMISE_FLAVOR_NAME)
     if flavor_id == '':
-        logger.info("Creating flavor '%s'..." % FLAVOR_NAME)
+        logger.info("Creating flavor '%s'..." % PROMISE_FLAVOR_NAME)
         flavor_id = openstack_utils.create_flavor(nova,
-                                                  FLAVOR_NAME,
-                                                  FLAVOR_RAM,
-                                                  FLAVOR_DISK,
-                                                  FLAVOR_VCPUS)
+                                                  PROMISE_FLAVOR_NAME,
+                                                  PROMISE_FLAVOR_RAM,
+                                                  PROMISE_FLAVOR_DISK,
+                                                  PROMISE_FLAVOR_VCPUS)
         if not flavor_id:
             logger.error("Failed to create the Flavor...")
             exit(-1)
         logger.debug("Flavor '%s' with ID '%s' created successfully." %
-                     (FLAVOR_NAME, flavor_id))
+                     (PROMISE_FLAVOR_NAME, flavor_id))
     else:
         logger.debug("Using existing flavor '%s' with ID '%s'..."
-                     % (FLAVOR_NAME, flavor_id))
+                     % (PROMISE_FLAVOR_NAME, flavor_id))
 
     neutron = ntclient.Client(**nt_creds)
 
     network_dic = openstack_utils.create_network_full(neutron,
-                                                      NET_NAME,
-                                                      SUBNET_NAME,
-                                                      ROUTER_NAME,
-                                                      SUBNET_CIDR)
+                                                      PROMISE_NET_NAME,
+                                                      PROMISE_SUBNET_NAME,
+                                                      PROMISE_ROUTER_NAME,
+                                                      PROMISE_SUBNET_CIDR)
     if not network_dic:
         logger.error("Failed to create the private network...")
         exit(-1)
 
     logger.info("Exporting environment variables...")
     os.environ["NODE_ENV"] = "functest"
-    os.environ["OS_TENANT_NAME"] = TENANT_NAME
-    os.environ["OS_USERNAME"] = USER_NAME
-    os.environ["OS_PASSWORD"] = USER_PWD
+    os.environ["OS_PASSWORD"] = PROMISE_USER_PWD
     os.environ["OS_TEST_IMAGE"] = image_id
     os.environ["OS_TEST_FLAVOR"] = flavor_id
     os.environ["OS_TEST_NETWORK"] = network_dic["net_id"]
+    os.environ["OS_TENANT_NAME"] = PROMISE_TENANT_NAME
+    os.environ["OS_USERNAME"] = PROMISE_USER_NAME
 
-    os.chdir(PROMISE_REPO + '/source/')
-    results_file_name = RESULTS_DIR + '/' + 'promise-results.json'
+    os.chdir(PROMISE_REPO_DIR + '/source/')
+    results_file_name = os.path.join(RESULTS_DIR, 'promise-results.json')
     results_file = open(results_file_name, 'w+')
     cmd = 'npm run -s test -- --reporter json'
 
index 18ca96d..3d5456c 100644 (file)
@@ -15,9 +15,10 @@ import socket
 import paramiko
 
 import functest.utils.functest_logger as ft_logger
+import functest.utils.functest_constants as ft_constants
 
 # add installer IP from env
-INSTALLER_IP = os.getenv('INSTALLER_IP')
+INSTALLER_IP = ft_constants.CI_INSTALLER_IP
 
 # Set up loggers
 logger = ft_logger.Logger("security_scan").getLogger()
index 1bed50a..d417d17 100644 (file)
@@ -22,4 +22,6 @@ def is_connected():
         return True
     except:
         return False
+
+
 print is_connected()
index 4e0407f..f067392 100755 (executable)
@@ -24,23 +24,23 @@ from keystoneclient.auth.identity import v2
 from novaclient import client
 
 import connect
-import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_constants as ft_constants
 
 __version__ = 0.1
 __author__ = 'Luke Hinds (lhinds@redhat.com)'
 __url__ = 'https://wiki.opnfv.org/display/functest/Functest+Security'
 
 # Global vars
-INSTALLER_IP = os.getenv('INSTALLER_IP')
+INSTALLER_IP = ft_constants.CI_INSTALLER_IP
 oscapbin = 'sudo /bin/oscap'
-functest_dir = '%s/opnfv_tests/security_scan/' % ft_utils.FUNCTEST_REPO
+functest_dir = '%s/security_scan/' % ft_constants.FUNCTEST_TEST_DIR
 
 # Apex Spefic var needed to query Undercloud
-if os.getenv('OS_AUTH_URL') is None:
+if ft_constants.OS_AUTH_URL is None:
     connect.logger.error(" Enviroment variable OS_AUTH_URL is not set")
     sys.exit(0)
 else:
-    OS_AUTH_URL = os.getenv('OS_AUTH_URL')
+    OS_AUTH_URL = ft_constants.OS_AUTH_URL
 
 # args
 parser = argparse.ArgumentParser(description='OPNFV OpenSCAP Scanner')
@@ -71,6 +71,10 @@ sess = session.Session(auth=auth)
 nova = client.Client(2, session=sess)
 
 
+class GlobalVariables:
+    tmpdir = ""
+
+
 def run_tests(host, nodetype):
     user = cfgparse.get(nodetype, 'user')
     port = cfgparse.get(nodetype, 'port')
@@ -133,13 +137,12 @@ def internet_check(host, nodetype):
 
 def createfiles(host, port, user, localkey):
     import connect
-    global tmpdir
     localpath = functest_dir + 'scripts/createfiles.py'
     remotepath = '/tmp/createfiles.py'
     com = 'python /tmp/createfiles.py'
     connect = connect.ConnectionManager(host, port, user, localkey,
                                         localpath, remotepath, com)
-    tmpdir = connect.remotescript()
+    GlobalVariables.tmpdir = connect.remotescript()
 
 
 def install_pkg(host, port, user, localkey):
@@ -160,18 +163,20 @@ def run_scanner(host, port, user, localkey, nodetype):
     if scantype == 'xccdf':
         cpe = cfgparse.get(nodetype, 'cpe')
         com = '{0} xccdf eval --profile {1} --results {2}/{3}' \
-              ' --report {2}/{4} --cpe {5} {6}'.format(oscapbin,
-                                                       profile,
-                                                       tmpdir.rstrip(),
-                                                       results,
-                                                       report,
-                                                       cpe,
-                                                       secpolicy)
+              ' --report {2}/{4}' \
+              ' --cpe {5} {6}'.format(oscapbin,
+                                      profile,
+                                      GlobalVariables.tmpdir.rstrip(),
+                                      results,
+                                      report,
+                                      cpe,
+                                      secpolicy)
         connect = connect.ConnectionManager(host, port, user, localkey, com)
         connect.remotecmd()
     elif scantype == 'oval':
         com = '{0} oval eval --results {1}/{2} '
-        '--report {1}/{3} {4}'.format(oscapbin, tmpdir.rstrip(),
+        '--report {1}/{3} {4}'.format(oscapbin,
+                                      GlobalVariables.tmpdir.rstrip(),
                                       results, report, secpolicy)
         connect = connect.ConnectionManager(host, port, user, localkey, com)
         connect.remotecmd()
@@ -191,7 +196,7 @@ def post_tasks(host, port, user, localkey, nodetype):
     os.makedirs(dl_folder, 0755)
     report = cfgparse.get(nodetype, 'report')
     results = cfgparse.get(nodetype, 'results')
-    reportfile = '{0}/{1}'.format(tmpdir.rstrip(), report)
+    reportfile = '{0}/{1}'.format(GlobalVariables.tmpdir.rstrip(), report)
     connect = connect.ConnectionManager(host, port, user, localkey, dl_folder,
                                         reportfile, report, results)
     connect.download_reports()
@@ -206,7 +211,7 @@ def removepkg(host, port, user, localkey, nodetype):
 
 def cleandir(host, port, user, localkey, nodetype):
     import connect
-    com = 'sudo rm -r {0}'.format(tmpdir.rstrip())
+    com = 'sudo rm -r {0}'.format(GlobalVariables.tmpdir.rstrip())
     connect = connect.ConnectionManager(host, port, user, localkey, com)
     connect.remotecmd()
 
index 50aa715..4cc8ce3 100755 (executable)
@@ -29,6 +29,7 @@ import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 from clearwater import clearwater
 from orchestrator import orchestrator
+import functest.utils.functest_constants as ft_constants
 
 pp = pprint.PrettyPrinter(indent=4)
 
@@ -48,39 +49,21 @@ logger = ft_logger.Logger("vIMS").getLogger()
 
 
 # Cloudify parameters
-VIMS_DIR = ft_utils.FUNCTEST_REPO + '/' + \
-           ft_utils.get_functest_config('general.directories.dir_vIMS')
-
-VIMS_DATA_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_vIMS_data') + \
-    '/'
-VIMS_TEST_DIR = \
-    ft_utils.get_functest_config('general.directories.dir_repo_vims_test') + \
-    '/'
-DB_URL = \
-    ft_utils.get_functest_config('results.test_db_url')
-
-TENANT_NAME = \
-    ft_utils.get_functest_config('vIMS.general.tenant_name')
-TENANT_DESCRIPTION = \
-    ft_utils.get_functest_config('vIMS.general.tenant_description')
-IMAGES = \
-    ft_utils.get_functest_config('vIMS.general.images')
-
-CFY_MANAGER_BLUEPRINT = \
-    ft_utils.get_functest_config('vIMS.cloudify.blueprint')
-CFY_MANAGER_REQUIERMENTS = \
-    ft_utils.get_functest_config('vIMS.cloudify.requierments')
-CFY_INPUTS = ft_utils.get_functest_config('vIMS.cloudify.inputs')
-
-CW_BLUEPRINT = \
-    ft_utils.get_functest_config('vIMS.clearwater.blueprint')
-CW_DEPLOYMENT_NAME = \
-    ft_utils.get_functest_config('vIMS.clearwater.deployment-name')
-CW_INPUTS = \
-    ft_utils.get_functest_config('vIMS.clearwater.inputs')
-CW_REQUIERMENTS = \
-    ft_utils.get_functest_config('vIMS.clearwater.requierments')
+VIMS_DIR = os.path.join(ft_constants.FUNCTEST_TEST_DIR, 'vnf/vIMS/')
+VIMS_DATA_DIR = ft_constants.VIMS_DATA_DIR
+VIMS_TEST_DIR = ft_constants.VIMS_TEST_DIR
+VIMS_TENANT_NAME = ft_constants.VIMS_TENANT_NAME
+VIMS_TENANT_DESCRIPTION = ft_constants.VIMS_TENANT_DESCRIPTION
+VIMS_IMAGES = ft_constants.VIMS_IMAGES
+
+CFY_MANAGER_BLUEPRINT = ft_constants.CFY_MANAGER_BLUEPRINT
+CFY_MANAGER_REQUIERMENTS = ft_constants.CFY_MANAGER_REQUIERMENTS
+CFY_INPUTS = ft_constants.CFY_INPUTS
+
+CW_BLUEPRINT = ft_constants.CW_BLUEPRINT
+CW_DEPLOYMENT_NAME = ft_constants.CW_DEPLOYMENT_NAME
+CW_INPUTS = ft_constants.CW_INPUTS
+CW_REQUIERMENTS = ft_constants.CW_REQUIERMENTS
 
 CFY_DEPLOYMENT_DURATION = 0
 CW_DEPLOYMENT_DURATION = 0
@@ -92,7 +75,7 @@ RESULTS = {'orchestrator': {'duration': 0, 'result': ''},
 
 
 def download_and_add_image_on_glance(glance, image_name, image_url):
-    dest_path = VIMS_DATA_DIR + "tmp/"
+    dest_path = os.path.join(VIMS_DATA_DIR, "tmp/")
     if not os.path.exists(dest_path):
         os.makedirs(dest_path)
     file_name = image_url.rsplit('/')[-1]
@@ -216,9 +199,10 @@ def test_clearwater():
             logger.debug(result)
 
         vims_test_result = ""
+        tempFile = os.path.join(VIMS_TEST_DIR, "temp.json")
         try:
             logger.debug("Trying to load test results")
-            with open(VIMS_TEST_DIR + "temp.json") as f:
+            with open(tempFile) as f:
                 vims_test_result = json.load(f)
             f.close()
         except:
@@ -246,7 +230,7 @@ def test_clearwater():
                                     RESULTS)
 
         try:
-            os.remove(VIMS_TEST_DIR + "temp.json")
+            os.remove(tempFile)
         except:
             logger.error("Deleting file failed")
 
@@ -271,10 +255,10 @@ def main():
                      ks_creds['username'])
 
     tenant_id = os_utils.create_tenant(
-        keystone, TENANT_NAME, TENANT_DESCRIPTION)
+        keystone, VIMS_TENANT_NAME, VIMS_TENANT_DESCRIPTION)
     if not tenant_id:
         step_failure("init", "Error : Failed to create " +
-                     TENANT_NAME + " tenant")
+                     VIMS_TENANT_NAME + " tenant")
 
     roles_name = ["admin", "Admin"]
     role_id = ''
@@ -290,31 +274,31 @@ def main():
                      ks_creds['username'])
 
     user_id = os_utils.create_user(
-        keystone, TENANT_NAME, TENANT_NAME, None, tenant_id)
+        keystone, VIMS_TENANT_NAME, VIMS_TENANT_NAME, None, tenant_id)
     if not user_id:
-        logger.error("Error : Failed to create %s user" % TENANT_NAME)
+        logger.error("Error : Failed to create %s user" % VIMS_TENANT_NAME)
 
     logger.info("Update OpenStack creds informations")
     ks_creds.update({
-        "username": TENANT_NAME,
-        "password": TENANT_NAME,
-        "tenant_name": TENANT_NAME,
+        "username": VIMS_TENANT_NAME,
+        "password": VIMS_TENANT_NAME,
+        "tenant_name": VIMS_TENANT_NAME,
     })
 
     nt_creds.update({
-        "tenant_name": TENANT_NAME,
+        "tenant_name": VIMS_TENANT_NAME,
     })
 
     nv_creds.update({
-        "project_id": TENANT_NAME,
+        "project_id": VIMS_TENANT_NAME,
     })
 
     logger.info("Upload some OS images if it doesn't exist")
     glance = os_utils.get_glance_client()
 
-    for img in IMAGES.keys():
-        image_name = IMAGES[img]['image_name']
-        image_url = IMAGES[img]['image_url']
+    for img in VIMS_IMAGES.keys():
+        image_name = VIMS_IMAGES[img]['image_name']
+        image_url = VIMS_IMAGES[img]['image_url']
 
         image_id = os_utils.get_image_id(glance, image_name)
 
@@ -337,7 +321,8 @@ def main():
     if not os_utils.update_sg_quota(neutron, tenant_id, 50, 100):
         step_failure(
             "init",
-            "Failed to update security group quota for tenant " + TENANT_NAME)
+            "Failed to update security group quota for tenant " +
+            VIMS_TENANT_NAME)
 
     # ############### CLOUDIFY INITIALISATION ################
     public_auth_url = keystone.service_catalog.url_for(
index 0381fd6..33d4d50 100755 (executable)
@@ -19,7 +19,7 @@ import time
 
 import functest.utils.functest_logger as ft_logger
 import functest.utils.functest_utils as functest_utils
-
+import functest.utils.functest_constants as ft_constants
 
 parser = argparse.ArgumentParser()
 parser.add_argument("-r", "--report",
@@ -27,10 +27,8 @@ parser.add_argument("-r", "--report",
                     action="store_true")
 args = parser.parse_args()
 
-PARSER_REPO = \
-    functest_utils.get_functest_config('general.directories.dir_repo_parser')
-RESULTS_DIR = \
-    functest_utils.get_functest_config('general.directories.dir_results')
+PARSER_REPO = ft_constants.PARSER_REPO
+RESULTS_DIR = ft_constants.FUNCTEST_RESULTS_DIR
 
 logger = ft_logger.Logger("parser").getLogger()
 
@@ -67,5 +65,6 @@ def main():
                                           details)
     exit(ret)
 
+
 if __name__ == '__main__':
     main()
index 25faca0..154cc78 100644 (file)
@@ -25,7 +25,7 @@ class TestCasesBaseTesting(unittest.TestCase):
         self.test.start_time = "1"
         self.test.stop_time = "2"
         self.test.criteria = "100"
-        self.test.details = {"Hello":  "World"}
+        self.test.details = {"Hello": "World"}
 
     def test_run_unimplemented(self):
         self.assertEqual(self.test.run(),
index 3f33dc8..065298d 100644 (file)
@@ -17,6 +17,7 @@ from robot.errors import RobotError
 
 from functest.core import TestCasesBase
 from functest.opnfv_tests.Controllers.ODL import OpenDaylightTesting
+from functest.utils import functest_constants as ft_constants
 
 
 class ODLTestCasesTesting(unittest.TestCase):
@@ -35,12 +36,9 @@ class ODLTestCasesTesting(unittest.TestCase):
     _odl_password = "admin"
 
     def setUp(self):
-        for var in ("INSTALLER_TYPE", "SDN_CONTROLLER", "SDN_CONTROLLER_IP"):
-            if var in os.environ:
-                del os.environ[var]
-        os.environ["OS_USERNAME"] = self._os_username
-        os.environ["OS_PASSWORD"] = self._os_password
-        os.environ["OS_TENANT_NAME"] = self._os_tenantname
+        ft_constants.OS_USERNAME = self._os_username
+        ft_constants.OS_PASSWORD = self._os_password
+        ft_constants.OS_TENANT_NAME = self._os_tenantname
         self.test = OpenDaylightTesting.ODLTestCases()
 
     @mock.patch('fileinput.input', side_effect=Exception())
@@ -87,9 +85,9 @@ class ODLTestCasesTesting(unittest.TestCase):
     def _test_main(self, status, *args):
         kwargs = self._get_main_kwargs()
         self.assertEqual(self.test.main(**kwargs), status)
+        odl_res_dir = OpenDaylightTesting.ODLTestCases.res_dir
         if len(args) > 0:
-            args[0].assert_called_once_with(
-                OpenDaylightTesting.ODLTestCases.res_dir)
+            args[0].assert_called_once_with(odl_res_dir)
         if len(args) > 1:
             variable = ['KEYSTONE:{}'.format(self._keystone_ip),
                         'NEUTRON:{}'.format(self._neutron_ip),
@@ -99,17 +97,18 @@ class ODLTestCasesTesting(unittest.TestCase):
                         'ODL_SYSTEM_IP:{}'.format(self._sdn_controller_ip),
                         'PORT:{}'.format(self._odl_webport),
                         'RESTCONFPORT:{}'.format(self._odl_restconfport)]
+            output_file = os.path.join(odl_res_dir, 'output.xml')
             args[1].assert_called_once_with(
                 OpenDaylightTesting.ODLTestCases.basic_suite_dir,
                 OpenDaylightTesting.ODLTestCases.neutron_suite_dir,
                 log='NONE',
-                output=OpenDaylightTesting.ODLTestCases.res_dir + 'output.xml',
+                output=output_file,
                 report='NONE',
                 stdout=mock.ANY,
                 variable=variable)
         if len(args) > 2:
-            args[2].assert_called_with(
-                OpenDaylightTesting.ODLTestCases.res_dir + 'stdout.txt')
+            stdout_file = os.path.join(odl_res_dir, 'stdout.txt')
+            args[2].assert_called_with(stdout_file)
 
     def _test_main_missing_keyword(self, key):
         kwargs = self._get_main_kwargs(key)
@@ -232,7 +231,13 @@ class ODLTestCasesTesting(unittest.TestCase):
             self._test_main(TestCasesBase.TestCasesBase.EX_OK, *args)
 
     def _test_run_missing_env_var(self, var):
-        del os.environ[var]
+        if var == 'OS_USERNAME':
+            ft_constants.OS_USERNAME = None
+        elif var == 'OS_PASSWORD':
+            ft_constants.OS_PASSWORD = None
+        elif var == 'OS_TENANT_NAME':
+            ft_constants.OS_TENANT_NAME = None
+
         self.assertEqual(self.test.run(),
                          TestCasesBase.TestCasesBase.EX_RUN_ERROR)
 
@@ -263,13 +268,15 @@ class ODLTestCasesTesting(unittest.TestCase):
         self._test_run_missing_env_var("OS_TENANT_NAME")
 
     def test_run_main_false(self):
-        os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+        ft_constants.CI_INSTALLER_TYPE = None
+        ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
         self._test_run(TestCasesBase.TestCasesBase.EX_RUN_ERROR,
                        odlip=self._sdn_controller_ip,
                        odlwebport=self._odl_webport)
 
     def test_run_main_exception(self):
-        os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+        ft_constants.CI_INSTALLER_TYPE = None
+        ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
         with self.assertRaises(Exception):
             self._test_run(status=TestCasesBase.TestCasesBase.EX_RUN_ERROR,
                            exception=Exception(),
@@ -279,49 +286,54 @@ class ODLTestCasesTesting(unittest.TestCase):
     def test_run_missing_sdn_controller_ip(self):
         with mock.patch('functest.utils.openstack_utils.get_keystone_client',
                         return_value=self._get_fake_keystone_client()):
+            ft_constants.CI_INSTALLER_TYPE = None
+            ft_constants.SDN_CONTROLLER_IP = None
             self.assertEqual(self.test.run(),
                              TestCasesBase.TestCasesBase.EX_RUN_ERROR)
 
     def test_run_without_installer_type(self):
-        os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
+        ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
+        ft_constants.CI_INSTALLER_TYPE = None
         self._test_run(TestCasesBase.TestCasesBase.EX_OK,
                        odlip=self._sdn_controller_ip,
                        odlwebport=self._odl_webport)
 
     def test_run_fuel(self):
-        os.environ["INSTALLER_TYPE"] = "fuel"
+        ft_constants.CI_INSTALLER_TYPE = "fuel"
         self._test_run(TestCasesBase.TestCasesBase.EX_OK,
                        odlip=self._neutron_ip, odlwebport='8282')
 
     def test_run_apex_missing_sdn_controller_ip(self):
         with mock.patch('functest.utils.openstack_utils.get_keystone_client',
                         return_value=self._get_fake_keystone_client()):
-            os.environ["INSTALLER_TYPE"] = "apex"
+            ft_constants.CI_INSTALLER_TYPE = "apex"
+            ft_constants.SDN_CONTROLLER_IP = None
             self.assertEqual(self.test.run(),
                              TestCasesBase.TestCasesBase.EX_RUN_ERROR)
 
     def test_run_apex(self):
-        os.environ["SDN_CONTROLLER_IP"] = self._sdn_controller_ip
-        os.environ["INSTALLER_TYPE"] = "apex"
+        ft_constants.SDN_CONTROLLER_IP = self._sdn_controller_ip
+        ft_constants.CI_INSTALLER_TYPE = "apex"
         self._test_run(TestCasesBase.TestCasesBase.EX_OK,
                        odlip=self._sdn_controller_ip, odlwebport='8181')
 
     def test_run_joid_missing_sdn_controller(self):
         with mock.patch('functest.utils.openstack_utils.get_keystone_client',
                         return_value=self._get_fake_keystone_client()):
-            os.environ["INSTALLER_TYPE"] = "joid"
+            ft_constants.CI_INSTALLER_TYPE = "joid"
+            ft_constants.SDN_CONTROLLER = None
             self.assertEqual(self.test.run(),
                              TestCasesBase.TestCasesBase.EX_RUN_ERROR)
 
     def test_run_joid(self):
-        os.environ["SDN_CONTROLLER"] = self._sdn_controller_ip
-        os.environ["INSTALLER_TYPE"] = "joid"
+        ft_constants.SDN_CONTROLLER = self._sdn_controller_ip
+        ft_constants.CI_INSTALLER_TYPE = "joid"
         self._test_run(TestCasesBase.TestCasesBase.EX_OK,
                        odlip=self._sdn_controller_ip,
                        odlwebport=self._odl_webport)
 
     def test_run_compass(self, *args):
-        os.environ["INSTALLER_TYPE"] = "compass"
+        ft_constants.CI_INSTALLER_TYPE = "compass"
         self._test_run(TestCasesBase.TestCasesBase.EX_OK,
                        odlip=self._neutron_ip, odlwebport='8181')
 
index 36313d2..835797f 100644 (file)
@@ -25,5 +25,6 @@ class FunctestUtilsTesting(unittest.TestCase):
 # TODO
 # ...
 
+
 if __name__ == "__main__":
     unittest.main(verbosity=2)
diff --git a/functest/utils/functest_constants.py b/functest/utils/functest_constants.py
new file mode 100644 (file)
index 0000000..81763cb
--- /dev/null
@@ -0,0 +1,287 @@
+#!/usr/bin/env python
+#
+# yaohelan@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
+#
+import os
+import functest.utils.functest_utils as ft_utils
+import functest.utils.functest_logger as ft_logger
+
+logger = ft_logger.Logger("functest_constants").getLogger()
+
+
+""" global variables """
+INSTALLERS = ['fuel', 'compass', 'apex', 'joid']
+CI_INSTALLER_TYPE = os.getenv('INSTALLER_TYPE')
+CI_INSTALLER_IP = os.getenv('INSTALLER_IP')
+CI_SCENARIO = os.getenv('DEPLOY_SCENARIO')
+CI_NODE = os.getenv('NODE_NAME')
+CI_BUILD_TAG = os.getenv('BUILD_TAG')
+CI_DEBUG = os.getenv('CI_DEBUG')
+CI_LOOP = os.getenv('CI_LOOP')
+OS_AUTH_URL = os.getenv('OS_AUTH_URL')
+OS_USERNAME = os.getenv('OS_USERNAME')
+OS_TENANT_NAME = os.getenv('OS_TENANT_NAME')
+OS_PASSWORD = os.getenv('OS_PASSWORD')
+OS_ENDPOINT_TYPE = os.getenv('OS_ENDPOINT_TYPE')
+OS_REGION_NAME = os.getenv('OS_REGION_NAME')
+OS_CACERT = os.getenv('OS_CACERT')
+FUEL_ENV = os.getenv('FUEL_ENV')
+SDN_CONTROLLER_IP = os.getenv('SDN_CONTROLLER_IP')
+SDN_CONTROLLER = os.getenv('SDN_CONTROLLER')
+
+if CI_BUILD_TAG is not None:
+    IS_CI_RUN = True
+else:
+    IS_CI_RUN = False
+
+CONFIG_FUNCTEST_YAML = os.getenv("CONFIG_FUNCTEST_YAML")
+
+
+def get_value(functest_config_key, env_variable):
+    try:
+        constant = ft_utils.get_functest_config(functest_config_key)
+        # logger.debug("%s is defined in config_functest.yaml as [%s]"
+        #             % (env_variable, constant))
+        return constant
+    except ValueError:
+        logger.warning("%s is not defined in config_functest.yaml"
+                       % functest_config_key)
+        constant = os.getenv(env_variable)
+        if constant is None:
+            raise ValueError("%s is neither defined in config_functest.yaml"
+                             " nor environment variable" % env_variable)
+        else:
+            logger.debug("%s is defined as environment variable as [%s]"
+                         % (env_variable, constant))
+            return constant
+
+
+HOME = \
+    get_value('general.directories.dir_home', 'HOME')
+REPOS_DIR = \
+    get_value('general.directories.dir_repos', 'REPOS_DIR')
+FUNCTEST_BASE_DIR = \
+    get_value('general.directories.dir_functest', 'FUNCTEST_BASE_DIR')
+FUNCTEST_REPO_DIR = \
+    get_value('general.directories.dir_repo_functest', 'FUNCTEST_REPO_DIR')
+FUNCTEST_TEST_DIR = \
+    get_value('general.directories.dir_functest_test', 'FUNCTEST_TEST_DIR')
+FUNCTEST_CONF_DIR = \
+    get_value('general.directories.dir_functest_conf', 'FUNCTEST_CONF_DIR')
+FUNCTEST_DATA_DIR = \
+    get_value('general.directories.dir_functest_data', 'FUNCTEST_DATA_DIR')
+FUNCTEST_RESULTS_DIR = \
+    get_value('general.directories.dir_results', 'FUNCTEST_RESULTS_DIR')
+FUNCTEST_TESTCASES_YAML = \
+    get_value('general.functest.testcases_yaml', 'FUNCTEST_TESTCASES_YAML')
+RALLY_DEPLOYMENT_NAME = \
+    get_value('rally.deployment_name', 'RALLY_DEPLOYMENT_NAME')
+TEMPEST_REPO_DIR = \
+    get_value('general.directories.dir_repo_tempest', 'TEMPEST_REPO_DIR')
+
+ENV_FILE = os.path.join(FUNCTEST_CONF_DIR, "env_active")
+
+OPENSTACK_CREDS = \
+    get_value('general.openstack.creds', 'creds')
+OPENSTACK_SNAPSHOT_FILE = \
+    get_value('general.openstack.snapshot_file', 'OPENSTACK_SNAPSHOT_FILE')
+
+DOMINO_REPO = \
+    get_value('general.directories.dir_repo_domino', 'DOMINO_REPO')
+SDNVPN_REPO = \
+    get_value('general.directories.dir_repo_sdnvpn', 'SDNVPN_REPO')
+SFC_REPO = \
+    get_value('general.directories.dir_repo_sfc', 'SFC_REPO')
+
+ONOS_SFC_IMAGE_NAME = \
+    get_value('onos_sfc.image_name', 'ONOS_SFC_IMAGE_NAME')
+ONOS_SFC_IMAGE_FILENAME = \
+    get_value('onos_sfc.image_file_name', 'ONOS_SFC_IMAGE_FILENAME')
+ONOS_SFC_RELATIVE_PATH = \
+    get_value('general.directories.dir_onos_sfc', 'ONOS_SFC_RELATIVE_PATH')
+ONOS_SFC_IMAGE_BASE_URL = \
+    get_value('onos_sfc.image_base_url', 'ONOS_SFC_IMAGE_BASE_URL')
+RALLY_RELATIVE_PATH = \
+    get_value('general.directories.dir_rally', 'RALLY_RELATIVE_PATH')
+RALLY_PRIVATE_NET_NAME = \
+    get_value('rally.network_name', 'RALLY_PRIVATE_NET_NAME')
+RALLY_PRIVATE_SUBNET_NAME = \
+    get_value('rally.subnet_name', 'RALLY_PRIVATE_SUBNET_NAME')
+RALLY_PRIVATE_SUBNET_CIDR = \
+    get_value('rally.subnet_cidr', 'RALLY_PRIVATE_SUBNET_CIDR')
+RALLY_ROUTER_NAME = \
+    get_value('rally.router_name', 'RALLY_ROUTER_NAME')
+RALLY_INSTALLATION_DIR = \
+    get_value('general.directories.dir_rally_inst', 'RALLY_INSTALLATION_DIR')
+GLANCE_IMAGE_NAME = \
+    get_value('general.openstack.image_name', 'GLANCE_IMAGE_NAME')
+GLANCE_IMAGE_FILENAME = \
+    get_value('general.openstack.image_file_name', 'GLANCE_IMAGE_FILENAME')
+GLANCE_IMAGE_FORMAT = \
+    get_value('general.openstack.image_disk_format', 'GLANCE_IMAGE_FORMAT')
+FLAVOR_NAME = \
+    get_value('general.openstack.flavor_name', 'FLAVOR_NAME')
+FLAVOR_RAM = \
+    get_value('general.openstack.flavor_ram', 'FLAVOR_RAM')
+FLAVOR_DISK = \
+    get_value('general.openstack.flavor_disk', 'FLAVOR_DISK')
+FLAVOR_VCPUS = \
+    get_value('general.openstack.flavor_vcpus', 'FLAVOR_VCPUS')
+TEMPEST_PRIVATE_NET_NAME = \
+    get_value('tempest.private_net_name', 'TEMPEST_PRIVATE_NET_NAME')
+TEMPEST_PRIVATE_SUBNET_NAME = \
+    get_value('tempest.private_subnet_name', 'TEMPEST_PRIVATE_SUBNET_NAME')
+TEMPEST_PRIVATE_SUBNET_CIDR = \
+    get_value('tempest.private_subnet_cidr', 'TEMPEST_PRIVATE_SUBNET_CIDR')
+TEMPEST_ROUTER_NAME = \
+    get_value('tempest.router_name', 'TEMPEST_ROUTER_NAME')
+TEMPEST_TENANT_NAME = \
+    get_value('tempest.identity.tenant_name', 'TEMPEST_TENANT_NAME')
+TEMPEST_TENANT_DESCRIPTION = \
+    get_value('tempest.identity.tenant_description',
+              'TEMPEST_TENANT_DESCRIPTION')
+TEMPEST_USER_NAME = \
+    get_value('tempest.identity.user_name', 'TEMPEST_USER_NAME')
+TEMPEST_USER_PASSWORD = \
+    get_value('tempest.identity.user_password', 'TEMPEST_USER_PASSWORD')
+TEMPEST_SSH_TIMEOUT = \
+    get_value('tempest.validation.ssh_timeout', 'TEMPEST_SSH_TIMEOUT')
+TEMPEST_USE_CUSTOM_IMAGES = \
+    get_value('tempest.use_custom_images', 'TEMPEST_USE_CUSTOM_IMAGES')
+TEMPEST_USE_CUSTOM_FLAVORS = \
+    get_value('tempest.use_custom_flavors', 'TEMPEST_USE_CUSTOM_FLAVORS')
+TEMPEST_TEST_LIST_DIR = \
+    get_value('general.directories.dir_tempest_cases', 'TEMPEST_TEST_LIST_DIR')
+NAME_VM_1 = \
+    get_value('vping.vm_name_1', 'NAME_VM_1')
+NAME_VM_2 = \
+    get_value('vping.vm_name_2', 'NAME_VM_2')
+PING_TIMEOUT = \
+    get_value('vping.ping_timeout', 'PING_TIMEOUT')
+VPING__IMAGE_NAME = \
+    get_value('vping.image_name', 'VPING__IMAGE_NAME')
+VPING_VM_FLAVOR = \
+    get_value('vping.vm_flavor', 'VPING_VM_FLAVOR')
+VPING_PRIVATE_NET_NAME = \
+    get_value('vping.vping_private_net_name', 'VPING_PRIVATE_NET_NAME')
+VPING_PRIVATE_SUBNET_NAME = \
+    get_value('vping.vping_private_subnet_name', 'VPING_PRIVATE_SUBNET_NAME')
+VPING_PRIVATE_SUBNET_CIDR = \
+    get_value('vping.vping_private_subnet_cidr', 'VPING_PRIVATE_SUBNET_CIDR')
+VPING_ROUTER_NAME = \
+    get_value('vping.vping_router_name', 'VPING_ROUTER_NAME')
+VPING_SECGROUP_NAME = \
+    get_value('vping.vping_sg_name', 'VPING_SECGROUP_NAME')
+VPING_SECGROUP_DESCR = \
+    get_value('vping.vping_sg_descr', 'VPING_SECGROUP_DESCR')
+ONOSBENCH_USERNAME = \
+    get_value('ONOS.general.onosbench_username', 'ONOSBENCH_USERNAME')
+ONOSBENCH_PASSWORD = \
+    get_value('ONOS.general.onosbench_password', 'ONOSBENCH_PASSWORD')
+ONOSCLI_USERNAME = \
+    get_value('ONOS.general.onoscli_username', 'ONOSCLI_USERNAME')
+ONOSCLI_PASSWORD = \
+    get_value('ONOS.general.onoscli_password', 'ONOSCLI_PASSWORD')
+ONOS_RUNTIMEOUT = \
+    get_value('ONOS.general.runtimeout', 'ONOS_RUNTIMEOUT')
+ONOS_OCT = \
+    get_value('ONOS.environment.OCT', 'ONOS_OCT')
+ONOS_OC1 = \
+    get_value('ONOS.environment.OC1', 'ONOS_OC1')
+ONOS_OC2 = \
+    get_value('ONOS.environment.OC2', 'ONOS_OC2')
+ONOS_OC3 = \
+    get_value('ONOS.environment.OC3', 'ONOS_OC3')
+ONOS_OCN = \
+    get_value('ONOS.environment.OCN', 'ONOS_OCN')
+ONOS_OCN2 = \
+    get_value('ONOS.environment.OCN2', 'ONOS_OCN2')
+ONOS_INSTALLER_MASTER = \
+    get_value('ONOS.environment.installer_master', 'ONOS_INSTALLER_MASTER')
+ONOS_INSTALLER_MASTER_USERNAME = \
+    get_value('ONOS.environment.installer_master_username',
+              'ONOS_INSTALLER_MASTER_USERNAME')
+ONOS_INSTALLER_MASTER_PASSWORD = \
+    get_value('ONOS.environment.installer_master_password',
+              'ONOS_INSTALLER_MASTER_PASSWORD')
+PROMISE_REPO_DIR = \
+    get_value('general.directories.dir_repo_promise', 'PROMISE_REPO_DIR')
+PROMISE_TENANT_NAME = \
+    get_value('promise.tenant_name', 'PROMISE_TENANT_NAME')
+TENANT_DESCRIPTION = \
+    get_value('promise.tenant_description', 'TENANT_DESCRIPTION')
+PROMISE_USER_NAME = \
+    get_value('promise.user_name', 'PROMISE_USER_NAME')
+PROMISE_USER_PWD = \
+    get_value('promise.user_pwd', 'PROMISE_USER_PWD')
+PROMISE_IMAGE_NAME = \
+    get_value('promise.image_name', 'PROMISE_IMAGE_NAME')
+PROMISE_FLAVOR_NAME = \
+    get_value('promise.flavor_name', 'PROMISE_FLAVOR_NAME')
+PROMISE_FLAVOR_VCPUS = \
+    get_value('promise.flavor_vcpus', 'PROMISE_FLAVOR_VCPUS')
+PROMISE_FLAVOR_RAM = \
+    get_value('promise.flavor_ram', 'PROMISE_FLAVOR_RAM')
+PROMISE_FLAVOR_DISK = \
+    get_value('promise.flavor_disk', 'PROMISE_FLAVOR_DISK')
+PROMISE_NET_NAME = \
+    get_value('promise.network_name', 'PROMISE_NET_NAME')
+PROMISE_SUBNET_NAME = \
+    get_value('promise.subnet_name', 'PROMISE_SUBNET_NAME')
+PROMISE_SUBNET_CIDR = \
+    get_value('promise.subnet_cidr', 'PROMISE_SUBNET_CIDR')
+PROMISE_ROUTER_NAME = \
+    get_value('promise.router_name', 'PROMISE_ROUTER_NAME')
+DOCTOR_REPO_DIR = \
+    get_value('general.directories.dir_repo_doctor', 'DOCTOR_REPO_DIR')
+COPPER_REPO_DIR = \
+    get_value('general.directories.dir_repo_copper', 'COPPER_REPO_DIR')
+EXAMPLE_INSTANCE_NAME = \
+    get_value('example.example_vm_name', 'EXAMPLE_INSTANCE_NAME')
+EXAMPLE_FLAVOR = \
+    get_value('example.example_flavor', 'EXAMPLE_FLAVOR')
+EXAMPLE_IMAGE_NAME = \
+    get_value('example.example_image_name', 'EXAMPLE_IMAGE_NAME')
+EXAMPLE_PRIVATE_NET_NAME = \
+    get_value('example.example_private_net_name', 'EXAMPLE_PRIVATE_NET_NAME')
+EXAMPLE_PRIVATE_SUBNET_NAME = \
+    get_value('example.example_private_subnet_name',
+              'EXAMPLE_PRIVATE_SUBNET_NAME')
+EXAMPLE_PRIVATE_SUBNET_CIDR = \
+    get_value('example.example_private_subnet_cidr',
+              'EXAMPLE_PRIVATE_SUBNET_CIDR')
+EXAMPLE_ROUTER_NAME = \
+    get_value('example.example_router_name', 'EXAMPLE_ROUTER_NAME')
+EXAMPLE_SECGROUP_NAME = \
+    get_value('example.example_sg_name', 'EXAMPLE_SECGROUP_NAME')
+EXAMPLE_SECGROUP_DESCR = \
+    get_value('example.example_sg_descr', 'EXAMPLE_SECGROUP_DESCR')
+VIMS_DATA_DIR = \
+    get_value('general.directories.dir_vIMS_data', 'VIMS_DATA_DIR')
+VIMS_TEST_DIR = \
+    get_value('general.directories.dir_repo_vims_test', 'VIMS_TEST_DIR')
+VIMS_TENANT_NAME = \
+    get_value('vIMS.general.tenant_name', 'VIMS_TENANT_NAME')
+VIMS_TENANT_DESCRIPTION = \
+    get_value('vIMS.general.tenant_description', 'VIMS_TENANT_DESCRIPTION')
+VIMS_IMAGES = get_value('vIMS.general.images', 'VIMS_IMAGES')
+CFY_MANAGER_BLUEPRINT = \
+    get_value('vIMS.cloudify.blueprint', 'CFY_MANAGER_BLUEPRINT')
+CFY_MANAGER_REQUIERMENTS = \
+    get_value('vIMS.cloudify.requierments', 'CFY_MANAGER_REQUIERMENTS')
+CFY_INPUTS = \
+    get_value('vIMS.cloudify.inputs', 'CFY_INPUTS')
+CW_BLUEPRINT = \
+    get_value('vIMS.clearwater.blueprint', 'CW_BLUEPRINT')
+CW_DEPLOYMENT_NAME = \
+    get_value('vIMS.clearwater.deployment-name', 'CW_DEPLOYMENT_NAME')
+CW_INPUTS = \
+    get_value('vIMS.clearwater.inputs', 'CW_INPUTS')
+CW_REQUIERMENTS = \
+    get_value('vIMS.clearwater.requierments', 'CW_REQUIERMENTS')
+PARSER_REPO = \
+    get_value('general.directories.dir_repo_parser', 'PARSER_REPO')
index 2d4a652..a25967b 100644 (file)
@@ -25,9 +25,6 @@ import functest.utils.functest_logger as ft_logger
 
 logger = ft_logger.Logger("functest_utils").getLogger()
 
-REPOS_DIR = os.getenv('repos_dir')
-FUNCTEST_REPO = ("%s/functest" % REPOS_DIR)
-
 
 # ----------------------------------------------------------
 #
@@ -342,7 +339,7 @@ def get_deployment_dir():
 
 
 def get_dict_by_test(testname):
-    with open(get_testcases_file()) as f:
+    with open(get_testcases_file_dir()) as f:
         testcases_yaml = yaml.safe_load(f)
 
     for dic_tier in testcases_yaml.get("tiers"):
@@ -438,8 +435,8 @@ def check_test_result(test_name, ret, start_time, stop_time):
     return status, details
 
 
-def get_testcases_file():
-    return FUNCTEST_REPO + "/functest/ci/testcases.yaml"
+def get_testcases_file_dir():
+    return "/home/opnfv/repos/functest/functest/ci/testcases.yaml"
 
 
 def get_functest_yaml():
@@ -447,3 +444,7 @@ def get_functest_yaml():
         functest_yaml = yaml.safe_load(f)
     f.close()
     return functest_yaml
+
+
+def print_separator():
+    logger.info("==============================================")
index 0ba0944..6c7312f 100644 (file)
@@ -22,16 +22,16 @@ def main():
         body = '~FUNTEST'
         ind = 0
         while key != 27:
-            win.addstr(0, 44, ' Score: '+str(len(snake)-len(body))+' ')
+            win.addstr(0, 44, ' Score: ' + str(len(snake) - len(body)) + ' ')
             win.timeout(140 - 2 * len(snake))
             getkey = win.getch()
             key = key if getkey == -1 else getkey
             snake.insert(
-                0, [snake[0][0]+(key == KEY_RIGHT and 1 or
-                                 key == KEY_LEFT and -1),
-                    snake[0][1]+(key == KEY_DOWN and 1 or
-                                 key == KEY_UP and -1)])
-            win.addch(snake[len(snake)-1][1], snake[len(snake)-1][0], ' ')
+                0, [snake[0][0] + (key == KEY_RIGHT and 1 or
+                                   key == KEY_LEFT and -1),
+                    snake[0][1] + (key == KEY_DOWN and 1 or
+                                   key == KEY_UP and -1)])
+            win.addch(snake[len(snake) - 1][1], snake[len(snake) - 1][0], ' ')
             if win.inch(snake[0][1], snake[0][0]) & 255 == 32:
                 snake.pop()
             elif win.inch(snake[0][1], snake[0][0]) & 255 == ord('@'):
@@ -48,5 +48,6 @@ def main():
 
     print '\nSnake.PY-26lines by Kris Cieslak (defaultset.blogspot.com).'
     print 'OPNFV adaptation by Functest dream team.'
-    print 'Thanks for playing, your score: '+str(len(snake)-len(body)-1)+'.'
+    print 'Thanks for playing, your score: ' + \
+          str(len(snake) - len(body) - 1) + '.'
     print 'Find and fix more bugs in your real OPNFV setup!\n'
index bf582de..949eee9 100755 (executable)
 
 import time
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 import yaml
-
+import functest.utils.functest_constants as ft_constants
 
 logger = ft_logger.Logger("openstack_clean").getLogger()
 
-OS_SNAPSHOT_FILE = \
-    ft_utils.get_functest_config("general.openstack.snapshot_file")
+OS_SNAPSHOT_FILE = ft_constants.OPENSTACK_SNAPSHOT_FILE
 
 
 def separator():
index 560cadb..4be1af4 100755 (executable)
 #
 
 import functest.utils.functest_logger as ft_logger
-import functest.utils.functest_utils as ft_utils
 import functest.utils.openstack_utils as os_utils
 import yaml
-
+import functest.utils.functest_constants as ft_constants
 
 logger = ft_logger.Logger("openstack_snapshot").getLogger()
 
 
-OS_SNAPSHOT_FILE = \
-    ft_utils.get_functest_config("general.openstack.snapshot_file")
+OS_SNAPSHOT_FILE = ft_constants.OPENSTACK_SNAPSHOT_FILE
 
 
 def separator():
index 0abf3c2..dc5a501 100755 (executable)
@@ -48,6 +48,7 @@ pip install -e $WORKSPACE
 
 python $WORKSPACE/setup.py develop
 
+export CONFIG_FUNCTEST_YAML=$(pwd)/functest/ci/config_functest.yaml
 # unit tests
 # TODO: remove cover-erase
 # To be deleted when all functest packages will be listed