mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-04-21 00:01:08 +00:00
gitlab_project_members: fail when multiple projects match by name (#11851)
* gitlab_project_members: fail when multiple projects match by name When the project parameter is a bare name (not a full path), and the search returns more than one match, the module now fails with a clear error asking the user to provide the full path (group/project) to disambiguate, instead of silently operating on the first result. Fixes #2767 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * gitlab_project_members: improve code formatting Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * gitlab_project_members: add changelog fragment for #11851 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
bugfixes:
|
||||
- gitlab_project_members - fail with a clear error when multiple projects match the given name, instead of silently operating on the first result
|
||||
(https://github.com/ansible-collections/community.general/issues/2767,
|
||||
https://github.com/ansible-collections/community.general/pull/11851).
|
||||
@@ -179,8 +179,15 @@ class GitLabProjectMembers:
|
||||
return project_exists.id
|
||||
except gitlab.exceptions.GitlabGetError:
|
||||
project_exists = self._gitlab.projects.list(search=project_name, all=False)
|
||||
if project_exists:
|
||||
if len(project_exists) == 1:
|
||||
return project_exists[0].id
|
||||
if len(project_exists) > 1:
|
||||
self._module.fail_json(
|
||||
msg=(
|
||||
f"More than one project matches '{project_name}'. "
|
||||
"Use the full path ('group/project') to disambiguate."
|
||||
)
|
||||
)
|
||||
|
||||
def get_user_id(self, gitlab_user):
|
||||
user_exists = self._gitlab.users.list(username=gitlab_user, all=False)
|
||||
|
||||
Reference in New Issue
Block a user