Support to force delete instance

Change-Id: I20802f199ef943244f27a842743434e1c84c79e5
This commit is contained in:
Lingxian Kong 2020-01-03 15:19:07 +13:00
parent 4463f36eb0
commit a0324f4109
3 changed files with 28 additions and 1 deletions

View File

@ -0,0 +1,8 @@
---
features:
- |
Support to force delete instance. By default, only allowed by admin user.
.. code-block:: console
openstack database instance delete --force <instance>

View File

@ -177,13 +177,21 @@ class DeleteDatabaseInstance(base.TroveDeleter):
metavar='instance',
help='Id or name of instance(s).'
)
parser.add_argument(
'--force',
action="store_true",
default=False,
help=_('Force delete the instance, will reset the instance status '
'before deleting.'),
)
return parser
def take_action(self, parsed_args):
db_instances = self.app.client_manager.database.instances
# Used for batch deletion
self.delete_func = db_instances.delete
self.delete_func = (db_instances.force_delete
if parsed_args.force else db_instances.delete)
self.resource = 'database instance'
ids = []

View File

@ -158,6 +158,17 @@ class TestDatabaseInstanceDelete(TestInstances):
calls = [mock.call(instance_1), mock.call(instance_2)]
self.instance_client.delete.assert_has_calls(calls)
@mock.patch("troveclient.utils.get_resource_id_by_name")
def test_instance_force_delete(self, mock_getid):
mock_getid.return_value = "fake_uuid"
args = ['instance1', '--force']
parsed_args = self.check_parser(self.cmd, args, [('force', True)])
self.cmd.take_action(parsed_args)
mock_getid.assert_called_once_with(self.instance_client, "instance1")
self.instance_client.force_delete.assert_called_with('fake_uuid')
class TestDatabaseInstanceCreate(TestInstances):