From 60ef8b08fe183b5e4686a999da8a988ec7cca5a7 Mon Sep 17 00:00:00 2001
From: lin-hua-cheng <os.lcheng@gmail.com>
Date: Fri, 6 Feb 2015 09:51:47 -0800
Subject: [PATCH] Change volume create --snapshot-id to --snapshot

Keeping the option --snapshot-id hidden for backward compatibility.

Change-Id: Iefa0aed9be255a5626a9bbb7db77911ef5ca8595
Closes-Bug: #1418742
---
 doc/source/command-objects/volume.rst |  6 +++---
 openstackclient/volume/v1/volume.py   | 15 ++++++++++++---
 2 files changed, 15 insertions(+), 6 deletions(-)

diff --git a/doc/source/command-objects/volume.rst b/doc/source/command-objects/volume.rst
index 0b2e0db66a..3baae5d853 100644
--- a/doc/source/command-objects/volume.rst
+++ b/doc/source/command-objects/volume.rst
@@ -14,7 +14,7 @@ Create new volume
 
     os volume create
         --size <size>
-        [--snapshot-id <snapshot-id>]
+        [--snapshot <snapshot>]
         [--description <description>]
         [--type <volume-type>]
         [--user <user>]
@@ -29,9 +29,9 @@ Create new volume
 
     New volume size in GB
 
-.. option:: --snapshot-id <snapshot-id>
+.. option:: --snapshot <snapshot>
 
-    Use <snapshot-id> as source of new volume
+    Use <snapshot> as source of new volume
 
 .. option:: --description <description>
 
diff --git a/openstackclient/volume/v1/volume.py b/openstackclient/volume/v1/volume.py
index 3d26a5e9e5..ad9671e35f 100644
--- a/openstackclient/volume/v1/volume.py
+++ b/openstackclient/volume/v1/volume.py
@@ -15,6 +15,7 @@
 
 """Volume v1 Volume action implementations"""
 
+import argparse
 import logging
 import six
 
@@ -45,10 +46,16 @@ class CreateVolume(show.ShowOne):
             type=int,
             help='New volume size in GB',
         )
-        parser.add_argument(
+        snapshot_group = parser.add_mutually_exclusive_group()
+        snapshot_group.add_argument(
+            '--snapshot',
+            metavar='<snapshot>',
+            help='Use <snapshot> as source of new volume',
+        )
+        snapshot_group.add_argument(
             '--snapshot-id',
             metavar='<snapshot-id>',
-            help='Use <snapshot-id> as source of new volume',
+            help=argparse.SUPPRESS,
         )
         parser.add_argument(
             '--description',
@@ -130,9 +137,11 @@ class CreateVolume(show.ShowOne):
                 parsed_args.image,
             ).id
 
+        snapshot = parsed_args.snapshot or parsed_args.snapshot_id
+
         volume = volume_client.volumes.create(
             parsed_args.size,
-            parsed_args.snapshot_id,
+            snapshot,
             source_volume,
             parsed_args.name,
             parsed_args.description,