diff options
| author | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-09-25 11:49:47 +0800 |
|---|---|---|
| committer | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-12-12 23:06:00 +0800 |
| commit | 7357b24d3a63be612aa32c901e15424ff92beca0 (patch) | |
| tree | 6ab34258ca78117e8a66e5cd474f3ef9824a73bf /openstackclient/volume/v2 | |
| parent | 29587eaa6661493b7df9357ad818bf058e820730 (diff) | |
| download | python-openstackclient-7357b24d3a63be612aa32c901e15424ff92beca0.tar.gz | |
Add "--remote-source" option to "volume snapshot create" command
Add "--remote-source" option to "volume snapshot create" command
to support creating snapshot from an existing remote snapshot in
volume v2 (v2 only), also add the doc, unit tests and release note.
Change-Id: I9e5fad4f0db5b44d528eb6b930edbc816e392c3a
Implements: bp cinder-command-support
Closes-Bug: #1618676
Co-Authored-By: Sheel Rana <ranasheel2000@gmail.com>
Diffstat (limited to 'openstackclient/volume/v2')
| -rw-r--r-- | openstackclient/volume/v2/volume_snapshot.py | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/openstackclient/volume/v2/volume_snapshot.py b/openstackclient/volume/v2/volume_snapshot.py index d95a49a4..34b8fb82 100644 --- a/openstackclient/volume/v2/volume_snapshot.py +++ b/openstackclient/volume/v2/volume_snapshot.py @@ -65,6 +65,15 @@ class CreateVolumeSnapshot(command.ShowOne): help=_("Set a property to this snapshot " "(repeat option to set multiple properties)"), ) + parser.add_argument( + "--remote-source", + metavar="<key=value>", + action=parseractions.KeyValueAction, + help=_("The attribute(s) of the exsiting remote volume snapshot " + "(admin required) (repeat option to specify multiple " + "attributes) e.g.: '--remote-source source-name=test_name " + "--remote-source source-id=test_id'"), + ) return parser def take_action(self, parsed_args): @@ -74,13 +83,29 @@ class CreateVolumeSnapshot(command.ShowOne): volume = parsed_args.snapshot_name volume_id = utils.find_resource( volume_client.volumes, volume).id - snapshot = volume_client.volume_snapshots.create( - volume_id, - force=parsed_args.force, - name=parsed_args.snapshot_name, - description=parsed_args.description, - metadata=parsed_args.property, - ) + if parsed_args.remote_source: + # Create a new snapshot from an existing remote snapshot source + if parsed_args.force: + msg = (_("'--force' option will not work when you create " + "new volume snapshot from an existing remote " + "volume snapshot")) + LOG.warning(msg) + snapshot = volume_client.volume_snapshots.manage( + volume_id=volume_id, + ref=parsed_args.remote_source, + name=parsed_args.snapshot_name, + description=parsed_args.description, + metadata=parsed_args.property, + ) + else: + # create a new snapshot from scratch + snapshot = volume_client.volume_snapshots.create( + volume_id, + force=parsed_args.force, + name=parsed_args.snapshot_name, + description=parsed_args.description, + metadata=parsed_args.property, + ) snapshot._info.update( {'properties': utils.format_dict(snapshot._info.pop('metadata'))} ) |
