diff --git a/nova/context.py b/nova/context.py index 714948e90730..cd4428e581e3 100644 --- a/nova/context.py +++ b/nova/context.py @@ -47,7 +47,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=[], instance_lock_checked=False, **kwargs): + service_catalog=None, instance_lock_checked=False, **kwargs): """ :param read_deleted: 'no' indicates deleted records are hidden, 'yes' indicates deleted records are visible, 'only' indicates that @@ -77,9 +77,15 @@ class RequestContext(object): request_id = generate_request_id() self.request_id = request_id self.auth_token = auth_token - # Only include required parts of service_catalog - self.service_catalog = [s for s in service_catalog + + if service_catalog: + # Only include required parts of service_catalog + self.service_catalog = [s for s in service_catalog if s.get('type') in ('volume')] + else: + # if list is empty or none + self.service_catalog = [] + 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 99b5c705c45d..4639f75b0d3d 100644 --- a/nova/tests/test_context.py +++ b/nova/tests/test_context.py @@ -79,6 +79,14 @@ class ContextTestCase(test.TestCase): ctxt = context.RequestContext('111', '222') self.assertEquals(ctxt.service_catalog, []) + ctxt = context.RequestContext('111', '222', + service_catalog=[]) + self.assertEquals(ctxt.service_catalog, []) + + ctxt = context.RequestContext('111', '222', + service_catalog=None) + self.assertEquals(ctxt.service_catalog, []) + def test_service_catalog_cinder_only(self): service_catalog = [ {u'type': u'compute', u'name': u'nova'},