diff options
| author | Jenkins <jenkins@review.openstack.org> | 2012-10-24 05:02:06 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2012-10-24 05:02:06 +0000 |
| commit | c3b4f7fd0e4c010b05e91f952fb2345da6c6cba5 (patch) | |
| tree | 18c15aa258b773f09ae0984a7ceec9fc2ec19c80 | |
| parent | 56a4e4bd7da1353684d34e5a9817b88501e41d8c (diff) | |
| parent | 0dfc69806d3767a7f6be91d9df18f20d31866c91 (diff) | |
| download | python-keystoneclient-c3b4f7fd0e4c010b05e91f952fb2345da6c6cba5.tar.gz | |
Merge "Don't log an exception for an expected empty catalog."
| -rw-r--r-- | keystoneclient/exceptions.py | 5 | ||||
| -rw-r--r-- | keystoneclient/service_catalog.py | 3 | ||||
| -rw-r--r-- | keystoneclient/v2_0/client.py | 9 |
3 files changed, 12 insertions, 5 deletions
diff --git a/keystoneclient/exceptions.py b/keystoneclient/exceptions.py index f992ff3..802d396 100644 --- a/keystoneclient/exceptions.py +++ b/keystoneclient/exceptions.py @@ -24,6 +24,11 @@ class EndpointNotFound(Exception): pass +class EmptyCatalog(Exception): + """ The service catalog is empty. """ + pass + + class ClientException(Exception): """ The base exception class for all exceptions this library raises. diff --git a/keystoneclient/service_catalog.py b/keystoneclient/service_catalog.py index 5f20e0f..cbe5c5d 100644 --- a/keystoneclient/service_catalog.py +++ b/keystoneclient/service_catalog.py @@ -61,6 +61,9 @@ class ServiceCatalog(object): """ catalog = self.catalog.get('serviceCatalog', []) + if not catalog: + raise exceptions.EmptyCatalog('The service catalog is empty.') + for service in catalog: if service['type'] != service_type: continue diff --git a/keystoneclient/v2_0/client.py b/keystoneclient/v2_0/client.py index cc06d23..02fd59b 100644 --- a/keystoneclient/v2_0/client.py +++ b/keystoneclient/v2_0/client.py @@ -122,8 +122,6 @@ class Client(client.HTTPClient): sc = self.service_catalog.get_token() self.auth_token = sc['id'] # Save these since we have them and they'll be useful later - # NOTE(termie): these used to be in the token and then were removed - # ... why? self.auth_tenant_id = sc.get('tenant_id') self.auth_user_id = sc.get('user_id') except KeyError: @@ -136,6 +134,7 @@ class Client(client.HTTPClient): self.management_url = self.service_catalog.url_for( attr='region', filter_value=self.region_name, endpoint_type='adminURL') - except: - # Unscoped tokens don't return a service catalog - _logger.exception("unable to retrieve service catalog with token") + except exceptions.EmptyCatalog: + # Unscoped tokens don't return a service catalog; + # allow those to pass while any other errors bubble up. + pass |
