Updated Branches:
  refs/heads/trunk 41b3ca934 -> 643af48ac

Fix a bug in EC2 driver - ensure it works correctly if user passes an int for
ex_mincount or ex_maxcount kwarg.

Reported by Frederic Michaud, part of LIBCLOUD-410.


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

Branch: refs/heads/trunk
Commit: 643af48ac3480847686b0284955fd4bed393e323
Parents: 41b3ca9
Author: Tomaz Muraus <[email protected]>
Authored: Tue Oct 15 23:12:00 2013 +0200
Committer: Tomaz Muraus <[email protected]>
Committed: Tue Oct 15 23:12:33 2013 +0200

----------------------------------------------------------------------
 libcloud/common/aws.py            |  3 ++-
 libcloud/compute/drivers/ec2.py   |  4 ++--
 libcloud/test/compute/test_ec2.py | 13 +++++++++++++
 3 files changed, 17 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/643af48a/libcloud/common/aws.py
----------------------------------------------------------------------
diff --git a/libcloud/common/aws.py b/libcloud/common/aws.py
index ba87a84..22d9732 100644
--- a/libcloud/common/aws.py
+++ b/libcloud/common/aws.py
@@ -121,8 +121,9 @@ class SignedAWSConnection(ConnectionUserAndKey):
         keys.sort()
         pairs = []
         for key in keys:
+            value = str(params[key])
             pairs.append(urlquote(key, safe='') + '=' +
-                         urlquote(params[key], safe='-_~'))
+                         urlquote(value, safe='-_~'))
 
         qs = '&'.join(pairs)
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/643af48a/libcloud/compute/drivers/ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index 2df50a3..5096ce5 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -1518,8 +1518,8 @@ class BaseEC2NodeDriver(NodeDriver):
         params = {
             'Action': 'RunInstances',
             'ImageId': image.id,
-            'MinCount': kwargs.get('ex_mincount', '1'),
-            'MaxCount': kwargs.get('ex_maxcount', '1'),
+            'MinCount': str(kwargs.get('ex_mincount', '1')),
+            'MaxCount': str(kwargs.get('ex_maxcount', '1')),
             'InstanceType': size.id
         }
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/643af48a/libcloud/test/compute/test_ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_ec2.py 
b/libcloud/test/compute/test_ec2.py
index 159eca6..9a23fb5 100644
--- a/libcloud/test/compute/test_ec2.py
+++ b/libcloud/test/compute/test_ec2.py
@@ -95,6 +95,19 @@ class EC2Tests(LibcloudTestCase, TestCaseMixin):
         self.assertEqual(node.extra['tags']['Name'], 'foo')
         self.assertEqual(len(node.extra['tags']), 1)
 
+    def test_create_node_with_ex_mincount(self):
+        image = NodeImage(id='ami-be3adfd7',
+                          name=self.image_name,
+                          driver=self.driver)
+        size = NodeSize('m1.small', 'Small Instance', None, None, None, None,
+                        driver=self.driver)
+        node = self.driver.create_node(name='foo', image=image, size=size,
+                                       ex_mincount=1, ex_maxcount=10)
+        self.assertEqual(node.id, 'i-2ba64342')
+        self.assertEqual(node.name, 'foo')
+        self.assertEqual(node.extra['tags']['Name'], 'foo')
+        self.assertEqual(len(node.extra['tags']), 1)
+
     def test_create_node_idempotent(self):
         EC2MockHttp.type = 'idempotent'
         image = NodeImage(id='ami-be3adfd7',

Reply via email to