Merge "Switch tasks vs put on a boolean config flag"

This commit is contained in:
Jenkins 2015-05-04 23:09:07 +00:00 committed by Gerrit Code Review
commit f525c032a6
3 changed files with 16 additions and 10 deletions

View File

@ -1,7 +1,7 @@
pbr>=0.5.21,<1.0
jsonpatch
os-client-config>=0.7.0
os-client-config>=0.8.1
six
python-novaclient>=2.21.0

View File

@ -222,6 +222,10 @@ class OpenStackCloud(object):
OpenStack API tasks. Unless you're doing
rate limiting client side, you almost
certainly don't need this. (optional)
:param bool image_api_use_tasks: Whether or not this cloud needs to
use the glance task-create interface for
image upload activities instead of direct
calls. (optional, defaults to False)
"""
def __init__(self, cloud, auth,
@ -235,6 +239,7 @@ class OpenStackCloud(object):
cache_class='dogpile.cache.null',
cache_arguments=None,
manager=None,
image_api_use_tasks=False,
**kwargs):
self.name = cloud
@ -254,6 +259,7 @@ class OpenStackCloud(object):
self.service_names = _get_service_values(kwargs, 'service_name')
self.endpoints = _get_service_values(kwargs, 'endpoint')
self.api_versions = _get_service_values(kwargs, 'api_version')
self.image_api_use_tasks = image_api_use_tasks
(self.verify, self.cert) = _ssl_args(verify, cacert, cert, key)
@ -1175,22 +1181,21 @@ class OpenStackCloud(object):
kwargs[IMAGE_MD5_KEY] = md5
kwargs[IMAGE_SHA256_KEY] = sha256
# This makes me want to die inside
glance_api_version = self._get_glance_api_version()
if glance_api_version == '2':
return self._upload_image_v2(
if self.image_api_use_tasks:
return self._upload_image_task(
name, filename, container,
current_image=current_image,
wait=wait, timeout=timeout, **kwargs)
elif glance_api_version == '1':
else:
image_kwargs = dict(properties=kwargs)
if disk_format:
image_kwargs['disk_format'] = disk_format
if container_format:
image_kwargs['container_format'] = container_format
return self._upload_image_v1(name, filename, **image_kwargs)
return self._upload_image_put(name, filename, **image_kwargs)
def _upload_image_v1(self, name, filename, **image_kwargs):
def _upload_image_put(self, name, filename, **image_kwargs):
image = self.manager.submitTask(_tasks.ImageCreate(
name=name, **image_kwargs))
self.manager.submitTask(_tasks.ImageUpdate(
@ -1198,7 +1203,7 @@ class OpenStackCloud(object):
self._cache.invalidate()
return self.get_image_dict(image.id)
def _upload_image_v2(
def _upload_image_task(
self, name, filename, container, current_image=None,
wait=True, timeout=None, **image_properties):
self.create_object(

View File

@ -303,7 +303,7 @@ class TestMemoryCache(base.TestCase):
name, imagefile.name, container=container, wait=True)
@mock.patch.object(shade.OpenStackCloud, 'glance_client')
def test_create_image_v1(self, glance_mock):
def test_create_image_put(self, glance_mock):
self.cloud.api_versions['image'] = '1'
glance_mock.images.list.return_value = []
self.assertEqual({}, self.cloud.list_images())
@ -326,8 +326,9 @@ class TestMemoryCache(base.TestCase):
@mock.patch.object(shade.OpenStackCloud, 'glance_client')
@mock.patch.object(shade.OpenStackCloud, 'swift_client')
def test_create_image_v2(self, swift_mock, glance_mock):
def test_create_image_task(self, swift_mock, glance_mock):
self.cloud.api_versions['image'] = '2'
self.cloud.image_api_use_tasks = True
class Container(object):
name = 'image_upload_v2_test_container'