Release note: add restriction for joid/domino
[functest.git] / docs / configguide / configguide.rst
index 7f4ac86..d794943 100644 (file)
 .. http://creativecommons.org/licenses/by/4.0
 
 
-Preparing the Docker container
-------------------------------
-
-Pull the Functest Docker image from the Docker hub::
-
-  docker pull opnfv/functest:brahmaputra.1.0
-
-
-Check that the image is available::
-
-  docker images
-
-Run the docker container giving the environment variables:
-
- * **INSTALLER_TYPE** : possible values are **apex**, **compass**, **fuel** or **joid**.
- * **INSTALLER_IP** : IP of the installer node/VM.
+Pulling the Docker image
+------------------------
+Pull the Functest Docker image ('opnfv/functest') from the public
+dockerhub registry under the OPNFV account: [dockerhub_], with the
+following docker command::
+
+  docker pull opnfv/functest:<TagIdentifier>
+
+where <TagIdentifier> identifies a release of the Functest docker
+container image in the public dockerhub registry. There are many tags
+created automatically by the CI mechanisms, and you must ensure you
+pull an image with the **correct tag** to match the OPNFV software
+release installed in your environment. All available tagged images can
+be seen from location [FunctestDockerTags_]. For example, when running
+on the first official release of the OPNFV Colorado system platform,
+tag "colorado.1.0" is needed. Pulling other tags might cause some
+problems while running the tests.
+Docker images pulled without a tag specifier bear the implicitly
+assigned label "latest". If you need to specifically pull the latest
+Functest docker image, then omit the tag argument::
+
+  docker pull opnfv/functest
+
+After pulling the Docker image, check that it is available with the
+following docker command::
+
+  [functester@jumphost ~]$ docker images
+  REPOSITORY     TAG             IMAGE ID      CREATED      SIZE
+  opnfv/functest latest          8cd6683c32ae  2 weeks ago  1.611 GB
+  opnfv/functest brahmaputra.3.0 94b78faa94f7  4 weeks ago  874.9 MB
+  hello-world    latest          94df4f0ce8a4  7 weeks ago    967 B
+
+The Functest docker container environment can -in principle- be also
+used with non-OPNFV official installers (e.g. 'devstack'), with the
+**disclaimer** that support for such environments is outside of the
+scope and responsibility of the OPNFV project.
+
+Accessing the Openstack credentials
+-----------------------------------
+OpenStack credentials are mandatory and can be retrieved in different
+ways. From inside the running Functest docker container the
+"functest env prepare" command will automatically look for the
+Openstack credentials file "/home/opnfv/functest/conf/openstack.creds"
+and retrieve it unless the file already exists. This Functest
+environment preparation step is described later in this document.
+
+WARNING: When the installer type is "joid" you have to have the
+credentials file inside the running container **before** initiating the
+functest environment preparation. For that reason you have to choose
+either one of the options below, since the automated copying does not
+work for "joid".
+
+You can also specifically pass in the needed file prior to running the
+environment preparation either:
+
+  * by using the -v option when creating the Docker container. This is
+    referred to in docker documentation as "Bind Mounting". See the
+    usage of this parameter in the following chapter.
+  * or creating a local file '/home/opnfv/functest/conf/openstack.creds'
+    inside the running container with the credentials in it. Consult
+    your installer guide for further details. This is however not
+    instructed in this document.
+
+NOTE: When the installer type is "fuel" and virtualized deployment
+is used, there you have to explicitly fetch the credentials file
+executing the following sequence
+
+  #. Create a container as described in next chapter but do not
+     "Bind Mount" the credentials
+  #. 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 \
+       -d /home/opnfv/functest/conf/openstack.creds \
+       -i fuel \
+       -a 10.20.0.2 \
+       -v
+       ( -d specifies the full path to the Openstack credential file
+       -i specifies the INSTALLER_TYPE
+       -a specifies the INSTALLER_IP
+       -v indicates a virtualized environment and takes no arguments )
+
+  #. Continue with your testing, initiate functest environment
+     preparation, run tests etc.
+
+In proxified environment you may need to change the credentials file.
+There are some tips in chapter: `Proxy support`_
+
+Functest Docker parameters
+--------------------------
+This chapter explains how to run a container for executing functest
+test suites. Numbered list below explains some details of the
+recommended parameters for invoking docker container
+
+  #. It is a good practice to assign a precise container name through
+     the **--name** option.
+
+  #. Assign parameter for installer type::
+
+       -e "INSTALLER_TYPE=<type>"
+       # Use one of following apex, compass, fuel or joid
+
+  #. Functest needs to know the IP of the installer::
+
+       -e "INSTALLER_IP=<Specific IP Address>"
+
+  #. Credentials for accessing the Openstack.
+     Most convenient way of passing them to container is by having a
+     local copy of the credentials file in Jumphost and then using the
+     **-v** option. In the example we have local file by the name of
+     "overcloudrc" and we are using that as an argument::
+
+       -v ~/overcloudrc:/home/opnfv/functest/conf/openstack.creds
+
+       The credentials file needs to exist in the Docker container
+       under the path: '/home/opnfv/functest/conf/openstack.creds'.
+
+     WARNING: If you are using the Joid installer, you must pass the
+     credentials using the **-v** option:
+     -v /var/lib/jenkins/admin-openrc:/home/opnfv/functest/conf/openstack.creds.
+     See the section `Accessing the Openstack credentials`_ above.
+
+  #. Passing deployment scenario
+     When running Functest against any of the supported OPNFV scenarios,
+     it is recommended to include also the environment variable
+     **DEPLOY_SCENARIO**. The **DEPLOY_SCENARIO** environment variable
+     is passed with the format::
+
+       -e "DEPLOY_SCENARIO=os-<controller>-<nfv_feature>-<ha_mode>"
+       where:
+       os = OpenStack (No other VIM choices currently available)
+       controller is one of ( nosdn | odl_l2 | odl_l3 | onos | ocl)
+       nfv_feature is one or more of ( ovs | kvm | sfc | bgpvpn | nofeature )
+                If several features are pertinent then use the underscore
+                character '_' to separate each feature (e.g. ovs_kvm)
+                'nofeature' indicates no NFV feature is deployed
+       ha_mode is one of ( ha | noha )
+
+     **NOTE:** Not all possible combinations of "DEPLOY_SCENARIO" are
+     supported. The name passed in to the Functest Docker container
+     must match the scenario used when the actual OPNFV platform was
+     deployed. See release note to see the list of supported scenarios.
+
+Putting all above together, when using installer 'fuel' and an invented
+INSTALLER_IP of '10.20.0.2', the recommended command to create the
+Functest Docker container is as follows::
+
+  docker run --name "FunctestContainer" -it \
+  -e "INSTALLER_IP=10.20.0.2" \
+  -e "INSTALLER_TYPE=fuel" \
+  -e "DEPLOY_SCENARIO=os-odl_l2-ovs_kvm-ha" \
+  -v ~/overcloudrc:/home/opnfv/functest/conf/openstack.creds \
+  opnfv/functest /bin/bash
+
+After the *run* command, a new prompt appears which means that we are inside
+the container and ready to move to the next step.
+
+For tips on how to set up container with installer Apex, see chapter
+`Apex Installer Tips`_.
+
+Finally, three additional environment variables can also be passed in
+to the Functest Docker Container, using the -e
+"<EnvironmentVariable>=<Value>" mechanism. The first two of these are
+only relevant to Jenkins CI invoked testing and **should not be used**
+when performing manual test scenarios::
+
+  -e "NODE_NAME=<Test POD Name>" \
+  -e "BUILD_TAG=<Jenkins Build Tag>" \
+  -e "CI_DEBUG=<DebugTraceValue>"
+  where:
+  <Test POD Name> = Symbolic name of the POD where the tests are run.
+                    Visible in test results files, which are stored
+                    to the database. This option is only used when
+                    tests are activated under Jenkins CI control.
+                    It indicates the POD/hardware where the test has
+                    been run. If not specified, then the POD name is
+                    defined as "Unknown" by default.
+                    DO NOT USE THIS OPTION IN MANUAL TEST SCENARIOS.
+  <Jenkins Build tag> = Symbolic name of the Jenkins Build Job.
+                        Visible in test results files, which are stored
+                        to the database. This option is only set when
+                        tests are activated under Jenkins CI control.
+                        It enables the correlation of test results,
+                        which
+                        are independently pushed to the results datbase
+                        from different Jenkins jobs.
+                        DO NOT USE THIS OPTION IN MANUAL TEST SCENARIOS.
+  <DebugTraceValue> = "true" or "false"
+                      Default = "false", if not specified
+                      If "true" is specified, then additional debug trace
+                      text can be sent to the test results file / log files
+                      and also to the standard console output.
+
+Apex Installer Tips
+-------------------
+Some specific tips are useful for the Apex Installer case. If not using
+Apex Installer; ignore this section.
+
+In case of Triple-O based installer (like Apex) the docker container
+needs to connect to the installer VM, so it is then required that some
+known SSH keys are present in docker container. Since the Jumphost root
+SSH keys are already known, easiest way is to use those using the
+'Bind mount' method. See below for sample parameter::
+
+  -v /root/.ssh/id_rsa:/root/.ssh/id_rsa
+
+  NOTE: You need the "sudo" when creating the container to access root
+  users ssh credentials even the docker command itself might not
+  require that.
+
+HINT! In case of Triple-O installers you can find value for the
+INSTALLER_IP parameter by executing command and note the returned IP
+address::
+
+  inst=$(sudo virsh list | grep -iEo "undercloud|instack")
+  sudo virsh domifaddr ${inst}
+
+  NOTE: In releases prior to Colorado, the name 'instack' was
+  used. Currently the name 'undercloud' is used.
+
+You can copy the credentials file from the "stack" users home directory
+in installer VM to Jumphost. Please check the correct IP from the
+command above. In the example below we are using invented IP address
+"192.168.122.89"::
+
+    scp stack@192.168.122.89:overcloudrc .
+
+Here is an example of the full docker command invocation for an Apex
+installed system, using latest Functest docker container, for
+illustration purposes::
+
+  sudo docker run -it --name "ApexFuncTestODL" \
+  -e "INSTALLER_IP=192.168.122.89" \
+  -e "INSTALLER_TYPE=apex" \
+  -e "DEPLOY_SCENARIO=os-odl_l2-nofeature-ha" \
+  -v /root/.ssh/id_rsa:/root/.ssh/id_rsa \
+  -v ~/overcloudrc:/home/opnfv/functest/conf/openstack.creds \
+  opnfv/functest /bin/bash
+
+Compass installer local development env usage Tips
+--------------------------------------------------
+In the compass-functest local test case check and development environment,
+in order to get openstack service inside the functest container, some
+parameters should be configured during container creation, which are
+hard to guess for freshman. This section will provide the guideline, the
+parameters values are defaults here, which should be adjusted according
+to the settings, the complete steps are given here so as not to appear
+too abruptly.
+
+1, Pull Functest docker image from public dockerhub::
+
+    docker pull opnfv/functest:<Tag>
+
+<Tag> here can be "brahmaputra.1.0", "colorado.1.0", etc.
+Tag omitted means the latest docker image::
+
+    docker pull opnfv/functest
+
+2, Functest Docker container creation
+
+To make a file used for the environment, such as 'functest-docker-env'::
+
+    OS_AUTH_URL=http://172.16.1.222:35357/v2.0
+    OS_USERNAME=admin
+    OS_PASSWORD=console
+    OS_TENANT_NAME=admin
+    OS_VOLUME_API_VERSION=2
+    OS_PROJECT_NAME=admin
+    INSTALLER_TYPE=compass
+    INSTALLER_IP=192.168.200.2
+    EXTERNAL_NETWORK=ext-net
 
