summaryrefslogtreecommitdiffstats
path: root/snaps/openstack/utils/glance_utils.py
diff options
context:
space:
mode:
authorspisarski <s.pisarski@cablelabs.com>2017-07-27 10:27:14 -0600
committerspisarski <s.pisarski@cablelabs.com>2017-07-27 10:27:14 -0600
commitca276f452540f68c08cb3df9049e9e7876364dac (patch)
treece26c5fb721f10402669bf761c4e69317d3f3eca /snaps/openstack/utils/glance_utils.py
parentfdcd5600bade294ae2a2207ef01da92f22f64327 (diff)
Ensure library and tests close all necessary resources.
The SNAPS-OO library and tests had left open files, ssh, and scp connections. These have all now been wrapped with try/finally blocks. JIRA: SNAPS-152 Change-Id: I43e09978b5c075bd78ff3279c0799556b8758878 Signed-off-by: spisarski <s.pisarski@cablelabs.com>
Diffstat (limited to 'snaps/openstack/utils/glance_utils.py')
-rw-r--r--snaps/openstack/utils/glance_utils.py38
1 files changed, 23 insertions, 15 deletions
diff --git a/snaps/openstack/utils/glance_utils.py b/snaps/openstack/utils/glance_utils.py
index 49bfe95..ad9c5e5 100644
--- a/snaps/openstack/utils/glance_utils.py
+++ b/snaps/openstack/utils/glance_utils.py
@@ -124,22 +124,30 @@ def __create_image_v1(glance, image_settings):
'name': image_settings.name, 'disk_format': image_settings.format,
'container_format': 'bare', 'is_public': image_settings.public}
- if image_settings.extra_properties:
- kwargs['properties'] = image_settings.extra_properties
-
- if image_settings.url:
- kwargs['location'] = image_settings.url
- elif image_settings.image_file:
- image_file = open(image_settings.image_file, 'rb')
- kwargs['data'] = image_file
- else:
- logger.warn('Unable to create image with name - %s. No file or URL',
- image_settings.name)
- return None
+ image_file = None
- created_image = glance.images.create(**kwargs)
- return Image(name=image_settings.name, image_id=created_image.id,
- size=created_image.size, properties=created_image.properties)
+ try:
+ if image_settings.extra_properties:
+ kwargs['properties'] = image_settings.extra_properties
+
+ if image_settings.url:
+ kwargs['location'] = image_settings.url
+ elif image_settings.image_file:
+ image_file = open(image_settings.image_file, 'rb')
+ kwargs['data'] = image_file
+ else:
+ logger.warn(
+ 'Unable to create image with name - %s. No file or URL',
+ image_settings.name)
+ return None
+
+ created_image = glance.images.create(**kwargs)
+ return Image(name=image_settings.name, image_id=created_image.id,
+ size=created_image.size,
+ properties=created_image.properties)
+ finally:
+ if image_file:
+ image_file.close()
def __create_image_v2(glance, image_settings):