diff options
author | Zhengguang <zhengguangou@gmail.com> | 2014-07-10 23:01:10 -0400 |
---|---|---|
committer | Zhengguang <zhengguangou@gmail.com> | 2014-07-28 09:08:36 -0400 |
commit | bf8fa0b606ca3c25808f526de0c06d1374dc7411 (patch) | |
tree | c880b0f5215d7e501987ba3559a4037930c27048 | |
parent | 14a5aa045a391a900e34a5341b07b71ac973cf77 (diff) | |
download | python-cinderclient-bf8fa0b606ca3c25808f526de0c06d1374dc7411.tar.gz |
Fix the return code of the command reset-state
Currently, the command reset-state return code is zero if it
failed for any of volumes, it should be nonzero.
Change-Id: Ic6da238861fd003375003399bc6def6bf860a015
Closes-Bug: #1339643
-rw-r--r-- | cinderclient/tests/v1/test_shell.py | 16 | ||||
-rw-r--r-- | cinderclient/tests/v2/test_shell.py | 16 | ||||
-rw-r--r-- | cinderclient/v1/shell.py | 14 | ||||
-rw-r--r-- | cinderclient/v2/shell.py | 14 |
4 files changed, 42 insertions, 18 deletions
diff --git a/cinderclient/tests/v1/test_shell.py b/cinderclient/tests/v1/test_shell.py index 0b9cbe7..5756061 100644 --- a/cinderclient/tests/v1/test_shell.py +++ b/cinderclient/tests/v1/test_shell.py @@ -18,6 +18,7 @@ import fixtures from cinderclient import client +from cinderclient import exceptions from cinderclient import shell from cinderclient.v1 import shell as shell_v1 from cinderclient.tests.v1 import fakes @@ -270,6 +271,21 @@ class ShellTest(utils.TestCase): body=expected) @httpretty.activate + def test_reset_state_two_with_one_nonexistent(self): + self.register_keystone_auth_fixture() + cmd = 'reset-state 1234 123456789' + self.assertRaises(exceptions.CommandError, self.run_command, cmd) + expected = {'os-reset_status': {'status': 'available'}} + self.assert_called_anytime('POST', '/volumes/1234/action', + body=expected) + + @httpretty.activate + def test_reset_state_one_with_one_nonexistent(self): + self.register_keystone_auth_fixture() + cmd = 'reset-state 123456789' + self.assertRaises(exceptions.CommandError, self.run_command, cmd) + + @httpretty.activate def test_snapshot_reset_state(self): self.register_keystone_auth_fixture() diff --git a/cinderclient/tests/v2/test_shell.py b/cinderclient/tests/v2/test_shell.py index f1c473c..fa0c1d2 100644 --- a/cinderclient/tests/v2/test_shell.py +++ b/cinderclient/tests/v2/test_shell.py @@ -17,6 +17,7 @@ import fixtures import httpretty from cinderclient import client +from cinderclient import exceptions from cinderclient import shell from cinderclient.tests import utils from cinderclient.tests.v2 import fakes @@ -300,6 +301,21 @@ class ShellTest(utils.TestCase): body=expected) @httpretty.activate + def test_reset_state_two_with_one_nonexistent(self): + self.register_keystone_auth_fixture() + cmd = 'reset-state 1234 123456789' + self.assertRaises(exceptions.CommandError, self.run_command, cmd) + expected = {'os-reset_status': {'status': 'available'}} + self.assert_called_anytime('POST', '/volumes/1234/action', + body=expected) + + @httpretty.activate + def test_reset_state_one_with_one_nonexistent(self): + self.register_keystone_auth_fixture() + cmd = 'reset-state 123456789' + self.assertRaises(exceptions.CommandError, self.run_command, cmd) + + @httpretty.activate def test_snapshot_reset_state(self): self.register_keystone_auth_fixture() self.run_command('snapshot-reset-state 1234') diff --git a/cinderclient/v1/shell.py b/cinderclient/v1/shell.py index 47e0a57..bb58a27 100644 --- a/cinderclient/v1/shell.py +++ b/cinderclient/v1/shell.py @@ -332,22 +332,18 @@ def do_force_delete(cs, args): @utils.service_type('volume') def do_reset_state(cs, args): """Explicitly updates the volume state.""" - failure_count = 0 - - single = (len(args.volume) == 1) + failure_flag = False for volume in args.volume: try: utils.find_volume(cs, volume).reset_state(args.state) except Exception as e: - failure_count += 1 + failure_flag = True msg = "Reset state for volume %s failed: %s" % (volume, e) - if not single: - print(msg) + print(msg) - if failure_count == len(args.volume): - if not single: - msg = "Unable to reset the state for any of the specified volumes." + if failure_flag: + msg = "Unable to reset the state for the specified volume(s)." raise exceptions.CommandError(msg) diff --git a/cinderclient/v2/shell.py b/cinderclient/v2/shell.py index 10b7631..42e7feb 100644 --- a/cinderclient/v2/shell.py +++ b/cinderclient/v2/shell.py @@ -362,22 +362,18 @@ def do_force_delete(cs, args): @utils.service_type('volumev2') def do_reset_state(cs, args): """Explicitly updates the volume state.""" - failure_count = 0 - - single = (len(args.volume) == 1) + failure_flag = False for volume in args.volume: try: utils.find_volume(cs, volume).reset_state(args.state) except Exception as e: - failure_count += 1 + failure_flag = True msg = "Reset state for volume %s failed: %s" % (volume, e) - if not single: - print(msg) + print(msg) - if failure_count == len(args.volume): - if not single: - msg = "Unable to reset the state for any of specified volumes." + if failure_flag: + msg = "Unable to reset the state for the specified volume(s)." raise exceptions.CommandError(msg) |