-Functest may need to know the IP of the installer to retrieve automatically the
-credentials from the installer node/VM or even from the actual controllers.
+Note: please adjust the content according to the environment, such as
+'TENANT_ID' maybe used for some special cases.
 
-The minimum command to create the Functest Docker container can be described as
-follows::
+Then to create the Functest docker::
 
-  docker run -it -e "INSTALLER_IP=10.20.0.2" -e "INSTALLER_TYPE=fuel" opnfv/functest:brahmaputra.1.0 /bin/bash
+    docker run --privileged=true --rm -t \
+    --env-file functest-docker-env \
+    --name <Functest_Container_Name> \
+    opnfv/functest:<Tag> /bin/bash
 
-Optionally, it is possible to precise the container name through the option
-**--name**::
+3, To attach Functest container
 
-  docker run --name "CONTAINER_NAME" -it -e "INSTALLER_IP=10.20.0.2" -e "INSTALLER_TYPE=fuel" opnfv/functest:brahmaputra.1.0 /bin/bash
+Before trying to attach the Functest container, the status can be checked by::
 
-It is also possible to to indicate the path of the OpenStack credentials using **-v**::
+   docker ps -a
 
-  docker run  -it -e "INSTALLER_IP=10.20.0.2" -e "INSTALLER_TYPE=fuel" -v <path_to_your_local_creds_file>:/home/opnfv/functest/conf/openstack.creds opnfv/functest:brahmaputra.1.0 /bin/bash
+to attach the 'Up' status Functest container and start bash mode::
 
