Creating Glance image for Tempest suite 41/15441/1
authorvitikkan <viktor.tikkanen@nokia.com>
Mon, 13 Jun 2016 10:29:38 +0000 (13:29 +0300)
committervitikkan <viktor.tikkanen@nokia.com>
Mon, 13 Jun 2016 10:35:43 +0000 (13:35 +0300)
If not yet existing, Cirros-0.3.4 image is created before
running Tempest test suite. Source file for the image is included
into opnfv/functest Docker container.

JIRA: FUNCTEST-195

Change-Id: I980193c4207c1301ca4e3b6e850b4056e6aa0130
Signed-off-by: vitikkan <viktor.tikkanen@nokia.com>
ci/config_functest.yaml
testcases/OpenStack/tempest/run_tempest.py

index 69f263f..4c673fa 100644 (file)
@@ -29,7 +29,7 @@ general:
         dir_rally_inst:     /home/opnfv/.rally
 
     openstack:
-        image_name: functest-img
+        image_name: Cirros-0.3.4
         image_file_name:  cirros-0.3.4-x86_64-disk.img
         image_disk_format:  qcow2
 
index 46b0189..f59ba52 100644 (file)
@@ -24,6 +24,7 @@ import yaml
 import ConfigParser
 
 import keystoneclient.v2_0.client as ksclient
+from glanceclient import client as glanceclient
 from neutronclient.v2_0 import client as neutronclient
 
 import functest.utils.functest_logger as ft_logger
@@ -66,6 +67,14 @@ f.close()
 TEST_DB = functest_yaml.get("results").get("test_db_url")
 
 MODE = "smoke"
+GLANCE_IMAGE_NAME = functest_yaml.get("general").get(
+    "openstack").get("image_name")
+GLANCE_IMAGE_FILENAME = functest_yaml.get("general").get(
+    "openstack").get("image_file_name")
+GLANCE_IMAGE_FORMAT = functest_yaml.get("general").get(
+    "openstack").get("image_disk_format")
+GLANCE_IMAGE_PATH = functest_yaml.get("general").get("directories").get(
+    "dir_functest_data") + "/" + GLANCE_IMAGE_FILENAME
 PRIVATE_NET_NAME = functest_yaml.get("tempest").get("private_net_name")
 PRIVATE_SUBNET_NAME = functest_yaml.get("tempest").get("private_subnet_name")
 PRIVATE_SUBNET_CIDR = functest_yaml.get("tempest").get("private_subnet_cidr")
@@ -149,6 +158,27 @@ def create_tempest_resources():
         logger.error("Private network creation failed")
         exit(-1)
 
+    logger.debug("Creating image for Tempest suite")
+    glance_endpoint = keystone.service_catalog.url_for(
+        service_type='image', endpoint_type='publicURL')
+    glance_client = glanceclient.Client(1, glance_endpoint,
+                                        token=keystone.auth_token)
+    # Check if the given image exists
+    image_id = os_utils.get_image_id(glance_client, GLANCE_IMAGE_NAME)
+    if image_id != '':
+        logger.info("Using existing image '%s'..." % GLANCE_IMAGE_NAME)
+    else:
+        logger.info("Creating image '%s' from '%s'..." % (GLANCE_IMAGE_NAME,
+                                                          GLANCE_IMAGE_PATH))
+        image_id = os_utils.create_glance_image(glance_client,
+                                                GLANCE_IMAGE_NAME,
+                                                GLANCE_IMAGE_PATH)
+        if not image_id:
+            logger.error("Failed to create a Glance image...")
+            exit(-1)
+        logger.debug("Image '%s' with ID=%s created successfully."
+                     % (GLANCE_IMAGE_NAME, image_id))
+
 
 def configure_tempest(deployment_dir):
     """