Support to force delete instance
Change-Id: I20802f199ef943244f27a842743434e1c84c79e5
This commit is contained in:
@@ -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>
|
||||||
@@ -177,13 +177,21 @@ class DeleteDatabaseInstance(base.TroveDeleter):
|
|||||||
metavar='instance',
|
metavar='instance',
|
||||||
help='Id or name of instance(s).'
|
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
|
return parser
|
||||||
|
|
||||||
def take_action(self, parsed_args):
|
def take_action(self, parsed_args):
|
||||||
db_instances = self.app.client_manager.database.instances
|
db_instances = self.app.client_manager.database.instances
|
||||||
|
|
||||||
# Used for batch deletion
|
# 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'
|
self.resource = 'database instance'
|
||||||
|
|
||||||
ids = []
|
ids = []
|
||||||
|
|||||||
@@ -158,6 +158,17 @@ class TestDatabaseInstanceDelete(TestInstances):
|
|||||||
calls = [mock.call(instance_1), mock.call(instance_2)]
|
calls = [mock.call(instance_1), mock.call(instance_2)]
|
||||||
self.instance_client.delete.assert_has_calls(calls)
|
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):
|
class TestDatabaseInstanceCreate(TestInstances):
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user