-The local file will be mounted in the container under
-*/home/opnfv/functest/conf/openstack.creds*
+   docker exec -it <Functest_Container_Name> bash
 
-If the intention is to run Functest against any of the supported OPNFV scenarios,
-it is recommended to include also the environment variable **DEPLOY_SCENARIO**,
-for example::
+4, Functest environemnt preparation and check
 
-  docker run -it -e "INSTALLER_IP=10.20.0.2" -e "INSTALLER_TYPE=fuel" -e "DEPLOY_SCENARIO=os-odl_l2-nofeature-ha" opnfv/functest:brahmaputra.1.0 /bin/bash
+To see the Section below `Preparing the Functest environment`_.
 
-Inside the container, the following directory structure should be in place::
+Functest docker container directory structure
+---------------------------------------------
+Inside the Functest docker container, the following directory structure
+should now be in place::
 
   `-- home
       `-- opnfv
@@ -64,220 +320,445 @@ Inside the container, the following directory structure should be in place::
             |-- releng
             `-- vims-test
 
+Underneath the '/home/opnfv/' directory, the Functest docker container
+includes two main directories:
+
+  * The **functest** directory stores configuration files (e.g. the
+    OpenStack creds are stored in path '/home/opnfv/functest/conf/openstack.creds'),
+    the **data** directory stores a 'cirros' test image used in some
+    functional tests and the **results** directory stores some temporary
+    result log files
+  * The **repos** directory holds various repositories. The directory
+    '/home/opnfv/repos/functest' is used to prepare the needed Functest
+    environment and to run the tests. The other repository directories
+    are used for the installation of the needed tooling (e.g. rally) or
+    for the retrieval of feature projects scenarios (e.g. promise)
+
+The structure under the **functest** repository can be described as
+follows::
 
-Basically the container includes:
-
-  * Functest directory to store the configuration (the OpenStack creds are stored
-    in /home/opngb/functest/conf/openstack.creds), the data (cirros image needed for
-    some tests), results (some temporary result logs may be stored here)
-  * Repositories: the functest repository will be used to prepare the
-    environment and run the tests. Other repositories are used for the installation
-    of the needed tooling (e.g. rally) and/or the retrieval of feature projects
-    scenarios (e.g. promise)
-
-The structure under the Functest repository can be described as follows::
-
-  .
-    |-- INFO
+  . |-- INFO
     |-- LICENSE
+    |-- __init__.py
+    |-- ci
+    |   |-- __init__.py
+    |   |-- check_os.sh
+    |   |-- config_functest.yaml
+    |   |-- generate_report.py
+    |   |-- exec_test.sh
+    |   |-- prepare_env.py
+    |   |-- run_tests.py
+    |   |-- testcases.yaml
+    |   |-- tier_builder.py
+    |   `-- tier_handler.py
+    |-- cli
+    |   |-- __init__.py
+    |   |-- cli_base.py
+    |   |-- commands
+    |   |-- functest-complete.sh
+    |   `-- setup.py
     |-- commons
     |   |-- ims
     |   |-- mobile
-    |   `-- traffic-profile-guidelines.rst
+    |   `--traffic-profile-guidelines.rst
     |-- docker
     |   |-- Dockerfile
-    |   |-- common.sh
-    |   |-- prepare_env.sh
-    |   |-- requirements.pip
-    |   `-- run_tests.sh
+    |   |-- config_install_env.sh
+    |   `-- requirements.pip
     |-- docs
+    |   |-- com
     |   |-- configguide
     |   |-- devguide
     |   |-- images
+    |   |-- release-notes
     |   |-- results
-    |   `-- userguide
-    `-- testcases
-        |-- Controllers
-        |-- features
-        |-- tests
-        |-- VIM
-        |-- vIMS
-        |-- vPing
+    |   `--userguide
+    |-- testcases
+    |   |-- __init__.py
+    |   |-- Controllers
+    |   |-- OpenStack
+    |   |-- features
+    |   |-- security_scan
+    |   `-- vnf
+    `-- utils
         |-- __init__.py
