summaryrefslogtreecommitdiff
path: root/openstackclient/volume
diff options
context:
space:
mode:
authorMonty Taylor <mordred@inaugust.com>2018-07-23 10:19:50 -0500
committerDean Troyer <dtroyer@gmail.com>2018-07-23 13:38:35 -0500
commit3dd9613b21d78005e1c8f5b3b20b48b686459717 (patch)
tree258de5a4163527c6b56c7772bcb93d5f30e23e13 /openstackclient/volume
parentee35409069b0f77984e912cfc0c90cb9cce52512 (diff)
downloadpython-openstackclient-3dd9613b21d78005e1c8f5b3b20b48b686459717.tar.gz
Pass volume snapshot size to volume create
When creating a volume from a snapshot, the size parameter is required and type is checked. Since we have to pass something and it needs to be a valid data type (None is not acceptable) grab the size from the snapshot object and pass it. Change-Id: Ie23e3d23828919234e40336b5c65b22e140d337c
Diffstat (limited to 'openstackclient/volume')
-rw-r--r--openstackclient/volume/v2/volume.py16
1 files changed, 13 insertions, 3 deletions
diff --git a/openstackclient/volume/v2/volume.py b/openstackclient/volume/v2/volume.py
index 61f846b0..ee3d2f20 100644
--- a/openstackclient/volume/v2/volume.py
+++ b/openstackclient/volume/v2/volume.py
@@ -186,11 +186,21 @@ class CreateVolume(command.ShowOne):
image_client.images,
parsed_args.image).id
+ size = parsed_args.size
+
snapshot = None
if parsed_args.snapshot:
- snapshot = utils.find_resource(
+ snapshot_obj = utils.find_resource(
volume_client.volume_snapshots,
- parsed_args.snapshot).id
+ parsed_args.snapshot)
+ snapshot = snapshot_obj.id
+ # Cinder requires a value for size when creating a volume
+ # even if creating from a snapshot. Cinder will create the
+ # volume with at least the same size as the snapshot anyway,
+ # so since we have the object here, just override the size
+ # value if it's either not given or is smaller than the
+ # snapshot size.
+ size = max(size or 0, snapshot_obj.size)
project = None
if parsed_args.project:
@@ -205,7 +215,7 @@ class CreateVolume(command.ShowOne):
parsed_args.user).id
volume = volume_client.volumes.create(
- size=parsed_args.size,
+ size=size,
snapshot_id=snapshot,
name=parsed_args.name,
description=parsed_args.description,