nova_client = os_utils.get_nova_client()
     neutron_client = os_utils.get_neutron_client()
-    glance_client = os_utils.get_glance_client()
     cinder_client = os_utils.get_cinder_client()
 
     start_time = time.time()
     else:
         logger.debug("Using existing volume type(s)...")
 
-    image_id = os_utils.get_image_id(glance_client, GLANCE_IMAGE_NAME)
-    image_exists = False
-
-    if image_id == '':
-        logger.debug("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,
-                                                GLANCE_IMAGE_FORMAT)
-        if not image_id:
-            logger.error("Failed to create the Glance image...")
-            exit(-1)
-        else:
-            logger.debug("Image '%s' with ID '%s' created succesfully ."
-                         % (GLANCE_IMAGE_NAME, image_id))
-    else:
-        logger.debug("Using existing image '%s' with ID '%s'..."
-                     % (GLANCE_IMAGE_NAME, image_id))
-        image_exists = True
+    image_exists, image_id = os_utils.get_or_create_image(GLANCE_IMAGE_NAME,
+                                                          GLANCE_IMAGE_PATH,
+                                                          GLANCE_IMAGE_FORMAT)
+    if not image_id:
+        exit(-1)
 
     logger.debug("Creating network '%s'..." % PRIVATE_NET_NAME)
     network_dict = os_utils.create_network_full(neutron_client,
 
 def create_tempest_resources():
     keystone_client = os_utils.get_keystone_client()
     neutron_client = os_utils.get_neutron_client()
-    glance_client = os_utils.get_glance_client()
 
     logger.debug("Creating tenant and user for Tempest suite")
     tenant_id = os_utils.create_tenant(keystone_client,
         exit(-1)
 
     logger.debug("Creating image for Tempest suite")
-    # 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,
-                                                GLANCE_IMAGE_FORMAT)
-        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))
+    _, image_id = os_utils.get_or_create_image(GLANCE_IMAGE_NAME,
+                                               GLANCE_IMAGE_PATH,
+                                               GLANCE_IMAGE_FORMAT)
+    if not image_id:
+        exit(-1)
 
 
 def configure_tempest(deployment_dir):
 
 
 
 def create_image():
-    EXIT_CODE = -1
-
-    # 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,
-                                                GLANCE_IMAGE_FORMAT)
-        if not image_id:
-            logger.error("Failed to create a Glance image...")
-            exit(EXIT_CODE)
-        logger.debug("Image '%s' with ID=%s created successfully."
-                     % (GLANCE_IMAGE_NAME, image_id))
+    _, image_id = os_utils.get_or_create_image(GLANCE_IMAGE_NAME,
+                                               GLANCE_IMAGE_PATH,
+                                               GLANCE_IMAGE_FORMAT)
+    if not image_id:
+        exit(-1)
 
     return image_id
 
 
         return None
 
 
+def get_or_create_image(name, path, format):
+    image_exists = False
+    glance_client = get_glance_client()
+
+    image_id = get_image_id(glance_client, name)
+    if image_id != '':
+        logger.info("Using existing image '%s'..." % name)
+        image_exists = True
+    else:
+        logger.info("Creating image '%s' from '%s'..." % (name, path))
+        image_id = create_glance_image(glance_client, name, path, format)
+        if not image_id:
+            logger.error("Failed to create a Glance image...")
+        else:
+            logger.debug("Image '%s' with ID=%s created successfully."
+                         % (name, image_id))
+
+    return image_exists, image_id
+
+
 def delete_glance_image(nova_client, image_id):
     try:
         nova_client.images.delete(image_id)