Add a new directory to hold pre-downloaded images 33/34033/20
authorhelenyao <yaohelan@huawei.com>
Tue, 2 May 2017 06:24:22 +0000 (14:24 +0800)
committerhelenyao <yaohelan@huawei.com>
Thu, 18 May 2017 07:24:07 +0000 (15:24 +0800)
Put all images in the new direcotry. If users want to use the
local image, map the local directory to the ${HOME}/functest/images

Change-Id: I0d309b93f52b3da23d6130056f1a19907313ef68
Signed-off-by: helenyao <yaohelan@huawei.com>
docker/Dockerfile
docker/Dockerfile.aarch64
docker/add_images.sh
functest/ci/config_functest.yaml
functest/ci/download_images.sh [new file with mode: 0644]
functest/ci/prepare_env.py
functest/opnfv_tests/openstack/rally/rally.py
functest/opnfv_tests/openstack/tempest/conf_utils.py
functest/opnfv_tests/sdn/onos/onos.py
functest/tests/unit/ci/test_prepare_env.py

index 6137cc9..202eb5c 100644 (file)
@@ -25,6 +25,7 @@ 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_IMAGES_DIR=${FUNCTEST_BASE_DIR}/images
 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
@@ -71,7 +72,9 @@ RUN pip install --upgrade pip
 RUN mkdir -p ${REPOS_DIR} \
     && mkdir -p ${REPOS_VNFS_DIR} \
     && mkdir -p ${FUNCTEST_BASE_DIR}/results \
-    && mkdir -p ${FUNCTEST_BASE_DIR}/conf \
+    && mkdir -p ${FUNCTEST_CONF_DIR} \
+    && mkdir -p ${FUNCTEST_DATA_DIR} \
+    && mkdir -p ${FUNCTEST_IMAGES_DIR} \
     && mkdir -p /root/.ssh \
     && chmod 700 /root/.ssh
 
index 83df2d0..b03c6d9 100644 (file)
@@ -24,6 +24,7 @@ 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_IMAGES_DIR=${FUNCTEST_BASE_DIR}/images
 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
@@ -71,6 +72,8 @@ RUN mkdir -p ${REPOS_DIR} \
     && mkdir -p ${REPOS_VNFS_DIR} \
     && mkdir -p ${FUNCTEST_BASE_DIR}/results \
     && mkdir -p ${FUNCTEST_BASE_DIR}/conf \
+    && mkdir -p ${FUNCTEST_DATA_DIR} \
+    && mkdir -p ${FUNCTEST_IMAGES_DIR} \
     && mkdir -p /root/.ssh \
     && chmod 700 /root/.ssh
 
index af2956c..919cecd 100755 (executable)
@@ -7,11 +7,10 @@ CIRROS_REPO_URL=http://download.cirros-cloud.net
 CIRROS_AARCH64_TAG=161201
 CIRROS_X86_64_TAG=0.3.5
 
-wget ${CIRROS_REPO_URL}/${CIRROS_X86_64_TAG}/cirros-${CIRROS_X86_64_TAG}-x86_64-disk.img -P ${FUNCTEST_BASE_DIR}/data/
-wget ${CIRROS_REPO_URL}/${CIRROS_X86_64_TAG}/cirros-${CIRROS_X86_64_TAG}-x86_64-lxc.tar.gz -P ${FUNCTEST_BASE_DIR}/data/
-wget http://205.177.226.237:9999/onosfw/firewall_block_image.img -P ${FUNCTEST_BASE_DIR}/data/
+wget ${CIRROS_REPO_URL}/${CIRROS_X86_64_TAG}/cirros-${CIRROS_X86_64_TAG}-x86_64-disk.img -P ${FUNCTEST_IMAGES_DIR}
+wget ${CIRROS_REPO_URL}/${CIRROS_X86_64_TAG}/cirros-${CIRROS_X86_64_TAG}-x86_64-lxc.tar.gz -P ${FUNCTEST_IMAGES_DIR}
 
 # Add the 3-part image for aarch64, since functest can be run from an x86 machine to test an aarch64 POD