-        |-- config_functest.py
-        |-- config_functest.yaml
-        `-- functest_utils.py
-
-We may distinguish 4 different folders:
-
-  * **commons**: it is a folder dedicated to store traffic profile or any test
-    inputs that could be reused by any test project
-  * **docker**: this folder includes the scripts that will be used to setup the
-    environment and run the tests
-  * **docs**: this folder includes the user and installation/configuration guide
-  * **testcases**: this folder includes the scripts required by Functest internal
-    test cases and other feature projects test cases.
-
-After the *run* command, a new prompt appears which means that we are inside the
-container and ready to move to the next step.
-
+        |-- functest_logger.py
+        |-- functest_utils.py
+        |-- openstack_clean.py
+        |-- openstack_snapshot.py
+        `-- openstack_utils.py
+
+    (Note: All *.pyc files removed from above list for brevity...)
+
+We may distinguish 7 different directories:
+
+  * **ci**: This directory contains test structure definition files
+    (e.g <filename>.yaml) and bash shell/python scripts used to
+    configure and execute Functional tests. The test execution script
+    can be executed under the control of Jenkins CI jobs.
+  * **cli**: This directory holds the python based Functest CLI utility
+    source code, which is based on the Python 'click' framework.
+  * **commons**: This directory is dedicated for storage of traffic
+    profile or any other test inputs that could be reused by any test
+    project.
+  * **docker**: This directory includes the needed files and tools to
+    build the Funtest Docker container image.
+  * **docs**: This directory includes documentation: Release Notes,
+    User Guide, Configuration Guide and Developer Guide. Test results
+    are also located in a sub--directory called 'results'.
+  * **testcases**: This directory includes the scripts required by
+    Functest internal test cases and other feature projects test cases.
+  * **utils**: this directory holds Python source code for some general
+    purpose helper utilities, which testers can also re-use in their
+    own test code. See for an example the Openstack helper utility:
+    'openstack_utils.py'.
 
 Useful Docker commands
 ----------------------
