summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-07-17 03:57:45 +0000
committerGerrit Code Review <review@openstack.org>2015-07-17 03:57:45 +0000
commitff3af9f9d56ff42d565f8a93c09028d31a46f690 (patch)
treea75de49986f4153d0c9426702c873e334d20a069
parent7b32ec003babec2c6d052146baf2951e465454f5 (diff)
parent7829aca70459753d7df0e197f4bf6090542f9b7b (diff)
downloadpython-openstackclient-ff3af9f9d56ff42d565f8a93c09028d31a46f690.tar.gz
Merge "only return endpoints that have url"
-rw-r--r--openstackclient/identity/v2_0/catalog.py6
-rw-r--r--openstackclient/tests/identity/v2_0/test_catalog.py40
2 files changed, 44 insertions, 2 deletions
diff --git a/openstackclient/identity/v2_0/catalog.py b/openstackclient/identity/v2_0/catalog.py
index c10001d0..e166c855 100644
--- a/openstackclient/identity/v2_0/catalog.py
+++ b/openstackclient/identity/v2_0/catalog.py
@@ -30,8 +30,10 @@ def _format_endpoints(eps=None):
for index, ep in enumerate(eps):
region = eps[index].get('region', '<none>')
ret += region + '\n'
- for url in ['publicURL', 'internalURL', 'adminURL']:
- ret += " %s: %s\n" % (url, eps[index][url])
+ for endpoint_type in ['publicURL', 'internalURL', 'adminURL']:
+ url = eps[index].get(endpoint_type)
+ if url:
+ ret += " %s: %s\n" % (endpoint_type, url)
return ret
diff --git a/openstackclient/tests/identity/v2_0/test_catalog.py b/openstackclient/tests/identity/v2_0/test_catalog.py
index fe13d78d..7f1835d6 100644
--- a/openstackclient/tests/identity/v2_0/test_catalog.py
+++ b/openstackclient/tests/identity/v2_0/test_catalog.py
@@ -84,6 +84,46 @@ class TestCatalogList(TestCatalog):
), )
self.assertEqual(datalist, tuple(data))
+ def test_catalog_list_with_endpoint_url(self):
+ fake_service = {
+ 'id': 'qwertyuiop',
+ 'type': 'compute',
+ 'name': 'supernova',
+ 'endpoints': [
+ {
+ 'region': 'one',
+ 'publicURL': 'https://public.one.example.com',
+ },
+ {
+ 'region': 'two',
+ 'publicURL': 'https://public.two.example.com',
+ 'internalURL': 'https://internal.two.example.com',
+ },
+ ],
+ }
+ self.sc_mock.service_catalog.get_data.return_value = [
+ fake_service,
+ ]
+
+ arglist = []
+ verifylist = []
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ # DisplayCommandBase.take_action() returns two tuples
+ columns, data = self.cmd.take_action(parsed_args)
+ self.sc_mock.service_catalog.get_data.assert_called_with()
+
+ collist = ('Name', 'Type', 'Endpoints')
+ self.assertEqual(collist, columns)
+ datalist = ((
+ 'supernova',
+ 'compute',
+ 'one\n publicURL: https://public.one.example.com\n'
+ 'two\n publicURL: https://public.two.example.com\n '
+ 'internalURL: https://internal.two.example.com\n'
+ ), )
+ self.assertEqual(datalist, tuple(data))
+
class TestCatalogShow(TestCatalog):