diff options
| author | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-06-28 15:54:13 +0800 |
|---|---|---|
| committer | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-06-28 08:12:40 +0000 |
| commit | 4e46c04f921c81927ded78f17fd28d5a55ebf9e2 (patch) | |
| tree | db9c4ab7ecbcd7c066da5c71828e308248651015 | |
| parent | 9e47688e5eb2d3e4ee8fe0e15d49b34fe7c5512d (diff) | |
| download | python-openstackclient-4e46c04f921c81927ded78f17fd28d5a55ebf9e2.tar.gz | |
Add "--force" option to "volume qos delete" command
Add ``--force`` option to ``volume qos delete`` command in volume
v1 and v2 to allow users to delete in-use QoS specification(s).
Change-Id: I46036e5f55ced8b8a1be54c521f2a5c242b89160
Closes-Bug: #1596821
| -rw-r--r-- | doc/source/command-objects/volume-qos.rst | 5 | ||||
| -rw-r--r-- | openstackclient/tests/volume/v1/test_qos_specs.py | 20 | ||||
| -rw-r--r-- | openstackclient/tests/volume/v2/test_qos_specs.py | 18 | ||||
| -rw-r--r-- | openstackclient/volume/v1/qos_specs.py | 8 | ||||
| -rw-r--r-- | openstackclient/volume/v2/qos_specs.py | 8 | ||||
| -rw-r--r-- | releasenotes/notes/bug-1596821-a07599eb4beb6342.yaml | 6 |
6 files changed, 60 insertions, 5 deletions
diff --git a/doc/source/command-objects/volume-qos.rst b/doc/source/command-objects/volume-qos.rst index 2d9d14a4..f3c7ec21 100644 --- a/doc/source/command-objects/volume-qos.rst +++ b/doc/source/command-objects/volume-qos.rst @@ -58,8 +58,13 @@ Delete QoS specification .. code:: bash os volume qos delete + [--force] <qos-spec> [<qos-spec> ...] +.. option:: --force + + Allow to delete in-use QoS specification(s) + .. describe:: <qos-spec> QoS specification(s) to delete (name or ID) diff --git a/openstackclient/tests/volume/v1/test_qos_specs.py b/openstackclient/tests/volume/v1/test_qos_specs.py index 392017c6..4e1733fd 100644 --- a/openstackclient/tests/volume/v1/test_qos_specs.py +++ b/openstackclient/tests/volume/v1/test_qos_specs.py @@ -211,7 +211,7 @@ class TestQosDelete(TestQos): result = self.cmd.take_action(parsed_args) - self.qos_mock.delete.assert_called_with(volume_fakes.qos_id) + self.qos_mock.delete.assert_called_with(volume_fakes.qos_id, False) self.assertIsNone(result) def test_qos_delete_with_name(self): @@ -225,7 +225,23 @@ class TestQosDelete(TestQos): result = self.cmd.take_action(parsed_args) - self.qos_mock.delete.assert_called_with(volume_fakes.qos_id) + self.qos_mock.delete.assert_called_with(volume_fakes.qos_id, False) + self.assertIsNone(result) + + def test_qos_delete_with_force(self): + arglist = [ + '--force', + volume_fakes.qos_id + ] + verifylist = [ + ('force', True), + ('qos_specs', [volume_fakes.qos_id]) + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.qos_mock.delete.assert_called_with(volume_fakes.qos_id, True) self.assertIsNone(result) diff --git a/openstackclient/tests/volume/v2/test_qos_specs.py b/openstackclient/tests/volume/v2/test_qos_specs.py index 11047535..92ffca74 100644 --- a/openstackclient/tests/volume/v2/test_qos_specs.py +++ b/openstackclient/tests/volume/v2/test_qos_specs.py @@ -175,7 +175,23 @@ class TestQosDelete(TestQos): result = self.cmd.take_action(parsed_args) - self.qos_mock.delete.assert_called_with(self.qos_spec.id) + self.qos_mock.delete.assert_called_with(self.qos_spec.id, False) + self.assertIsNone(result) + + def test_qos_delete_with_force(self): + arglist = [ + '--force', + self.qos_spec.id + ] + verifylist = [ + ('force', True), + ('qos_specs', [self.qos_spec.id]) + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.qos_mock.delete.assert_called_with(self.qos_spec.id, True) self.assertIsNone(result) diff --git a/openstackclient/volume/v1/qos_specs.py b/openstackclient/volume/v1/qos_specs.py index 56a96256..c5850871 100644 --- a/openstackclient/volume/v1/qos_specs.py +++ b/openstackclient/volume/v1/qos_specs.py @@ -103,13 +103,19 @@ class DeleteQos(command.Command): nargs="+", help=_('QoS specification(s) to delete (name or ID)'), ) + parser.add_argument( + '--force', + action='store_true', + default=False, + help=_("Allow to delete in-use QoS specification(s)") + ) return parser def take_action(self, parsed_args): volume_client = self.app.client_manager.volume for qos in parsed_args.qos_specs: qos_spec = utils.find_resource(volume_client.qos_specs, qos) - volume_client.qos_specs.delete(qos_spec.id) + volume_client.qos_specs.delete(qos_spec.id, parsed_args.force) class DisassociateQos(command.Command): diff --git a/openstackclient/volume/v2/qos_specs.py b/openstackclient/volume/v2/qos_specs.py index 7ec272b3..5ed1225b 100644 --- a/openstackclient/volume/v2/qos_specs.py +++ b/openstackclient/volume/v2/qos_specs.py @@ -103,13 +103,19 @@ class DeleteQos(command.Command): nargs="+", help=_('QoS specification(s) to delete (name or ID)'), ) + parser.add_argument( + '--force', + action='store_true', + default=False, + help=_("Allow to delete in-use QoS specification(s)") + ) return parser def take_action(self, parsed_args): volume_client = self.app.client_manager.volume for qos in parsed_args.qos_specs: qos_spec = utils.find_resource(volume_client.qos_specs, qos) - volume_client.qos_specs.delete(qos_spec.id) + volume_client.qos_specs.delete(qos_spec.id, parsed_args.force) class DisassociateQos(command.Command): diff --git a/releasenotes/notes/bug-1596821-a07599eb4beb6342.yaml b/releasenotes/notes/bug-1596821-a07599eb4beb6342.yaml new file mode 100644 index 00000000..4843314b --- /dev/null +++ b/releasenotes/notes/bug-1596821-a07599eb4beb6342.yaml @@ -0,0 +1,6 @@ +--- +features: + - | + Add ``--force`` option to ``volume qos delete`` command to allow users to + delete in-use QoS specification(s). + [Bug `1596821 <https://bugs.launchpad.net/bugs/1596821>`_] |
