Fix collectd plugins when 'internalURL' isn't set
It is possible to register a service in the Keystone catalog without internalURL. This change fixes the collectd plugins to support that configuration. Change-Id: Id5ef3c4fcd473b92855cb656a80435d670062cfb Closes-Bug: #1676755
This commit is contained in:
parent
9040d3e359
commit
b5a12ffbfa
|
@ -104,11 +104,16 @@ class OSClient(object):
|
||||||
self.service_catalog = []
|
self.service_catalog = []
|
||||||
for item in data['access']['serviceCatalog']:
|
for item in data['access']['serviceCatalog']:
|
||||||
endpoint = item['endpoints'][0]
|
endpoint = item['endpoints'][0]
|
||||||
|
if 'internalURL' not in endpoint and 'publicURL' not in endpoint:
|
||||||
|
self.logger.warning(
|
||||||
|
"Service '{}' skipped because no URL can be found".format(
|
||||||
|
item['name']))
|
||||||
|
continue
|
||||||
self.service_catalog.append({
|
self.service_catalog.append({
|
||||||
'name': item['name'],
|
'name': item['name'],
|
||||||
'region': endpoint['region'],
|
'region': endpoint['region'],
|
||||||
'service_type': item['type'],
|
'service_type': item['type'],
|
||||||
'url': endpoint['internalURL'],
|
'url': endpoint.get('internalURL', endpoint.get('publicURL')),
|
||||||
'admin_url': endpoint['adminURL'],
|
'admin_url': endpoint['adminURL'],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue