diff options
author | Joe Gordon <jogo@cloudscaling.com> | 2013-01-22 13:21:57 -0500 |
---|---|---|
committer | Joe Gordon <jogo@cloudscaling.com> | 2013-01-28 13:40:42 -0800 |
commit | 9983d07d056f064da96fe46790573be7ff90677f (patch) | |
tree | 4d32f01f7fc0582a6c9d858927cdd65207ab423c | |
parent | f5a5ba84757a85836d78cc3d8a4f62f5ada2ac65 (diff) | |
download | nova-9983d07d056f064da96fe46790573be7ff90677f.tar.gz |
Stop including full service catalog in each RPC msg
The service catalog is included in the context to get the cinder API
endpoints. Instead of passing entire service catalog just for cinder
endpoint, just include cinder endpoint in context.service_catalog
Change-Id: Ic39173f0a2f330dbd78daa786b269f29ac4abf33
-rw-r--r-- | nova/context.py | 6 | ||||
-rw-r--r-- | nova/tests/test_context.py | 19 | ||||
-rw-r--r-- | nova/volume/cinder.py | 4 |
3 files changed, 26 insertions, 3 deletions
diff --git a/nova/context.py b/nova/context.py index 1a566cb5a6..8731e012d0 100644 --- a/nova/context.py +++ b/nova/context.py @@ -46,7 +46,7 @@ class RequestContext(object): roles=None, remote_address=None, timestamp=None, request_id=None, auth_token=None, overwrite=True, quota_class=None, user_name=None, project_name=None, - service_catalog=None, instance_lock_checked=False, **kwargs): + service_catalog=[], instance_lock_checked=False, **kwargs): """ :param read_deleted: 'no' indicates deleted records are hidden, 'yes' indicates deleted records are visible, 'only' indicates that @@ -79,7 +79,9 @@ class RequestContext(object): request_id = generate_request_id() self.request_id = request_id self.auth_token = auth_token - self.service_catalog = service_catalog + # Only include required parts of service_catalog + self.service_catalog = [s for s in service_catalog + if s.get('type') in ('volume')] self.instance_lock_checked = instance_lock_checked # NOTE(markmc): this attribute is currently only used by the diff --git a/nova/tests/test_context.py b/nova/tests/test_context.py index 0915bf157f..527534fd51 100644 --- a/nova/tests/test_context.py +++ b/nova/tests/test_context.py @@ -74,3 +74,22 @@ class ContextTestCase(test.TestCase): self.assertTrue(c) self.assertIn("'extra_arg1': 'meow'", info['log_msg']) self.assertIn("'extra_arg2': 'wuff'", info['log_msg']) + + def test_service_catalog_default(self): + ctxt = context.RequestContext('111', '222') + self.assertEquals(ctxt.service_catalog, []) + + def test_service_catalog_cinder_only(self): + service_catalog = [ + {u'type': u'compute', u'name': u'nova'}, + {u'type': u's3', u'name': u's3'}, + {u'type': u'image', u'name': u'glance'}, + {u'type': u'volume', u'name': u'cinder'}, + {u'type': u'ec2', u'name': u'ec2'}, + {u'type': u'object-store', u'name': u'swift'}, + {u'type': u'identity', u'name': u'keystone'}] + + volume_catalog = [{u'type': u'volume', u'name': u'cinder'}] + ctxt = context.RequestContext('111', '222', + service_catalog=service_catalog) + self.assertEquals(ctxt.service_catalog, volume_catalog) diff --git a/nova/volume/cinder.py b/nova/volume/cinder.py index daca698544..05918f83de 100644 --- a/nova/volume/cinder.py +++ b/nova/volume/cinder.py @@ -63,8 +63,10 @@ def cinderclient(context): # FIXME: the cinderclient ServiceCatalog object is mis-named. # It actually contains the entire access blob. + # Only needed parts of the service catalog are passed in, see + # nova/context.py. compat_catalog = { - 'access': {'serviceCatalog': context.service_catalog or {}} + 'access': {'serviceCatalog': context.service_catalog or []} } sc = service_catalog.ServiceCatalog(compat_catalog) if CONF.cinder_endpoint_template: |