From 9f205388161345011a5a93fd54e11e6396f306af Mon Sep 17 00:00:00 2001 From: joe miller Date: Fri, 18 Jan 2013 13:33:44 -0800 Subject: [PATCH] add support to EC2NodeDriver's create_node() for blockDeviceMapping's --- libcloud/compute/drivers/ec2.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git libcloud/compute/drivers/ec2.py libcloud/compute/drivers/ec2.py index 49e7b26..63f1e64 100644 --- libcloud/compute/drivers/ec2.py +++ libcloud/compute/drivers/ec2.py @@ -1243,6 +1243,11 @@ class BaseEC2NodeDriver(NodeDriver): @keyword ex_clienttoken: Unique identifier to ensure idempotency @type ex_clienttoken: C{str} + + @keyword ex_blockdevicemappings: C{list} of C{dict} block device + mappings. Example: + [{'DeviceName': '/dev/sdb', 'VirtualName': 'ephemeral0'}] + @type ex_blockdevicemappings: C{list} of C{dict} """ image = kwargs["image"] size = kwargs["size"] @@ -1280,6 +1285,14 @@ class BaseEC2NodeDriver(NodeDriver): if 'ex_clienttoken' in kwargs: params['ClientToken'] = kwargs['ex_clienttoken'] + if 'ex_blockdevicemappings' in kwargs: + for idx, mapping in enumerate(kwargs['ex_blockdevicemappings'], + start=1): + params['BlockDeviceMapping.%d.DeviceName' % idx] = \ + mapping['DeviceName'] + params['BlockDeviceMapping.%d.VirtualName' % idx] = \ + mapping['VirtualName'] + object = self.connection.request(self.path, params=params).object nodes = self._to_nodes(object, 'instancesSet/item') -- 1.7.10.4