-
-When typing **exit** in the container prompt, this will cause
-exiting the container and probably stopping it. When stopping a running Docker container
-all the changes will be lost, there is a keyboard shortcut to
-quit the container without stopping it: CTRL+P+Q.
-To reconnect to the running container **DO NOT** use the *run* command again
-(since it will create a new container), use *exec* instead::
-
-  docker ps
-  <copy the container ID>
+When typing **exit** in the container prompt, this will cause exiting
+the container and probably stopping it. When stopping a running Docker
+container all the changes will be lost, there is a keyboard shortcut
+to quit the container without stopping it: <CTRL>-P + <CTRL>-Q. To
+reconnect to the running container **DO NOT** use the *run* command
+again (since it will create a new container), use the *exec* or *attach*
+command instead::
+
+  docker ps  # <check the container ID from the output>
   docker exec -ti <CONTAINER_ID> /bin/bash
 
-or simply::
-
-  docker exec -ti $(docker ps|grep functest|awk '{print $1}') /bin/bash
-
 There are other useful Docker commands that might be needed to manage possible
 issues with the containers.
 
 List the running containers::
 
-   docker ps
+  docker ps
 
 List all the containers including the stopped ones::
 
   docker ps -a
 
+Start a stopped container named "FunTest"::
+
+  docker start FunTest
+
+Attach to a running container named "StrikeTwo"::
+
+  docker attach StrikeTwo
+
 It is useful sometimes to remove a container if there are some problems::
 
   docker rm <CONTAINER_ID>
 
-Use the *-f* option if the container is still running, it will force to destroy it::
+Use the *-f* option if the container is still running, it will force to
+destroy it::
 
   docker -f rm <CONTAINER_ID>
 
-The Docker image is called **opnfv/functest** and it is stored in the public
-Docker registry under the OPNFV account: dockerhub_.
-The are many different tags that have been created automatically by the CI
-mechanisms, but the one that this document refers to is **brahmaputra.1.0**.
-Pulling other tags might cause some problems while running the tests.
-
 Check the Docker documentation dockerdocs_ for more information.
 
-
 Preparing the Functest environment
 ----------------------------------
+Once the Functest docker container is up and running, the required
+Functest environment needs to be prepared. A custom built **functest**
+CLI utility is available to perform the needed environment preparation
+action. Once the environment is prepared, the **functest** CLI utility
+can be used to run different functional tests. The usage of the
+**functest** CLI utility to run tests is described further in the
+Functest User Guide `OPNFV_FuncTestUserGuide`_
 
-Once the docker container is up and running, execute the following command in the
-prompt::
+Prior to commencing the Functest environment preparation, we can check
+the initial status of the environment. Issue the **functest env status**
+command at the prompt::
 
-    ${repos_dir}/functest/docker/prepare_env.sh
+  functest env status
+  Functest environment is not installed.
 
