summaryrefslogtreecommitdiff
path: root/openstackclient
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-01-15 21:34:25 +0000
committerGerrit Code Review <review@openstack.org>2021-01-15 21:34:25 +0000
commit66e33b6edbd9ce5ae377230832fefe927f543f06 (patch)
treec98ee506ddf4d2fed642e0b7255301e1c37c3f22 /openstackclient
parentfb564d20a521b5f3ac5388d321a68072cb22edef (diff)
parent8a164bb09c0801c3ffd2431d41c3e232388ab407 (diff)
downloadpython-openstackclient-66e33b6edbd9ce5ae377230832fefe927f543f06.tar.gz
Merge "compute: Add '--force' option to 'server delete'"
Diffstat (limited to 'openstackclient')
-rw-r--r--openstackclient/compute/v2/server.py12
-rw-r--r--openstackclient/tests/unit/compute/v2/test_server.py21
2 files changed, 32 insertions, 1 deletions
diff --git a/openstackclient/compute/v2/server.py b/openstackclient/compute/v2/server.py
index 1b601efe..bebef897 100644
--- a/openstackclient/compute/v2/server.py
+++ b/openstackclient/compute/v2/server.py
@@ -1318,6 +1318,11 @@ class DeleteServer(command.Command):
help=_('Server(s) to delete (name or ID)'),
)
parser.add_argument(
+ '--force',
+ action='store_true',
+ help=_('Force delete server(s)'),
+ )
+ parser.add_argument(
'--wait',
action='store_true',
help=_('Wait for delete to complete'),
@@ -1335,7 +1340,12 @@ class DeleteServer(command.Command):
for server in parsed_args.server:
server_obj = utils.find_resource(
compute_client.servers, server)
- compute_client.servers.delete(server_obj.id)
+
+ if parsed_args.force:
+ compute_client.servers.force_delete(server_obj.id)
+ else:
+ compute_client.servers.delete(server_obj.id)
+
if parsed_args.wait:
if not utils.wait_for_delete(compute_client.servers,
server_obj.id,
diff --git a/openstackclient/tests/unit/compute/v2/test_server.py b/openstackclient/tests/unit/compute/v2/test_server.py
index 2c0cadfc..6cec6ad5 100644
--- a/openstackclient/tests/unit/compute/v2/test_server.py
+++ b/openstackclient/tests/unit/compute/v2/test_server.py
@@ -2850,6 +2850,7 @@ class TestServerDelete(TestServer):
super(TestServerDelete, self).setUp()
self.servers_mock.delete.return_value = None
+ self.servers_mock.force_delete.return_value = None
# Get the command object to test
self.cmd = server.DeleteServer(self.app, None)
@@ -2868,6 +2869,26 @@ class TestServerDelete(TestServer):
result = self.cmd.take_action(parsed_args)
self.servers_mock.delete.assert_called_with(servers[0].id)
+ self.servers_mock.force_delete.assert_not_called()
+ self.assertIsNone(result)
+
+ def test_server_delete_with_force(self):
+ servers = self.setup_servers_mock(count=1)
+
+ arglist = [
+ servers[0].id,
+ '--force',
+ ]
+ verifylist = [
+ ('server', [servers[0].id]),
+ ('force', True),
+ ]
+ parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+ result = self.cmd.take_action(parsed_args)
+
+ self.servers_mock.force_delete.assert_called_with(servers[0].id)
+ self.servers_mock.delete.assert_not_called()
self.assertIsNone(result)
def test_server_delete_multi_servers(self):