summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/image/glance.py12
-rw-r--r--nova/tests/image/test_glance.py11
2 files changed, 18 insertions, 5 deletions
diff --git a/nova/image/glance.py b/nova/image/glance.py
index b68415844..f82c0f4a3 100644
--- a/nova/image/glance.py
+++ b/nova/image/glance.py
@@ -60,14 +60,22 @@ class GlanceImageService(service.BaseImageService):
SERVICE_IMAGE_ATTRS = service.BaseImageService.BASE_IMAGE_ATTRS +\
GLANCE_ONLY_ATTRS
- @property
- def client(self):
+ _client = None
+
+ def _get_client(self):
# NOTE(sirp): we want to load balance each request across glance
# servers. Since GlanceImageService is a long-lived object, `client`
# is made to choose a new server each time via this property.
+ if self._client is not None:
+ return self._client
glance_host, glance_port = pick_glance_api_server()
return GlanceClient(glance_host, glance_port)
+ def _set_client(self, client):
+ self._client = client
+
+ client = property(_get_client, _set_client)
+
def index(self, context, filters=None, marker=None, limit=None):
"""Calls out to Glance for a list of images available."""
# NOTE(sirp): We need to use `get_images_detailed` and not
diff --git a/nova/tests/image/test_glance.py b/nova/tests/image/test_glance.py
index 041da1e13..033b8389c 100644
--- a/nova/tests/image/test_glance.py
+++ b/nova/tests/image/test_glance.py
@@ -17,6 +17,7 @@
import datetime
+import stubout
import unittest
from nova import context
@@ -60,12 +61,16 @@ class BaseGlanceTest(unittest.TestCase):
NOW_DATETIME = datetime.datetime(2010, 10, 11, 10, 30, 22)
def setUp(self):
- # FIXME(sirp): we can probably use stubs library here rather than
- # dependency injection
+ self.stubs = stubout.StubOutForTesting()
self.client = StubGlanceClient(None)
- self.service = glance.GlanceImageService(self.client)
+ self.service = glance.GlanceImageService()
+ self.stubs.Set(self.service, 'client', self.client)
self.context = context.RequestContext(None, None)
+ def tearDown(self):
+ self.stubs.UnsetAll()
+ super(BaseGlanceTest, self).tearDown()
+
def assertDateTimesFilled(self, image_meta):
self.assertEqual(image_meta['created_at'], self.NOW_DATETIME)
self.assertEqual(image_meta['updated_at'], self.NOW_DATETIME)