Repository: libcloud
Updated Branches:
  refs/heads/trunk 410832fc3 -> 290fb2aa2


LIBCLOUD-606 Can not connect to AWS with IAM role temporary credentials

Closes #820

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/1ac00c7b
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/1ac00c7b
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/1ac00c7b

Branch: refs/heads/trunk
Commit: 1ac00c7b529e698915552a3339e5def95d59de9c
Parents: 410832f
Author: Alejandro González <alejandro.gonza...@intelygenz.com>
Authored: Tue Jun 21 16:10:56 2016 +0200
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Sat Jul 2 11:42:26 2016 +0200

----------------------------------------------------------------------
 libcloud/compute/drivers/ec2.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/1ac00c7b/libcloud/compute/drivers/ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index 3e31bc6..5cfe193 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -5435,7 +5435,12 @@ class BaseEC2NodeDriver(NodeDriver):
 
     def _ex_connection_class_kwargs(self):
         kwargs = super(BaseEC2NodeDriver, self)._ex_connection_class_kwargs()
-        kwargs['signature_version'] = self.signature_version
+        if self.token is None:
+            kwargs['signature_version'] = self.signature_version
+        else:
+            kwargs['token'] = self.token
+            # Force signature_version 4 for tokens or auth breaks
+            kwargs['signature_version'] = '4'
         return kwargs
 
     def _to_nodes(self, object, xpath):
@@ -6372,7 +6377,7 @@ class EC2NodeDriver(BaseEC2NodeDriver):
     }
 
     def __init__(self, key, secret=None, secure=True, host=None, port=None,
-                 region='us-east-1', **kwargs):
+                 region='us-east-1', token=None, **kwargs):
         if hasattr(self, '_region'):
             region = self._region
 
@@ -6382,6 +6387,7 @@ class EC2NodeDriver(BaseEC2NodeDriver):
 
         details = REGION_DETAILS[region]
         self.region_name = region
+        self.token = token
         self.api_name = details['api_name']
         self.country = details['country']
         self.signature_version = details.get('signature_version',

Reply via email to