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 2011/11/24 01:46:35 UTC
svn commit: r1205685 - in /libcloud/trunk: CHANGES
libcloud/common/openstack.py test/compute/test_openstack.py
Author: tomaz
Date: Thu Nov 24 00:46:34 2011
New Revision: 1205685
URL: http://svn.apache.org/viewvc?rev=1205685&view=rev
Log:
If OpenStack Auth 2.0 API is used, also parse out tenant id and name and save it
on the connection class.
Modified:
libcloud/trunk/CHANGES
libcloud/trunk/libcloud/common/openstack.py
libcloud/trunk/test/compute/test_openstack.py
Modified: libcloud/trunk/CHANGES
URL: http://svn.apache.org/viewvc/libcloud/trunk/CHANGES?rev=1205685&r1=1205684&r2=1205685&view=diff
==============================================================================
--- libcloud/trunk/CHANGES (original)
+++ libcloud/trunk/CHANGES Thu Nov 24 00:46:34 2011
@@ -3,6 +3,11 @@
Changes with Apache Libcloud in development:
*) Compute:
+ - If OpenStack Auth 2.0 API is used, also parse out tenant id and
+ name and save it on the connection class (conn.tenant['id'],
+ conn.tenant['name']).
+ [Tomaz Muraus]
+
- Add new "Cluster Compute Eight Extra Large" size to the Amazon EC2
driver.
[Tomaz Muraus]
Modified: libcloud/trunk/libcloud/common/openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/libcloud/common/openstack.py?rev=1205685&r1=1205684&r2=1205685&view=diff
==============================================================================
--- libcloud/trunk/libcloud/common/openstack.py (original)
+++ libcloud/trunk/libcloud/common/openstack.py Thu Nov 24 00:46:34 2011
@@ -84,6 +84,7 @@ class OpenStackAuthConnection(Connection
self.auth_version = auth_version
self.auth_url = auth_url
self.urls = {}
+ self.tenant = {}
self.driver = self.parent_conn.driver
def add_default_headers(self, headers):
@@ -183,9 +184,15 @@ class OpenStackAuthConnection(Connection
body = json.loads(resp.body)
except Exception, e:
raise MalformedResponseError('Failed to parse JSON', e)
+
try:
- self.auth_token = body['access']['token']['id']
- self.urls = body['access']['serviceCatalog']
+ access = body['access']
+ token = access['token']
+ self.auth_token = token['id']
+ self.urls = access['serviceCatalog']
+
+ self.tenant['id'] = token['tenant']['id']
+ self.tenant['name'] = token['tenant']['name']
except KeyError, e:
raise MalformedResponseError('Auth JSON response is missing required elements', e)
@@ -280,6 +287,8 @@ class OpenStackBaseConnection(Connection
for service in osa.urls:
if service.get('type') == 'compute':
self.server_url = self._get_default_region(service.get('endpoints', []))
+
+ self.tenant = osa.tenant
elif self._auth_version in ['1.1', '1.0']:
self.server_url = self._get_default_region(osa.urls.get('cloudServers', []))
self.cdn_management_url = self._get_default_region(osa.urls.get('cloudFilesCDN', []))
Modified: libcloud/trunk/test/compute/test_openstack.py
URL: http://svn.apache.org/viewvc/libcloud/trunk/test/compute/test_openstack.py?rev=1205685&r1=1205684&r2=1205685&view=diff
==============================================================================
--- libcloud/trunk/test/compute/test_openstack.py (original)
+++ libcloud/trunk/test/compute/test_openstack.py Thu Nov 24 00:46:34 2011
@@ -781,5 +781,14 @@ class OpenStack_1_1_Auth_2_0_Tests(OpenS
clear_pricing_data()
self.node = self.driver.list_nodes()[1]
+ server_url = 'http://my.fake.hostname:8774/v1.1/slug'
+ auth_token = 'aaaaaaaaaaaa-bbb-cccccccccccccc'
+ self.assertEqual(self.driver.connection.server_url, server_url)
+ self.assertEqual(self.driver.connection.auth_token, auth_token)
+ self.assertEqual(self.driver.connection.tenant, {'id': '45', 'name':
+ 'testproj-project'})
+
+
+
if __name__ == '__main__':
sys.exit(unittest.main())