Refactor glance_utils.py v1 image creation. 47/37947/1
authorspisarski <s.pisarski@cablelabs.com>
Fri, 21 Jul 2017 21:59:22 +0000 (15:59 -0600)
committerspisarski <s.pisarski@cablelabs.com>
Fri, 21 Jul 2017 21:59:22 +0000 (15:59 -0600)
Replace 4 blocks using named parameters with on call to
create() with kwargs.

JIRA: SNAPS-141

Change-Id: I1268877a8524bb25a7f605f583ace9602f5a9c1b
Signed-off-by: spisarski <s.pisarski@cablelabs.com>
snaps/openstack/tests/create_image_tests.py
snaps/openstack/utils/glance_utils.py

index d538fef..6c9b175 100644 (file)
@@ -12,6 +12,7 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+from glanceclient.exc import HTTPBadRequest
 
 try:
     from urllib.request import URLError
@@ -514,8 +515,14 @@ class CreateImageNegativeTests(OSIntegrationTestCase):
                                        img_format=os_image_settings.format,
                                        url="http://foo.bar"))
 
-        with self.assertRaises(URLError):
+        try:
             self.image_creator.create()
+        except HTTPBadRequest:
+            pass
+        except URLError:
+            pass
+        except Exception as e:
+            self.fail('Invalid Exception ' + str(e))
 
     def test_bad_image_file(self):
         """
index 1010757..090846c 100644 (file)
@@ -106,35 +106,24 @@ def __create_image_v1(glance, image_settings):
     :return: the OpenStack image object
     :raise exceptions from the Glance client or IOError when opening a file
     """
-    created_image = None
+    kwargs = {
+        '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
 
-    # TODO/REFACTOR - replace each call with one including kwargs
     if image_settings.url:
-        if image_settings.extra_properties:
-            created_image = glance.images.create(
-                name=image_settings.name, disk_format=image_settings.format,
-                container_format="bare", location=image_settings.url,
-                properties=image_settings.extra_properties,
-                is_public=image_settings.public)
-        else:
-            created_image = glance.images.create(
-                name=image_settings.name, disk_format=image_settings.format,
-                container_format="bare", location=image_settings.url,
-                is_public=image_settings.public)
+        kwargs['location'] = image_settings.url
     elif image_settings.image_file:
         image_file = open(image_settings.image_file, 'rb')
-        if image_settings.extra_properties:
-            created_image = glance.images.create(
-                name=image_settings.name, disk_format=image_settings.format,
-                container_format="bare", data=image_file,
-                properties=image_settings.extra_properties,
-                is_public=image_settings.public)
-        else:
-            created_image = glance.images.create(
-                name=image_settings.name, disk_format=image_settings.format,
-                container_format="bare", data=image_file,
-                is_public=image_settings.public)
+        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)