Add filters to search for enabled/disabled users and projects

Change-Id: Ie7d84f9e0158018083af2156d02dc86fefd79256
Signed-off-by: Jan Ueberacker <jan.ueberacker@inovex.de>
This commit is contained in:
Jan Ueberacker
2025-03-25 15:08:24 +01:00
parent 3412147372
commit 3483117259
5 changed files with 85 additions and 3 deletions

View File

@@ -239,6 +239,20 @@ class ListProject(command.Lister):
'keys and directions.'
),
)
parser.add_argument(
'--enabled',
action='store_true',
dest='is_enabled',
default=None,
help=_('List only enabled projects'),
)
parser.add_argument(
'--disabled',
action='store_false',
dest='is_enabled',
default=None,
help=_('List only disabled projects'),
)
tag.add_tag_filtering_option_to_parser(parser, _('projects'))
return parser
@@ -277,6 +291,9 @@ class ListProject(command.Lister):
kwargs['user'] = user_id
if parsed_args.is_enabled is not None:
kwargs['is_enabled'] = parsed_args.is_enabled
tag.get_tag_filtering_args(parsed_args, kwargs)
if parsed_args.my_projects:

View File

@@ -411,6 +411,24 @@ class ListUser(command.Lister):
default=False,
help=_('List additional fields in output'),
)
parser.add_argument(
'--enabled',
action='store_true',
dest='is_enabled',
default=None,
help=_(
'List only enabled users, does nothing with --project and --group'
),
)
parser.add_argument(
'--disabled',
action='store_false',
dest='is_enabled',
default=None,
help=_(
'List only disabled users, does nothing with --project and --group'
),
)
return parser
def take_action(self, parsed_args):
@@ -430,6 +448,9 @@ class ListUser(command.Lister):
ignore_missing=False,
).id
if parsed_args.is_enabled is not None:
enabled = parsed_args.is_enabled
if parsed_args.project:
if domain is not None:
project = identity_client.find_project(
@@ -468,9 +489,15 @@ class ListUser(command.Lister):
group=group,
)
else:
data = identity_client.users(
domain_id=domain,
)
if parsed_args.is_enabled is not None:
data = identity_client.users(
domain_id=domain,
is_enabled=enabled,
)
else:
data = identity_client.users(
domain_id=domain,
)
# Column handling
if parsed_args.long:

View File

@@ -941,6 +941,22 @@ class TestProjectList(TestProject):
)
self.assertEqual(datalist, tuple(data))
def test_project_list_with_option_enabled(self):
arglist = ['--enabled']
verifylist = [('is_enabled', True)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# In base command class Lister in cliff, abstract method take_action()
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
kwargs = {'is_enabled': True}
self.projects_mock.list.assert_called_with(**kwargs)
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
class TestProjectSet(TestProject):
domain = identity_fakes.FakeDomain.create_one_domain()

View File

@@ -988,6 +988,24 @@ class TestUserList(identity_fakes.TestIdentityv3):
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
def test_user_list_with_option_enabled(self):
arglist = ['--enabled']
verifylist = [('is_enabled', True)]
parsed_args = self.check_parser(self.cmd, arglist, verifylist)
# In base command class Lister in cliff, abstract method take_action()
# returns a tuple containing the column names and an iterable
# containing the data to be listed.
columns, data = self.cmd.take_action(parsed_args)
kwargs = {'domain_id': None, 'is_enabled': True}
self.identity_sdk_client.users.assert_called_with(**kwargs)
self.identity_sdk_client.find_user.assert_not_called()
self.identity_sdk_client.group_users.assert_not_called()
self.assertEqual(self.columns, columns)
self.assertEqual(self.datalist, tuple(data))
class TestUserSet(identity_fakes.TestIdentityv3):
project = sdk_fakes.generate_fake_resource(_project.Project)

View File

@@ -0,0 +1,4 @@
---
features:
- |
Add filters to search for enabled and disabled users and projects.