-NOTE: **${repos_dir}** is a default environment variable inside the docker
-container, which points to */home/opnfv/repos/*
+  Note: When the Functest environment is prepared, the command will
+  return the status: "Functest environment ready to run tests."
 
-This script will make sure that the requirements to run the tests are met and will
-install the needed libraries and tools by all Functest test cases. It must be run
-only once every time the docker is started from sratch.
+To prepare the Functest docker container for test case execution, issue
+the **functest env prepare** command at the prompt::
 
+  functest env prepare
 
-Focus on the OpenStack credentials
-----------------------------------
+This script will make sure that the requirements to run the tests are
+met and will install the needed libraries and tools by all Functest
+test cases. It should be run only once every time the Functest docker
+container is started from scratch. If you try to run this command, on
+an already prepared enviroment, you will be prompted whether you really
+want to continue or not::
 
-The OpenStack credentials are needed to run the tests against the VIM.
-There are 3 ways to provide them to Functest:
+  functest env prepare
+  It seems that the environment has been already prepared.
+  Do you want to do it again? [y|n]
 
-  * using the -v option when running the Docker container
-  * create an empty file in /home/opnfv/functest/conf/openstack.creds and paste
-    the credentials in it.
-  * automatically retrieved using the following script::
-         $repos_dir/releng/utils/fetch_os_creds.sh
+  (Type 'n' to abort the request, or 'y' to repeat the
+   environment preparation)
 
-Once the credentials are there, they shall be sourced before running the tests::
 
-    source /home/opnfv/functest/conf/openstack.creds
+To list some basic information about an already prepared Functest
+docker container environment, issue the **functest env show** at the
+prompt::
+
+  functest env show
+  +======================================================+
+  | Functest Environment info                            |
+  +======================================================+
+  |  INSTALLER: apex, 192.168.122.89                     |
+  |   SCENARIO: os-odl_l2-nofeature-ha                   |
+  |        POD: localhost                                |
+  | GIT BRANCH: master                                   |
+  |   GIT HASH: 5bf1647dec6860464eeb082b2875798f0759aa91 |
+  | DEBUG FLAG: false                                    |
+  +------------------------------------------------------+
+  |     STATUS: ready                                    |
+  +------------------------------------------------------+
+
+  Where:
+
+  INSTALLER:  Displays the INSTALLER_TYPE value
+              - here = "apex"
+              and the INSTALLER_IP value
+              - here = "192.168.122.89"
+  SCENARIO:   Displays the DEPLOY_SCENARIO value
+              - here = "os-odl_l2-nofeature-ha"
+  POD:        Displays the value passed in NODE_NAME
+              - here = "localhost"
+  GIT BRANCH: Displays the git branch of the OPNFV Functest
+              project repository included in the Functest
+              Docker Container.
+              - here = "master"
+                       (In first official colorado release
+                        would be "colorado.1.0")
+  GIT HASH:   Displays the git hash of the OPNFV Functest
+              project repository included in the Functest
+              Docker Container.
+              - here = "5bf1647dec6860464eeb082b2875798f0759aa91"
+  DEBUG FLAG: Displays the CI_DEBUG value
+              - here = "false"
+
+  NOTE: In Jenkins CI runs, an additional item "BUILD TAG"
+        would also be listed. The valaue is set by Jenkins CI.
+
+Finally, the **functest** CLI has a **--help** options:
+
+Some examples::
+
+  functest --help Usage: functest [OPTIONS] COMMAND [ARGS]...
+
+  Options:
+    --version  Show the version and exit.
+    -h, --help Show this message and exit.
+
+  Commands:
+    env
+    openstack
+    testcase
+    tier
+
+  functest env --help
+  Usage: functest env [OPTIONS] COMMAND [ARGS]...
+
+  Options:
+    -h, --help Show this message and exit.
+
+  Commands:
+    prepare  Prepares the Functest environment.
+    show     Shows information about the current...
+    status   Checks if the Functest environment is ready...
+
+Checking Openstack and credentials
+----------------------------------
+It is recommended and fairly straightforward to check that Openstack
+and credentials are working as expected.
 
-or simply using the environment variable **creds**::
+Once the credentials are there inside the container, they should be
+sourced before running any Openstack commands::
 
-    . $creds
+  source /home/opnfv/functest/conf/openstack.creds
 
-After this, try to run any OpenStack command to see if you get any output,
-for instance::
+After this, try to run any OpenStack command to see if you get any
+output, for instance::
 
-    openstack user list
+  openstack user list
 
-This will return a list of the actual users in the OpenStack deployment. In any
-other case, check that the credentials are sourced::
+This will return a list of the actual users in the OpenStack
+deployment. In any other case, check that the credentials are sourced::
 
-    env|grep OS_
+  env|grep OS_
 
-This command must show a set of environment variables starting with *OS_*, for example::
+This command must show a set of environment variables starting with
+*OS_*, for example::
 
-    OS_REGION_NAME=RegionOne
-    OS_DEFAULT_DOMAIN=default
-    OS_PROJECT_NAME=admin
-    OS_PASSWORD=admin
-    OS_AUTH_STRATEGY=keystone
-    OS_AUTH_URL=http://172.30.10.3:5000/v2.0
-    OS_USERNAME=admin
-    OS_TENANT_NAME=admin
-    OS_ENDPOINT_TYPE=internalURL
-    OS_NO_CACHE=true
+  OS_REGION_NAME=RegionOne
+  OS_DEFAULT_DOMAIN=default
+  OS_PROJECT_NAME=admin
+  OS_PASSWORD=admin
+  OS_AUTH_STRATEGY=keystone
+  OS_AUTH_URL=http://172.30.10.3:5000/v2.0
+  OS_USERNAME=admin
+  OS_TENANT_NAME=admin
+  OS_ENDPOINT_TYPE=internalURL
+  OS_NO_CACHE=true
 
-If still the OpenStack command does not show anything or complains about
-connectivity issues, it could be due to an incorrect url given to the OS_AUTH_URL
-environment variable. Check the deployment settings.
+If the OpenStack command still does not show anything or complains
+about connectivity issues, it could be due to an incorrect url given to
+the OS_AUTH_URL environment variable. Check the deployment settings.
 
-Additional Options
-------------------
+SSL Support
+-----------
+If you need to connect to a server that is TLS-enabled (the auth URL
+begins with "https") and it uses a certificate from a private CA or a
+self-signed certificate, then you will need to specify the path to an
+appropriate CA certificate to use, to validate the server certificate
+with the environment variable OS_CACERT::
 
-In case you need to provide different configuration parameters to Functest (e.g.
-commit IDs or branches for the repositories, ...) copy the **config_functest.yaml**
-from the repository to your current directory and run the container with a volume::
+  echo $OS_CACERT
+  /etc/ssl/certs/ca.crt
 
-    wget https://git.opnfv.org/cgit/functest/plain/testcases/config_functest.yaml
+However, this certificate does not exist in the container by default.
+It has to be copied manually from the OpenStack deployment. This can be
+done in 2 ways:
 
-    <modify the file accordingly>
+  #. Create manually that file and copy the contents from the OpenStack
+     controller.
+  #. (Recommended) Add the file using a Docker volume when starting the
+     container::
 
-    docker run -ti -e \
-    "INSTALLER_TYPE=fuel" -e "INSTALLER_IP=10.20.0.2" \
-    opnfv/functest:brahmaputra.1.0 \
-    -v $(pwd)/config_functest.yaml:/home/opnfv/functest/conf/config_functest.yaml \
-    /bin/bash\
+       -v <path_to_your_cert_file>:/etc/ssl/certs/ca.cert
 
-However, this is not recommended since most of the test cases rely on static
-parameters read from this file, and changing them might cause problems.
+You might need to export OS_CACERT environment variable inside the
+container::
 
+  export OS_CACERT=/etc/ssl/certs/ca.crt
+
+Certificate verification can be turned off using OS_INSECURE=true. For
+example, Fuel uses self-signed cacerts by default, so an pre step would
+be::
+
+  export OS_INSECURE=true
 
 Proxy support
 -------------
+If your Jumphost node is operating behind a http proxy, then there are
+2 places where some special actions may be needed to make operations
+succeed:
+
+  #. Initial installation of docker engine First, try following the
+     official Docker documentation for Proxy settings. Some issues were
+     experienced on CentOS 7 based Jumphost. Some tips are documented
+     in section: `Docker Installation on CentOS behind http proxy`_
+     below.
+
+  #. Execution of the Functest environment preparation inside the
+     created docker container Functest needs internet access to
+     download some resources for some test cases. This might not
+     work properly if the Jumphost is connecting to internet
+     through a http Proxy.
+
+If that is the case, make sure the resolv.conf and the needed
+http_proxy and https_proxy environment variables, as well as the
+'no_proxy' environment variable are set correctly::
+
+  # Make double sure that the 'no_proxy=...' line in the
+  # 'openstack.creds' file is commented out first. Otherwise, the
+  # values set into the 'no_proxy' environment variable below will
+  # be ovewrwritten, each time the command
+  # 'source ~/functest/conf/openstack.creds' is issued.
+
+  cd ~/functest/conf/
+  sed -i 's/export no_proxy/#export no_proxy/' openstack.creds
+  source ./openstack.creds
+
+  # Next calculate some IP addresses for which http_proxy
+  # usage should be excluded:
+
+  publicURL_IP=$(echo $OS_AUTH_URL | grep -Eo "([0-9]+\.){3}[0-9]+")
+
+  adminURL_IP=$(openstack catalog show identity | \
+  grep adminURL | grep -Eo "([0-9]+\.){3}[0-9]+")
+
+  export http_proxy="<your http proxy settings>"
+  export https_proxy="<your https proxy settings>"
+  export no_proxy="127.0.0.1,localhost,$publicURL_IP,$adminURL_IP"
+
+  # Ensure that "git" uses the http_proxy
+  # This may be needed if your firewall forbids SSL based git fetch
+  git config --global http.sslVerify True
+  git config --global http.proxy <Your http proxy settings>
+
+Validation check: Before running **'functest env prepare'** CLI command,
+make sure you can reach http and https sites from inside the Functest
+docker container.
+
+For example, try to use the **nc** command from inside the functest
+docker container::
+
+  nc -v opnfv.org 80
+  Connection to opnfv.org 80 port [tcp/http] succeeded!
+
+  nc -v opnfv.org 443
+  Connection to opnfv.org 443 port [tcp/https] succeeded!
+
+Note: In a Jumphost node based on the CentOS family OS, the **nc**
+commands might not work. You can use the **curl** command instead.
+
+  curl http://www.opnfv.org:80
+  <HTML><HEAD><meta http-equiv="content-type"
+  .
+  .
+  </BODY></HTML>
+
+  curl https://www.opnfv.org:443
+  <HTML><HEAD><meta http-equiv="content-type"
+  .
+  .
+  </BODY></HTML>
 
-Functest needs internet access to download some resources for some test cases.
-For example to install the Rally environment. This might not work properly if
-the Jumphost is running through a Proxy.
+  (Ignore the content. If command returns a valid HTML page, it proves
+  the connection.)
 
-If that is the case, make sure the resolv.conf and the needed proxy environment
-variables are properly set::
+Docker Installation on CentOS behind http proxy
+-----------------------------------------------
+This section is applicable for CentOS family OS on Jumphost which
+itself is behind a proxy server. In that case, the instructions below
+should be followed **before** installing the docker engine::
 
-    export http_proxy=<your http proxy settings>
-    export https_proxy=<your https proxy settings>
+  1) # Make a directory '/etc/systemd/system/docker.service.d'
+     # if it does not exist
+     sudo mkdir /etc/systemd/system/docker.service.d
 
-Or refer to the official Docker documentation for Proxy_ settings.
+  2) # Create a file called 'env.conf' in that directory with
+     # the following contents:
+     [Service]
+     EnvironmentFile=-/etc/sysconfig/docker
 
-Before running **prepare_env.sh** make sure you can ping http and https sites
-inside the container. For example::
+  3) # Set up a file called 'docker' in directory '/etc/sysconfig'
+     # with the following contents:
+     HTTP_PROXY="<Your http proxy settings>"
+     HTTPS_PROXY="<Your https proxy settings>"
+     http_proxy="${HTTP_PROXY}"
+     https_proxy="${HTTPS_PROXY}"
 
-    nc -v google.com 80
-    Connection to google.com 80 port [tcp/http] succeeded!
+  4) # Reload the daemon
+     systemctl daemon-reload
 
-    nc -v google.com 443
-    Connection to google.com 443 port [tcp/https] succeeded!
+  5) # Sanity check - check the following docker settings:
+     systemctl show docker | grep -i env
 
+     Expected result:
+     ----------------
+     EnvironmentFile=/etc/sysconfig/docker (ignore_errors=yes)
+     DropInPaths=/etc/systemd/system/docker.service.d/env.conf
 
+Now follow the instructions in [`InstallDockerCentOS`_] to download
+and install the **docker-engine**. The instructions conclude with a
+"test pull" of a sample "Hello World" docker container. This should now
+work with the above pre-requisite actions.
 
 .. _dockerdocs: https://docs.docker.com/
 .. _dockerhub: https://hub.docker.com/r/opnfv/functest/
 .. _Proxy: https://docs.docker.com/engine/admin/systemd/#http-proxy
+.. _FunctestDockerTags: https://hub.docker.com/r/opnfv/functest/tags/
+.. _InstallDockerCentOS: https://docs.docker.com/engine/installation/linux/centos/
+.. _OPNFV_FuncTestUserGuide: http://artifacts.opnfv.org/functest/docs/userguide/index.html