From 86fe5617aaaf3344dc399a946d29ad7ec3414511 Mon Sep 17 00:00:00 2001
From: wanghao <wanghao749@huawei.com>
Date: Wed, 25 May 2016 15:11:37 +0800
Subject: [PATCH] Fixing parsing problem of cascade in client

We have implemented cascade deleting volume in CLI now,
but there's still something that should be improved:

1. A parsing problem of cascade is existing that always
evaluate parameter to True.

So now change the cascade parameter to a flag that don't
accept value anymore.

If user want to delete volume with snapshot, just need to
use 'cinder delete --cascade [volume_id]'.

Change-Id: I92e9400d5d7fbb741607bdbde7ac0c0667fca85d
Closes-Bug: #1585441
Implements: blueprint support-deleting-vols-with-snps-in-cli
---
 cinderclient/tests/unit/v2/test_shell.py | 10 ++++++++++
 cinderclient/v3/shell.py                 |  4 +---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/cinderclient/tests/unit/v2/test_shell.py b/cinderclient/tests/unit/v2/test_shell.py
index 88c447f46..2c2d57c21 100644
--- a/cinderclient/tests/unit/v2/test_shell.py
+++ b/cinderclient/tests/unit/v2/test_shell.py
@@ -399,6 +399,16 @@ class ShellTest(utils.TestCase):
         self.assert_called_anytime('DELETE', '/volumes/1234')
         self.assert_called('DELETE', '/volumes/5678')
 
+    def test_delete_with_cascade_true(self):
+        self.run_command('delete 1234 --cascade')
+        self.assert_called('DELETE', '/volumes/1234?cascade=True')
+        self.run_command('delete --cascade 1234')
+        self.assert_called('DELETE', '/volumes/1234?cascade=True')
+
+    def test_delete_with_cascade_with_invalid_value(self):
+        self.assertRaises(SystemExit, self.run_command,
+                          'delete 1234 --cascade 1234')
+
     def test_backup(self):
         self.run_command('backup-create 1234')
         self.assert_called('POST', '/backups')
diff --git a/cinderclient/v3/shell.py b/cinderclient/v3/shell.py
index b0fa4483a..d1b5db88a 100644
--- a/cinderclient/v3/shell.py
+++ b/cinderclient/v3/shell.py
@@ -447,10 +447,8 @@ def do_create(cs, args):
 
 
 @utils.arg('--cascade',
-           metavar='<cascade>',
+           action='store_true',
            default=False,
-           const=True,
-           nargs='?',
            help='Remove any snapshots along with volume. Default=False.')
 @utils.arg('volume',
            metavar='<volume>', nargs='+',