From 4ff020006ebc96348822f50c5b484ee45e5f1b41 Mon Sep 17 00:00:00 2001 From: Steve Martinelli Date: Sun, 25 Jan 2015 00:13:26 -0500 Subject: [PATCH] Add the ability to extend volumes in `osc volume set` Create a --size option for volume set, so the user may extend a volume's size. Change-Id: Ic8d3396d788a14ea1e10bf1da73edfd7f5d85070 Closes-Bug: #1413954 --- doc/source/command-objects/volume.rst | 5 +++++ openstackclient/volume/v1/volume.py | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/doc/source/command-objects/volume.rst b/doc/source/command-objects/volume.rst index 2eec2d7b25..0b2e0db66a 100644 --- a/doc/source/command-objects/volume.rst +++ b/doc/source/command-objects/volume.rst @@ -134,6 +134,7 @@ Set volume properties os volume set [--name ] [--description ] + [--size ] [--property [...] ] @@ -145,6 +146,10 @@ Set volume properties New volume description +.. option:: --size + + Extend volume size in GB + .. option:: --property Property to add or modify for this volume (repeat option to set multiple properties) diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py index e59331fad3..9e548977e0 100644 --- a/openstackclient/volume/v1/volume.py +++ b/openstackclient/volume/v1/volume.py @@ -327,6 +327,12 @@ class SetVolume(command.Command): metavar='', help='New volume description', ) + parser.add_argument( + '--size', + metavar='', + type=int, + help='Extend volume size in GB', + ) parser.add_argument( '--property', metavar='', @@ -341,6 +347,13 @@ class SetVolume(command.Command): volume_client = self.app.client_manager.volume volume = utils.find_resource(volume_client.volumes, parsed_args.volume) + if parsed_args.size: + if parsed_args.size <= volume.size: + self.app.log.error("New size must be greater than %s GB" % + volume.size) + return + volume_client.volumes.extend(volume.id, parsed_args.size) + if parsed_args.property: volume_client.volumes.set_metadata(volume.id, parsed_args.property) @@ -352,7 +365,7 @@ class SetVolume(command.Command): if kwargs: volume_client.volumes.update(volume.id, **kwargs) - if not kwargs and not parsed_args.property: + if not kwargs and not parsed_args.property and not parsed_args.size: self.app.log.error("No changes requested\n") return