From da911738818ee11902e30f14eb0c059c3669d24c Mon Sep 17 00:00:00 2001 From: Stephen Finucane Date: Wed, 1 Oct 2025 15:26:25 +0100 Subject: [PATCH] identity: Fix 'user list --project' option The 'role_assignments_filter' identity proxy method requires either a user or group, which defeats the entire purpose of the command when used with this option. Use 'role_assignments' instead. Change-Id: I8fb705c55fb4e81fa82d4a7dbe4c5bf7e1edd98a Signed-off-by: Stephen Finucane Closes-bug: #1616104 (cherry picked from commit 0ed122094ae480a4b3a02948e374aefe0eb3390a) (cherry picked from commit 33673279484abd6e886b388ff8f566fe8624c5eb) --- openstackclient/identity/v3/user.py | 8 +++----- openstackclient/tests/unit/identity/v3/test_user.py | 8 +++----- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/openstackclient/identity/v3/user.py b/openstackclient/identity/v3/user.py index 4c2aa1db09..1a15bfa483 100644 --- a/openstackclient/identity/v3/user.py +++ b/openstackclient/identity/v3/user.py @@ -443,15 +443,13 @@ class ListUser(command.Lister): ignore_missing=False, ).id - assignments = identity_client.role_assignments_filter( - project=project - ) - # NOTE(stevemar): If a user has more than one role on a project # then they will have two entries in the returned data. Since we # are looking for any role, let's just track unique user IDs. user_ids = set() - for assignment in assignments: + for assignment in identity_client.role_assignments( + scope_project_id=project + ): if assignment.user: user_ids.add(assignment.user['id']) diff --git a/openstackclient/tests/unit/identity/v3/test_user.py b/openstackclient/tests/unit/identity/v3/test_user.py index 91e8b45c3e..d0e596a33b 100644 --- a/openstackclient/tests/unit/identity/v3/test_user.py +++ b/openstackclient/tests/unit/identity/v3/test_user.py @@ -840,7 +840,7 @@ class TestUserList(identity_fakes.TestIdentityv3): self.identity_sdk_client.find_domain.return_value = self.domain self.identity_sdk_client.find_group.return_value = self.group self.identity_sdk_client.find_project.return_value = self.project - self.identity_sdk_client.role_assignments_filter.return_value = [ + self.identity_sdk_client.role_assignments.return_value = [ self.role_assignment ] @@ -978,12 +978,10 @@ class TestUserList(identity_fakes.TestIdentityv3): columns, data = self.cmd.take_action(parsed_args) kwargs = { - 'project': self.project.id, + 'scope_project_id': self.project.id, } - self.identity_sdk_client.role_assignments_filter.assert_called_with( - **kwargs - ) + self.identity_sdk_client.role_assignments.assert_called_with(**kwargs) self.assertEqual(self.columns, columns) self.assertEqual(self.datalist, tuple(data))