Use TagSpecification parameter on EC2 create_node
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/0d1be1d7 Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/0d1be1d7 Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/0d1be1d7 Branch: refs/heads/trunk Commit: 0d1be1d7a28699d726c1256682a4e63889f2a1ba Parents: 84735c8 Author: Lucas Di Pentima <[email protected]> Authored: Tue Aug 29 19:06:18 2017 -0300 Committer: Anthony Shaw <[email protected]> Committed: Fri Sep 1 22:07:04 2017 +1000 ---------------------------------------------------------------------- libcloud/__init__.py | 2 +- libcloud/compute/drivers/ec2.py | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/libcloud/blob/0d1be1d7/libcloud/__init__.py ---------------------------------------------------------------------- diff --git a/libcloud/__init__.py b/libcloud/__init__.py index 24d4a68..773c03f 100644 --- a/libcloud/__init__.py +++ b/libcloud/__init__.py @@ -36,7 +36,7 @@ __all__ = [ '__version__', 'enable_debug' ] -__version__ = '2.2.0' +__version__ = '2.2.0.dev1' def enable_debug(fo): http://git-wip-us.apache.org/repos/asf/libcloud/blob/0d1be1d7/libcloud/compute/drivers/ec2.py ---------------------------------------------------------------------- diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py index efb6275..fd807aa 100644 --- a/libcloud/compute/drivers/ec2.py +++ b/libcloud/compute/drivers/ec2.py @@ -3765,19 +3765,23 @@ class BaseEC2NodeDriver(NodeDriver): if subnet_id: params['SubnetId'] = subnet_id + # Specify tags at instance creation time + tags = {'Name': kwargs['name']} + if 'ex_metadata' in kwargs: + tags.update(kwargs['ex_metadata']) + tagspec_root = 'TagSpecification.1.' + params[tagspec_root + 'ResourceType'] = 'instance' + tag_nr = 1 + for k, v in tags.iteritems(): + tag_root = tagspec_root + "Tag.{}.".format(tag_nr) + params[tag_root + "Key"] = k + params[tag_root + "Value"] = v + tag_nr += 1 + object = self.connection.request(self.path, params=params).object nodes = self._to_nodes(object, 'instancesSet/item') 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) - except Exception: - continue - node.name = kwargs['name'] node.extra.update({'tags': tags})
