Merge "Add auto-approve option to project cleanup"

This commit is contained in:
Zuul 2023-03-20 12:07:44 +00:00 committed by Gerrit Code Review
commit 65b667af20
3 changed files with 50 additions and 11 deletions

View File

@ -48,10 +48,16 @@ class ProjectCleanup(command.Command):
def get_parser(self, prog_name):
parser = super(ProjectCleanup, self).get_parser(prog_name)
parser.add_argument(
action_group = parser.add_mutually_exclusive_group()
action_group.add_argument(
'--dry-run',
action='store_true',
help=_("List a project's resources")
help=_("List a project's resources but do not delete them")
)
action_group.add_argument(
'--auto-approve',
action='store_true',
help=_("Delete resources without asking for confirmation")
)
project_group = parser.add_mutually_exclusive_group(required=True)
project_group.add_argument(
@ -67,12 +73,12 @@ class ProjectCleanup(command.Command):
parser.add_argument(
'--created-before',
metavar='<YYYY-MM-DDTHH24:MI:SS>',
help=_('Drop resources created before the given time')
help=_('Only delete resources created before the given time')
)
parser.add_argument(
'--updated-before',
metavar='<YYYY-MM-DDTHH24:MI:SS>',
help=_('Drop resources updated before the given time')
help=_('Only delete resources updated before the given time')
)
identity_common.add_project_domain_option_to_parser(parser)
return parser
@ -127,12 +133,13 @@ class ProjectCleanup(command.Command):
if parsed_args.dry_run:
return
confirm = ask_user_yesno(
_("These resources will be deleted. Are you sure"))
if not parsed_args.auto_approve:
if not ask_user_yesno(
_("These resources will be deleted. Are you sure")):
return
if confirm:
self.log.warning(_('Deleting resources'))
self.log.warning(_('Deleting resources'))
project_connect.project_cleanup(dry_run=False,
status_queue=status_queue,
filters=filters)
project_connect.project_cleanup(dry_run=False,
status_queue=status_queue,
filters=filters)

View File

@ -85,6 +85,32 @@ class TestProjectCleanup(TestProjectCleanupBase):
self.assertIsNone(result)
def test_project_cleanup_with_auto_approve(self):
arglist = [
'--project', self.project.id,
'--auto-approve',
]
verifylist = [
('dry_run', False),
('auth_project', False),
('project', self.project.id),
('auto_approve', True),
]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
result = None
result = self.cmd.take_action(parsed_args)
self.sdk_connect_as_project_mock.assert_called_with(
self.project)
calls = [
mock.call(dry_run=True, status_queue=mock.ANY, filters={}),
mock.call(dry_run=False, status_queue=mock.ANY, filters={})
]
self.project_cleanup_mock.assert_has_calls(calls)
self.assertIsNone(result)
def test_project_cleanup_with_project(self):
arglist = [
'--project', self.project.id,

View File

@ -0,0 +1,6 @@
---
features:
- |
An ``--auto-approve`` option has been added to the
``project cleanup`` command. This allows the interactive
confirmation of resource deletion to be skipped.