From 5d100c98352d17f06813765ef2e7c99116c0101f Mon Sep 17 00:00:00 2001 From: Ivan Kusalic Date: Tue, 10 Sep 2013 13:02:55 +0200 Subject: [PATCH 2/3] Add ex_metadata parameter to create_node --- libcloud/compute/drivers/ec2.py | 5 +++++ libcloud/test/compute/test_ec2.py | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py index 870db4a..8121882 100644 --- a/libcloud/compute/drivers/ec2.py +++ b/libcloud/compute/drivers/ec2.py @@ -1564,6 +1564,9 @@ class BaseEC2NodeDriver(NodeDriver): assign to the node. :type ex_security_groups: ``list`` + :keyword ex_metadata: Key/Value metadata to associate with a node + :type ex_metadata: ``dict`` + :keyword ex_mincount: Minimum number of instances to launch :type ex_mincount: ``int`` @@ -1664,6 +1667,8 @@ class BaseEC2NodeDriver(NodeDriver): for node in nodes: tags = {'Name': kwargs['name']} + if 'ex_metadata' in kwargs: + tags.update(kwargs['ex_metadata']) try: self.ex_create_tags(resource=node, tags=tags) diff --git a/libcloud/test/compute/test_ec2.py b/libcloud/test/compute/test_ec2.py index 9bfbfca..9618828 100644 --- a/libcloud/test/compute/test_ec2.py +++ b/libcloud/test/compute/test_ec2.py @@ -106,6 +106,22 @@ class EC2Tests(LibcloudTestCase, TestCaseMixin): self.assertEqual(node.extra['tags']['Name'], 'foo') self.assertEqual(len(node.extra['tags']), 1) + def test_create_node_with_metadata(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_metadata={'Bar': 'baz', 'Num': '42'}) + self.assertEqual(node.name, 'foo') + self.assertEqual(node.extra['tags']['Name'], 'foo') + self.assertEqual(node.extra['tags']['Bar'], 'baz') + self.assertEqual(node.extra['tags']['Num'], '42') + self.assertEqual(len(node.extra['tags']), 3) + def test_create_node_idempotent(self): EC2MockHttp.type = 'idempotent' image = NodeImage(id='ami-be3adfd7', -- 1.8.2.3