return (image_id, host, port, use_ssl)
-def _create_glance_client(context, host, port, use_ssl, version=1):
+def _create_glance_client(context, host, port, use_ssl,
+ version=FLAGS.glance_api_version):
"""Instantiate a new glanceclient.Client object"""
+ if version is None:
+ version = FLAGS.glance_api_version
if use_ssl:
scheme = 'https'
else:
else:
self.client = None
self.api_servers = None
+ self.version = version
def _create_static_client(self, context, host, port, use_ssl, version):
"""Create a client that we'll use for every call."""
self.host, self.port,
self.use_ssl, version)
- def call(self, context, version, method, *args, **kwargs):
+ def call(self, context, method, *args, **kwargs):
"""
Call a glance client method. If we get a connection error,
retry the request according to FLAGS.glance_num_retries.
"""
+ version = self.version
+ if version in kwargs:
+ version = kwargs['version']
+
retry_excs = (glanceclient.exc.ServiceUnavailable,
glanceclient.exc.InvalidEndpoint,
glanceclient.exc.CommunicationError)
"""Calls out to Glance for a list of detailed image information."""
params = self._extract_query_params(kwargs)
try:
- images = self._client.call(context, 1, 'list', **params)
+ images = self._client.call(context, 'list', **params)
except Exception:
_reraise_translated_exception()
def show(self, context, image_id):
"""Returns a dict with image data for the given opaque image id."""
try:
- image = self._client.call(context, 1, 'get', image_id)
+ image = self._client.call(context, 'get', image_id)
except Exception:
_reraise_translated_image_exception(image_id)
or None if this attribute is not shown by Glance."""
try:
client = GlanceClientWrapper()
- image_meta = client.call(context, 2, 'get', image_id)
+ image_meta = client.call(context, 'get', image_id)
except Exception:
_reraise_translated_image_exception(image_id)
def download(self, context, image_id, data):
"""Calls out to Glance for metadata and data and writes data."""
try:
- image_chunks = self._client.call(context, 1, 'data', image_id)
+ image_chunks = self._client.call(context, 'data', image_id)
except Exception:
_reraise_translated_image_exception(image_id)
if data:
sent_service_image_meta['data'] = data
- recv_service_image_meta = self._client.call(context, 1, 'create',
+ recv_service_image_meta = self._client.call(context, 'create',
**sent_service_image_meta)
return self._translate_from_glance(recv_service_image_meta)
if data:
image_meta['data'] = data
try:
- image_meta = self._client.call(context, 1, 'update',
- image_id, **image_meta)
+ image_meta = self._client.call(context, 'update', image_id,
+ **image_meta)
except Exception:
_reraise_translated_image_exception(image_id)
else:
"""
try:
- self._client.call(context, 1, 'delete', image_id)
+ self._client.call(context, 'delete', image_id)
except glanceclient.exc.NotFound:
raise exception.ImageNotFound(image_id=image_id)
return True
from cinder import context
from cinder import exception
+from cinder import flags
from cinder.image import glance
from cinder import test
from cinder.tests.glance import stubs as glance_stubs
+from glanceclient.v2.client import Client as glanceclient_v2
+
+
+FLAGS = flags.FLAGS
class NullWriter(object):
'something-less-likely')
+class TestGlanceClientVersion(test.TestCase):
+ """Tests the version of the glance client generated"""
+ def setUp(self):
+ super(TestGlanceClientVersion, self).setUp()
+
+ def fake_get_image_model(self):
+ return
+
+ self.stubs.Set(glanceclient_v2, '_get_image_model',
+ fake_get_image_model)
+
+ def test_glance_version_by_flag(self):
+ """Test glance version set by flag is honoured"""
+ client_wrapper_v1 = glance.GlanceClientWrapper('fake', 'fake_host',
+ 9292)
+ self.assertEquals(client_wrapper_v1.client.__module__,
+ 'glanceclient.v1.client')
+ self.flags(glance_api_version=2)
+ client_wrapper_v2 = glance.GlanceClientWrapper('fake', 'fake_host',
+ 9292)
+ self.assertEquals(client_wrapper_v2.client.__module__,
+ 'glanceclient.v2.client')
+ FLAGS.reset()
+
+ def test_glance_version_by_arg(self):
+ """Test glance version set by arg to GlanceClientWrapper"""
+ client_wrapper_v1 = glance.GlanceClientWrapper('fake', 'fake_host',
+ 9292, version=1)
+ self.assertEquals(client_wrapper_v1.client.__module__,
+ 'glanceclient.v1.client')
+ client_wrapper_v2 = glance.GlanceClientWrapper('fake', 'fake_host',
+ 9292, version=2)
+ self.assertEquals(client_wrapper_v2.client.__module__,
+ 'glanceclient.v2.client')
+
+
def _create_failing_glance_client(info):
class MyGlanceStubClient(glance_stubs.StubGlanceClient):
"""A client that fails the first time, then succeeds."""