summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2014-10-11 14:25:50 -0700
committerMonty Taylor <mordred@inaugust.com>2014-10-11 14:30:04 -0700
commit3af547a1a6e597ea1b38fb273195ac1ef00d29dd (patch)
tree85627b1d2065bc2e47ce5f1646ed9e07adc6d21f /openstackclient
parentf0c57e17c9a4b5bbe2f072a4eacefce3bcf30d45 (diff)
downloadpython-openstackclient-3af547a1a6e597ea1b38fb273195ac1ef00d29dd.tar.gz
Fix operation on clouds with availability-zones
In a cloud with AZs, you can get multiple entries back from the service catalog - one for each AZ and then one that is AZ agnostic that's tied to the region. If the region_name is plumbed all the way through, this works as intended. Change-Id: I3b365ea306e8111fc80830672ae8080a5d1dc8e0
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/common/clientmanager.py4
-rw-r--r--openstackclient/compute/client.py2
-rw-r--r--openstackclient/network/client.py3
-rw-r--r--openstackclient/volume/client.py2
4 files changed, 6 insertions, 5 deletions
diff --git a/openstackclient/common/clientmanager.py b/openstackclient/common/clientmanager.py
index 0542b473..387721a4 100644
--- a/openstackclient/common/clientmanager.py
+++ b/openstackclient/common/clientmanager.py
@@ -110,13 +110,13 @@ class ClientManager(object):
return
- def get_endpoint_for_service_type(self, service_type):
+ def get_endpoint_for_service_type(self, service_type, region_name=None):
"""Return the endpoint URL for the service type."""
# See if we are using password flow auth, i.e. we have a
# service catalog to select endpoints from
if self._service_catalog:
endpoint = self._service_catalog.url_for(
- service_type=service_type)
+ service_type=service_type, region_name=region_name)
else:
# Hope we were given the correct URL.
endpoint = self._auth_url or self._url
diff --git a/openstackclient/compute/client.py b/openstackclient/compute/client.py
index dc50507e..d473295b 100644
--- a/openstackclient/compute/client.py
+++ b/openstackclient/compute/client.py
@@ -68,7 +68,7 @@ def make_client(instance):
else:
# password flow
client.client.management_url = instance.get_endpoint_for_service_type(
- API_NAME)
+ API_NAME, region_name=instance._region_name)
client.client.service_catalog = instance._service_catalog
client.client.auth_token = instance._token
return client
diff --git a/openstackclient/network/client.py b/openstackclient/network/client.py
index d3102da1..870fdad1 100644
--- a/openstackclient/network/client.py
+++ b/openstackclient/network/client.py
@@ -35,7 +35,8 @@ def make_client(instance):
LOG.debug('Instantiating network client: %s', network_client)
if not instance._url:
- instance._url = instance.get_endpoint_for_service_type("network")
+ instance._url = instance.get_endpoint_for_service_type(
+ "network", region_name=instance._region_name)
return network_client(
username=instance._username,
tenant_name=instance._project_name,
diff --git a/openstackclient/volume/client.py b/openstackclient/volume/client.py
index f71fbe8b..58cb267e 100644
--- a/openstackclient/volume/client.py
+++ b/openstackclient/volume/client.py
@@ -68,7 +68,7 @@ def make_client(instance):
else:
# password flow
client.client.management_url = instance.get_endpoint_for_service_type(
- API_NAME)
+ API_NAME, region_name=instance._region_name)
client.client.service_catalog = instance._service_catalog
client.client.auth_token = instance._token