summaryrefslogtreecommitdiffstats
path: root/keystone/catalog
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2012-10-04 19:24:10 +0200
committerJulien Danjou <julien@danjou.info>2012-10-08 19:41:55 +0200
commitba1df90656f9bcff4d769b18042f731a6d295faa (patch)
tree24533490c41473f7156088ec6526cbcffeb1bf1a /keystone/catalog
parente7fdf934f5a082dc58a542b54e1eb24b9054af2d (diff)
downloadkeystone-ba1df90656f9bcff4d769b18042f731a6d295faa.tar.gz
keystone-ba1df90656f9bcff4d769b18042f731a6d295faa.tar.xz
keystone-ba1df90656f9bcff4d769b18042f731a6d295faa.zip
Fix catalog when services have no URL
This fixes bug #1061736 Change-Id: Ic8f7a45dfabb2e3fb40f6aa6cd4c0f29c13f2c77 Signed-off-by: Julien Danjou <julien@danjou.info>
Diffstat (limited to 'keystone/catalog')
-rw-r--r--keystone/catalog/backends/sql.py9
-rw-r--r--keystone/catalog/backends/templated.py1
-rw-r--r--keystone/catalog/core.py4
3 files changed, 6 insertions, 8 deletions
diff --git a/keystone/catalog/backends/sql.py b/keystone/catalog/backends/sql.py
index 6d4552f2..e6172db5 100644
--- a/keystone/catalog/backends/sql.py
+++ b/keystone/catalog/backends/sql.py
@@ -156,14 +156,11 @@ class Catalog(sql.Base, catalog.Driver):
catalog[region][srv_type] = {}
- internal_url = ep['internalurl'].replace('$(', '%(')
- public_url = ep['publicurl'].replace('$(', '%(')
- admin_url = ep['adminurl'].replace('$(', '%(')
srv_type = catalog[region][srv_type]
srv_type['id'] = ep['id']
srv_type['name'] = srv_name
- srv_type['publicURL'] = core.format_url(public_url, d)
- srv_type['adminURL'] = core.format_url(admin_url, d)
- srv_type['internalURL'] = core.format_url(internal_url, d)
+ srv_type['publicURL'] = core.format_url(ep.get('publicurl', ''), d)
+ srv_type['internalURL'] = core.format_url(ep.get('internalurl'), d)
+ srv_type['adminURL'] = core.format_url(ep.get('adminurl'), d)
return catalog
diff --git a/keystone/catalog/backends/templated.py b/keystone/catalog/backends/templated.py
index da1319e6..acd20ae3 100644
--- a/keystone/catalog/backends/templated.py
+++ b/keystone/catalog/backends/templated.py
@@ -120,7 +120,6 @@ class TemplatedCatalog(kvs.Catalog):
for service, service_ref in region_ref.iteritems():
o[region][service] = {}
for k, v in service_ref.iteritems():
- v = v.replace('$(', '%(')
o[region][service][k] = core.format_url(v, d)
return o
diff --git a/keystone/catalog/core.py b/keystone/catalog/core.py
index 26df75f2..430cc47e 100644
--- a/keystone/catalog/core.py
+++ b/keystone/catalog/core.py
@@ -36,7 +36,9 @@ LOG = logging.getLogger(__name__)
def format_url(url, data):
"""Helper Method for all Backend Catalog's to Deal with URLS"""
try:
- result = url % data
+ result = url.replace('$(', '%(') % data
+ except AttributeError:
+ return None
except KeyError as e:
LOG.error("Malformed endpoint %s - unknown key %s" %
(url, str(e)))