-wget ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-disk.img -P ${FUNCTEST_BASE_DIR}/data/
-wget ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-initramfs -P ${FUNCTEST_BASE_DIR}/data/
-wget ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-kernel -P ${FUNCTEST_BASE_DIR}/data/
+wget ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-disk.img -P ${FUNCTEST_IMAGES_DIR}
+wget ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-initramfs -P ${FUNCTEST_IMAGES_DIR}
+wget ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-kernel -P ${FUNCTEST_IMAGES_DIR}
index 6d44f39..5496dd9 100644 (file)
@@ -38,6 +38,7 @@ general:
         functest_conf:      /home/opnfv/functest/conf
         functest_data:      /home/opnfv/functest/data
         ims_data:           /home/opnfv/functest/data/ims/
+        functest_images:    /home/opnfv/functest/images
         rally_inst:         /home/opnfv/.rally
         repo_kingbird:      /home/opnfv/repos/kingbird
         refstack_client:    /home/opnfv/repos/refstack-client
diff --git a/functest/ci/download_images.sh b/functest/ci/download_images.sh
new file mode 100644 (file)
index 0000000..f3fdef2
--- /dev/null
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+CIRROS_REPO_URL=http://download.cirros-cloud.net
+CIRROS_AARCH64_TAG=161201
+CIRROS_X86_64_TAG=0.3.5
+
+RED='\033[1;31m'
+NC='\033[0m' # No Color
+
+function usage(){
+    echo -e "${RED}USAGE: $script <destination_folder>${NC}"
+    exit 0
+}
+
+script=`basename "$0"`
+IMAGES_FOLDER_DIR=$1
+
+if [[ -z $IMAGES_FOLDER_DIR ]]; then usage; fi;
+
+set -ex
+mkdir -p ${IMAGES_FOLDER_DIR}
+
+wget -nc ${CIRROS_REPO_URL}/${CIRROS_X86_64_TAG}/cirros-${CIRROS_X86_64_TAG}-x86_64-disk.img -P ${IMAGES_FOLDER_DIR}
+wget -nc ${CIRROS_REPO_URL}/${CIRROS_X86_64_TAG}/cirros-${CIRROS_X86_64_TAG}-x86_64-lxc.tar.gz -P ${IMAGES_FOLDER_DIR}
+wget -nc http://artifacts.opnfv.org/sdnvpn/ubuntu-16.04-server-cloudimg-amd64-disk1.img -P ${IMAGES_FOLDER_DIR}
+
+# Add 3rd-party images for aarch64, since Functest can be run on an x86 machine to test an aarch64 POD
+wget -nc ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-disk.img -P ${IMAGES_FOLDER_DIR}
+wget -nc ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-initramfs -P ${IMAGES_FOLDER_DIR}
+wget -nc ${CIRROS_REPO_URL}/daily/20${CIRROS_AARCH64_TAG}/cirros-d${CIRROS_AARCH64_TAG}-aarch64-kernel -P ${IMAGES_FOLDER_DIR}
+set +ex
\ No newline at end of file
index 9fd0795..8e17a4f 100755 (executable)
@@ -156,8 +156,8 @@ def create_directories():
         logger.info("    %s created." %
                     CONST.__getattribute__('dir_functest_conf'))
     else:
-        logger.debug("   %s already exists."
-                     CONST.__getattribute__('dir_functest_conf'))
+        logger.debug("   %s already exists." %
+                     CONST.__getattribute__('dir_functest_conf'))
 
     if not os.path.exists(CONST.__getattribute__('dir_functest_data')):
         os.makedirs(CONST.__getattribute__('dir_functest_data'))
