]> review.fuel-infra Code Review - openstack-build/heat-build.git/commitdiff
Set tenant headers from ec2 authentication.
authorSteve Baker <sbaker@redhat.com>
Thu, 18 Jul 2013 21:48:40 +0000 (09:48 +1200)
committerSteve Baker <sbaker@redhat.com>
Fri, 19 Jul 2013 02:14:32 +0000 (14:14 +1200)
Without this, ec2token middleware on its own doesn't set enough
headers to perform heat requests.

Change-Id: I7a0867196741c0df222d491fb1bfbe203158032c

heat/api/aws/ec2token.py
heat/tests/test_api_ec2token.py

index 4ad185076270a2a233493c567725df44ed636b86..cf1258038342669c3f0085b07317523fad3e7b7b 100644 (file)
@@ -159,6 +159,8 @@ class EC2Token(wsgi.Middleware):
         result = json.loads(response)
         try:
             token_id = result['access']['token']['id']
+            tenant = result['access']['token']['tenant']['name']
+            tenant_id = result['access']['token']['tenant']['id']
             logger.info("AWS authentication successful.")
         except (AttributeError, KeyError):
             logger.info("AWS authentication failure.")
@@ -181,6 +183,8 @@ class EC2Token(wsgi.Middleware):
                                         'signature': signature}}
         req.headers['X-Auth-EC2-Creds'] = json.dumps(ec2_creds)
         req.headers['X-Auth-Token'] = token_id
+        req.headers['X-Tenant-Name'] = tenant
+        req.headers['X-Tenant-Id'] = tenant_id
         req.headers['X-Auth-URL'] = self._conf_get('auth_uri')
         req.headers['X-Auth-EC2_URL'] = keystone_ec2_uri
         return self.application
index c73b71490c23f35a03b0983767099e9d4fbeb7d6..955babdb48141a01127f24749ac6ac02e6186548 100644 (file)
@@ -221,7 +221,9 @@ class Ec2TokenTest(HeatTestCase):
                    'HTTP_AUTHORIZATION': auth_str}
         dummy_req = self._dummy_GET_request(environ=req_env)
 
-        ok_resp = json.dumps({'access': {'token': {'id': 123}}})
+        ok_resp = json.dumps({'access': {'token': {
+            'id': 123,
+            'tenant': {'name': 'tenant', 'id': 'abcd1234'}}}})
         self._stub_http_connection(headers={'Authorization': auth_str},
                                    response=ok_resp)
         self.m.ReplayAll()
@@ -310,7 +312,9 @@ class Ec2TokenTest(HeatTestCase):
                    'PATH_INFO': '/v1'}
         dummy_req = self._dummy_GET_request(params, req_env)
 
-        ok_resp = json.dumps({'access': {'token': {'id': 123}}})
+        ok_resp = json.dumps({'access': {'token': {
+            'id': 123,
+            'tenant': {'name': 'tenant', 'id': 'abcd1234'}}}})
         self._stub_http_connection(response=ok_resp,
                                    params={'AWSAccessKeyId': 'foo'})
         self.m.ReplayAll()