added iam temp creds token support to ElasticLBDriver

Closes #843

Signed-off-by: Tomaz Muraus <tomaz@tomaz.me>
diff --git a/libcloud/loadbalancer/drivers/elb.py b/libcloud/loadbalancer/drivers/elb.py
index ed88fac..68a94cb 100644
--- a/libcloud/loadbalancer/drivers/elb.py
+++ b/libcloud/loadbalancer/drivers/elb.py
@@ -53,8 +53,9 @@
     connectionCls = ELBConnection
     signature_version = '4'
 
-    def __init__(self, access_id, secret, region):
-        super(ElasticLBDriver, self).__init__(access_id, secret)
+    def __init__(self, access_id, secret, region, token=None):
+        self.token = token
+        super(ElasticLBDriver, self).__init__(access_id, secret, token=token)
         self.region = region
         self.region_name = region
         self.connection.host = HOST % (region)
@@ -354,5 +355,10 @@
 
     def _ex_connection_class_kwargs(self):
         kwargs = super(ElasticLBDriver, self)._ex_connection_class_kwargs()
-        kwargs['signature_version'] = self.signature_version
+        if hasattr(self, 'token') and self.token is not None:
+            kwargs['token'] = self.token
+            kwargs['signature_version'] = '4'
+        else:
+            kwargs['signature_version'] = self.signature_version
+
         return kwargs
diff --git a/libcloud/test/loadbalancer/test_elb.py b/libcloud/test/loadbalancer/test_elb.py
index 88f5555..fc42e77 100644
--- a/libcloud/test/loadbalancer/test_elb.py
+++ b/libcloud/test/loadbalancer/test_elb.py
@@ -36,6 +36,19 @@
 
         self.driver = ElasticLBDriver(*LB_ELB_PARAMS)
 
+    def test_instantiate_driver_with_token(self):
+        token = 'temporary_credentials_token'
+        driver = ElasticLBDriver(*LB_ELB_PARAMS, **{'token': token})
+        self.assertTrue(hasattr(driver, 'token'), 'Driver has no attribute token')
+        self.assertEquals(token, driver.token, "Driver token does not match with provided token")
+
+    def test_driver_with_token_signature_version(self):
+        token = 'temporary_credentials_token'
+        driver = ElasticLBDriver(*LB_ELB_PARAMS, **{'token': token})
+        kwargs = driver._ex_connection_class_kwargs()
+        self.assertIn('signature_version', kwargs)
+        self.assertEquals('4', kwargs['signature_version'], 'Signature version is not 4 with temporary credentials')
+
     def test_list_protocols(self):
         protocols = self.driver.list_protocols()