@@ -166,6 +166,13 @@ def create_directories():
     else:
         logger.debug("   %s already exists." %
                      CONST.__getattribute__('dir_functest_data'))
+    if not os.path.exists(CONST.__getattribute__('dir_functest_images')):
+        os.makedirs(CONST.__getattribute__('dir_functest_images'))
+        logger.info("    %s created." %
+                    CONST.__getattribute__('dir_functest_images'))
+    else:
+        logger.debug("   %s already exists." %
+                     CONST.__getattribute__('dir_functest_images'))
 
 
 def source_rc_file():
index f762383..06b4f4d 100644 (file)
@@ -31,7 +31,7 @@ class RallyBase(testcase.TestCase):
              'neutron', 'nova', 'quotas', 'requests', 'vm', 'all']
     GLANCE_IMAGE_NAME = CONST.openstack_image_name
     GLANCE_IMAGE_FILENAME = CONST.openstack_image_file_name
-    GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_data,
+    GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_images,
                                      GLANCE_IMAGE_FILENAME)
     GLANCE_IMAGE_FORMAT = CONST.openstack_image_disk_format
     FLAVOR_NAME = "m1.tiny"
index 54f7428..cd6a2a8 100644 (file)
@@ -22,7 +22,7 @@ import functest.utils.openstack_utils as os_utils
 IMAGE_ID_ALT = None
 FLAVOR_ID_ALT = None
 REPO_PATH = CONST.dir_repo_functest
-GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_data,
+GLANCE_IMAGE_PATH = os.path.join(CONST.dir_functest_images,
                                  CONST.openstack_image_file_name)
 TEMPEST_TEST_LIST_DIR = CONST.dir_tempest_cases
 TEMPEST_RESULTS_DIR = os.path.join(CONST.dir_results,
index d7a2d38..5dfff03 100644 (file)
@@ -25,7 +25,7 @@ class OnosBase(testcase.TestCase):
     onos_repo_path = CONST.__getattribute__('dir_repo_onos')
     onos_sfc_image_name = CONST.__getattribute__('onos_sfc_image_name')
     onos_sfc_image_path = os.path.join(
-        CONST.__getattribute__('dir_functest_data'),
+        CONST.__getattribute__('dir_functest_images'),
         CONST.__getattribute__('onos_sfc_image_file_name'))
     onos_sfc_path = os.path.join(CONST.__getattribute__('dir_repo_functest'),
                                  CONST.__getattribute__('dir_onos_sfc'))
index 39a0825..fbb5965 100644 (file)
@@ -192,12 +192,17 @@ class PrepareEnvTesting(unittest.TestCase):
                 CONST.__getattribute__('dir_functest_conf'))
             mock_method.assert_any_call(
                 CONST.__getattribute__('dir_functest_data'))
+            mock_method.assert_any_call(
+                CONST.__getattribute__('dir_functest_images'))
             mock_logger_info.assert_any_call("    %s created." %
                                              CONST.__getattribute__(
                                                  'dir_functest_conf'))
             mock_logger_info.assert_any_call("    %s created." %
                                              CONST.__getattribute__(
                                                  'dir_functest_data'))
+            mock_logger_info.assert_any_call("    %s created." %
+                                             CONST.__getattribute__(
+                                                 'dir_functest_images'))
 
     @mock.patch('functest.ci.prepare_env.logger.info')
     @mock.patch('functest.ci.prepare_env.logger.debug')
@@ -213,6 +218,9 @@ class PrepareEnvTesting(unittest.TestCase):
             mock_logger_debug.assert_any_call("   %s already exists." %
                                               CONST.__getattribute__(
                                                   'dir_functest_data'))
+            mock_logger_debug.assert_any_call("   %s already exists." %
+                                              CONST.__getattribute__(
+                                                  'dir_functest_images'))
 
     def _get_env_cred_dict(self, os_prefix=''):
         return {'OS_USERNAME': os_prefix + 'username',