Closing keystone sessions after done with them.
[snaps.git] / snaps / openstack / utils / glance_utils.py
index 2606e32..db20f2f 100644 (file)
@@ -34,13 +34,18 @@ Utilities for basic neutron API calls
 """
 
 
-def glance_client(os_creds):
+def glance_client(os_creds, session=None):
     """
     Creates and returns a glance client object
+    :param os_creds: the credentials for connecting to the OpenStack remote API
+    :param session: the keystone session object (optional)
     :return: the glance client
     """
+    if not session:
+        session = keystone_utils.keystone_session(os_creds)
+
     return Client(version=os_creds.image_api_version,
-                  session=keystone_utils.keystone_session(os_creds),
+                  session=session,
                   region_name=os_creds.region_name)
 
 
@@ -168,7 +173,7 @@ def __create_image_v2(glance, image_settings):
     """
     cleanup_temp_file = False
     image_file = None
-    if image_settings.image_file:
+    if image_settings.image_file is not None:
         image_filename = image_settings.image_file
     elif image_settings.url:
         file_name = str(uuid.uuid4())
@@ -199,7 +204,7 @@ def __create_image_v2(glance, image_settings):
             kwargs.update(image_settings.extra_properties)
 
         os_image = glance.images.create(**kwargs)
-        image_file = open(image_filename, 'rb')
+        image_file = open(os.path.expanduser(image_filename), 'rb')
         glance.images.upload(os_image['id'], image_file)
     except:
         logger.error('Unexpected exception creating image. Rolling back')