diff options
| author | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-07-04 10:18:45 +0800 |
|---|---|---|
| committer | Huanxuan Ao <huanxuan.ao@easystack.cn> | 2016-12-08 17:08:58 +0800 |
| commit | bbfd8cb46bc7493971173f1cbc774ef4697ddfe4 (patch) | |
| tree | 64bf707774288750f81f19d48a16cf54d12e4b4e /openstackclient | |
| parent | 158dbe124a11873129d2b3fbc6a9b5a6695e7bcc (diff) | |
| download | python-openstackclient-bbfd8cb46bc7493971173f1cbc774ef4697ddfe4.tar.gz | |
Add '--force' option to 'volume snapshot delete' command
Add '--force' option to 'volume snapshot delete' command in
volume v2 (v2 only) to allow delete in state other than error
or available.
Change-Id: Ie8991e9a630d7c7e9ac6c6870aed787bbcebacf2
Closes-Bug: #1597195
Diffstat (limited to 'openstackclient')
| -rw-r--r-- | openstackclient/tests/unit/volume/v2/test_snapshot.py | 23 | ||||
| -rw-r--r-- | openstackclient/volume/v2/volume_snapshot.py | 9 |
2 files changed, 28 insertions, 4 deletions
diff --git a/openstackclient/tests/unit/volume/v2/test_snapshot.py b/openstackclient/tests/unit/volume/v2/test_snapshot.py index b67dd6eb..1d1693ad 100644 --- a/openstackclient/tests/unit/volume/v2/test_snapshot.py +++ b/openstackclient/tests/unit/volume/v2/test_snapshot.py @@ -179,7 +179,24 @@ class TestSnapshotDelete(TestSnapshot): result = self.cmd.take_action(parsed_args) self.snapshots_mock.delete.assert_called_with( - self.snapshots[0].id) + self.snapshots[0].id, False) + self.assertIsNone(result) + + def test_snapshot_delete_with_force(self): + arglist = [ + '--force', + self.snapshots[0].id + ] + verifylist = [ + ('force', True), + ("snapshots", [self.snapshots[0].id]) + ] + parsed_args = self.check_parser(self.cmd, arglist, verifylist) + + result = self.cmd.take_action(parsed_args) + + self.snapshots_mock.delete.assert_called_with( + self.snapshots[0].id, True) self.assertIsNone(result) def test_delete_multiple_snapshots(self): @@ -195,7 +212,7 @@ class TestSnapshotDelete(TestSnapshot): calls = [] for s in self.snapshots: - calls.append(call(s.id)) + calls.append(call(s.id, False)) self.snapshots_mock.delete.assert_has_calls(calls) self.assertIsNone(result) @@ -226,7 +243,7 @@ class TestSnapshotDelete(TestSnapshot): self.assertEqual(2, find_mock.call_count) self.snapshots_mock.delete.assert_called_once_with( - self.snapshots[0].id + self.snapshots[0].id, False ) diff --git a/openstackclient/volume/v2/volume_snapshot.py b/openstackclient/volume/v2/volume_snapshot.py index 43f30326..5fdeca3a 100644 --- a/openstackclient/volume/v2/volume_snapshot.py +++ b/openstackclient/volume/v2/volume_snapshot.py @@ -98,6 +98,12 @@ class DeleteVolumeSnapshot(command.Command): nargs="+", help=_("Snapshot(s) to delete (name or ID)") ) + parser.add_argument( + '--force', + action='store_true', + help=_("Attempt forced removal of snapshot(s), " + "regardless of state (defaults to False)") + ) return parser def take_action(self, parsed_args): @@ -108,7 +114,8 @@ class DeleteVolumeSnapshot(command.Command): try: snapshot_id = utils.find_resource( volume_client.volume_snapshots, i).id - volume_client.volume_snapshots.delete(snapshot_id) + volume_client.volume_snapshots.delete( + snapshot_id, parsed_args.force) except Exception as e: result += 1 LOG.error(_("Failed to delete snapshot with " |
