You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2013/10/12 11:46:53 UTC
[2/9] git commit: Update Rackspace compute drivers to correctly
handle "region" argument.
Update Rackspace compute drivers to correctly handle "region" argument.
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/7cb930ea
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/7cb930ea
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/7cb930ea
Branch: refs/heads/trunk
Commit: 7cb930eaa094e20f0d800172a8ef53dbca8b4a54
Parents: 1db5cd7
Author: Tomaz Muraus <to...@apache.org>
Authored: Sat Oct 12 10:57:22 2013 +0200
Committer: Tomaz Muraus <to...@apache.org>
Committed: Sat Oct 12 10:57:22 2013 +0200
----------------------------------------------------------------------
libcloud/compute/drivers/rackspace.py | 49 ++++++++++++++++++++++--------
1 file changed, 36 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/7cb930ea/libcloud/compute/drivers/rackspace.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/rackspace.py b/libcloud/compute/drivers/rackspace.py
index 2a93cbf..ee6dfa8 100644
--- a/libcloud/compute/drivers/rackspace.py
+++ b/libcloud/compute/drivers/rackspace.py
@@ -84,11 +84,6 @@ class RackspaceFirstGenNodeDriver(OpenStack_1_0_NodeDriver):
if region not in ['us', 'uk']:
raise ValueError('Invalid region: %s' % (region))
- if region == 'us':
- self.connectionCls.auth_url = AUTH_URL_US
- elif region == 'uk':
- self.connectionCls.auth_url = AUTH_URL_UK
-
self.region = region
super(RackspaceFirstGenNodeDriver, self).__init__(key=key,
@@ -113,12 +108,27 @@ class RackspaceFirstGenNodeDriver(OpenStack_1_0_NodeDriver):
return locations
+ def _ex_connection_class_kwargs(self):
+ kwargs = self.openstack_connection_kwargs()
+
+ if self.region == 'us':
+ auth_url = AUTH_URL_US
+ elif self.region == 'uk':
+ auth_url = AUTH_URL_UK
+
+ # 'ex_force_auth_url' has precedence over 'region' argument
+ ex_force_auth_url = kwargs.get('ex_force_auth_url', auth_url)
+ kwargs['ex_force_auth_url'] = ex_force_auth_url
+ return kwargs
+
class RackspaceConnection(OpenStack_1_1_Connection):
"""
Connection class for the Rackspace next-gen OpenStack base driver.
"""
- get_endpoint_args = {}
+ def __init__(self, *args, **kwargs):
+ self.get_endpoint_args = kwargs.pop('get_endpoint_args', None)
+ super(RackspaceConnection, self).__init__(*args, **kwargs)
def get_endpoint(self):
if not self.get_endpoint_args:
@@ -145,7 +155,6 @@ class RackspaceNodeDriver(OpenStack_1_1_NodeDriver):
website = 'http://www.rackspace.com'
connectionCls = RackspaceConnection
type = Provider.RACKSPACE
- api_name = None
_networks_url_prefix = '/os-networksv2'
@@ -158,22 +167,36 @@ class RackspaceNodeDriver(OpenStack_1_1_NodeDriver):
:type region: ``str``
"""
valid_regions = ENDPOINT_ARGS_MAP.keys()
+
if region not in valid_regions:
raise ValueError('Invalid region: %s' % (region))
if region == 'lon':
- self.connectionCls.auth_url = AUTH_URL_UK
self.api_name = 'rackspacenovalon'
else:
- self.connectionCls.auth_url = AUTH_URL_US
self.api_name = 'rackspacenovaus'
- self.connectionCls._auth_version = '2.0'
- self.connectionCls.get_endpoint_args = \
- ENDPOINT_ARGS_MAP[region]
-
self.region = region
super(RackspaceNodeDriver, self).__init__(key=key, secret=secret,
secure=secure, host=host,
port=port, **kwargs)
+
+ def _ex_connection_class_kwargs(self):
+ kwargs = self.openstack_connection_kwargs()
+
+ if self.region == 'lon':
+ auth_url = AUTH_URL_UK
+ else:
+ auth_url = AUTH_URL_US
+
+ # 'ex_force_auth_url' has precedence over 'region' argument
+ ex_force_auth_url = kwargs.get('ex_force_auth_url', auth_url)
+
+ # ex_force_auth_version has precedence is not set
+ ex_force_auth_version = kwargs.get('ex_force_auth_version', '2.0')
+
+ kwargs['ex_force_auth_url'] = ex_force_auth_url
+ kwargs['ex_force_auth_version'] = ex_force_auth_version
+ kwargs['get_endpoint_args'] = ENDPOINT_ARGS_MAP[self.region]
+ return kwargs