summaryrefslogtreecommitdiffstats
path: root/nova/api
diff options
context:
space:
mode:
authorMORITA Kazutaka <morita.kazutaka@gmail.com>2011-04-19 21:01:25 +0900
committerMORITA Kazutaka <morita.kazutaka@gmail.com>2011-04-19 21:01:25 +0900
commit1018a60e3194e7e283cd89af28efd689623058a8 (patch)
treefbabf729d2d0c9a6f203c46f4319c402b4695bef /nova/api
parentaad857a18153792d96f300732c3bb5bb16aa02c3 (diff)
Add support for creating a new volume from a existing snapshot with EC2 API.
Diffstat (limited to 'nova/api')
-rw-r--r--nova/api/ec2/cloud.py12
1 files changed, 10 insertions, 2 deletions
diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py
index 6daf299b9..5d4d2ad27 100644
--- a/nova/api/ec2/cloud.py
+++ b/nova/api/ec2/cloud.py
@@ -639,11 +639,19 @@ class CloudController(object):
v['display_description'] = volume['display_description']
return v
- def create_volume(self, context, size, **kwargs):
- LOG.audit(_("Create volume of %s GB"), size, context=context)
+ def create_volume(self, context, **kwargs):
+ size = kwargs.get('size');
+ if kwargs.get('snapshot_id') != None:
+ snapshot_id = ec2utils.ec2_id_to_id(kwargs['snapshot_id'])
+ LOG.audit(_("Create volume from snapshot %s"), snapshot_id, context=context)
+ else:
+ snapshot_id = None
+ LOG.audit(_("Create volume of %s GB"), size, context=context)
+
volume = self.volume_api.create(
context,
size=size,
+ snapshot_id=snapshot_id,
name=kwargs.get('display_name'),
description=kwargs.get('display_description'))
# TODO(vish): Instance should be None at db layer instead of