summaryrefslogtreecommitdiff
path: root/cinderclient/v2/shell.py
diff options
context:
space:
mode:
Diffstat (limited to 'cinderclient/v2/shell.py')
-rw-r--r--cinderclient/v2/shell.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/cinderclient/v2/shell.py b/cinderclient/v2/shell.py
index 1e0ddb3..95db39d 100644
--- a/cinderclient/v2/shell.py
+++ b/cinderclient/v2/shell.py
@@ -64,3 +64,46 @@ def _treeizeAvailabilityZone(zone):
return result
+# TODO(e0ne): remove copy-paste of this function in a next cinderclient release
+def _print_volume_image(image):
+ utils.print_dict(image[1]['os-volume_upload_image'])
+
+
+@utils.arg('volume',
+ metavar='<volume>',
+ help='Name or ID of volume to snapshot.')
+@utils.arg('--force',
+ metavar='<True|False>',
+ const=True,
+ nargs='?',
+ default=False,
+ help='Enables or disables upload of '
+ 'a volume that is attached to an instance. '
+ 'Default=False.')
+@utils.arg('--container-format',
+ metavar='<container-format>',
+ default='bare',
+ help='Container format type. '
+ 'Default is bare.')
+@utils.arg('--container_format',
+ help=argparse.SUPPRESS)
+@utils.arg('--disk-format',
+ metavar='<disk-format>',
+ default='raw',
+ help='Disk format type. '
+ 'Default is raw.')
+@utils.arg('--disk_format',
+ help=argparse.SUPPRESS)
+@utils.arg('image_name',
+ metavar='<image-name>',
+ help='The new image name.')
+@utils.arg('--image_name',
+ help=argparse.SUPPRESS)
+@utils.service_type('volumev2')
+def do_upload_to_image(cs, args):
+ """Uploads volume to Image Service as an image."""
+ volume = utils.find_volume(cs, args.volume)
+ _print_volume_image(volume.upload_to_image(args.force,
+ args.image_name,
+ args.container_format,
+ args.disk_format))