1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

Add support to topics on Gitlab Project module (#6278)

* add topics to gitlab_project.py

* add chngelog fragment

* fix lint error

* Update changelogs/fragments/6277-add-topics-gitlab-project.yml

Co-authored-by: Felix Fontein <felix@fontein.de>

* Apply suggestions from code review

Co-authored-by: Felix Fontein <felix@fontein.de>

---------

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
Lorenzo Tanganelli 2023-04-03 22:02:20 +02:00 committed by GitHub
parent c280b793de
commit cee5f31b70
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 0 deletions

View file

@ -0,0 +1,2 @@
minor_changes:
- gitlab_project - add new option ``topics`` for adding topics to GitLab projects (https://github.com/ansible-collections/community.general/pull/6278).

View file

@ -251,6 +251,13 @@ options:
type: str type: str
choices: ["private", "disabled", "enabled"] choices: ["private", "disabled", "enabled"]
version_added: "6.4.0" version_added: "6.4.0"
topics:
description:
- A topic or list of topics to be assigned to a project.
- It is compatible with old GitLab server releases (versions before 14, correspond to C(tag_list)).
type: list
elements: str
version_added: "6.6.0"
''' '''
EXAMPLES = r''' EXAMPLES = r'''
@ -334,6 +341,8 @@ from ansible_collections.community.general.plugins.module_utils.gitlab import (
auth_argument_spec, find_group, find_project, gitlab_authentication, gitlab, ensure_gitlab_package auth_argument_spec, find_group, find_project, gitlab_authentication, gitlab, ensure_gitlab_package
) )
from ansible_collections.community.general.plugins.module_utils.version import LooseVersion
class GitLabProject(object): class GitLabProject(object):
def __init__(self, module, gitlab_instance): def __init__(self, module, gitlab_instance):
@ -376,6 +385,14 @@ class GitLabProject(object):
'monitor_access_level': options['monitor_access_level'], 'monitor_access_level': options['monitor_access_level'],
'security_and_compliance_access_level': options['security_and_compliance_access_level'], 'security_and_compliance_access_level': options['security_and_compliance_access_level'],
} }
# topics was introduced on gitlab >=14 and replace tag_list. We get current gitlab version
# and check if less than 14. If yes we use tag_list instead topics
if LooseVersion(self._gitlab.version()[0]) < LooseVersion("14"):
project_options['tag_list'] = options['topics']
else:
project_options['topics'] = options['topics']
# Because we have already call userExists in main() # Because we have already call userExists in main()
if self.project_object is None: if self.project_object is None:
project_options.update({ project_options.update({
@ -514,6 +531,7 @@ def main():
infrastructure_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']), infrastructure_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']),
monitor_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']), monitor_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']),
security_and_compliance_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']), security_and_compliance_access_level=dict(type='str', choices=['private', 'disabled', 'enabled']),
topics=dict(type='list', elements='str'),
)) ))
module = AnsibleModule( module = AnsibleModule(
@ -570,6 +588,7 @@ def main():
infrastructure_access_level = module.params['infrastructure_access_level'] infrastructure_access_level = module.params['infrastructure_access_level']
monitor_access_level = module.params['monitor_access_level'] monitor_access_level = module.params['monitor_access_level']
security_and_compliance_access_level = module.params['security_and_compliance_access_level'] security_and_compliance_access_level = module.params['security_and_compliance_access_level']
topics = module.params['topics']
if default_branch and not initialize_with_readme: if default_branch and not initialize_with_readme:
module.fail_json(msg="Param default_branch need param initialize_with_readme set to true") module.fail_json(msg="Param default_branch need param initialize_with_readme set to true")
@ -648,6 +667,7 @@ def main():
"infrastructure_access_level": infrastructure_access_level, "infrastructure_access_level": infrastructure_access_level,
"monitor_access_level": monitor_access_level, "monitor_access_level": monitor_access_level,
"security_and_compliance_access_level": security_and_compliance_access_level, "security_and_compliance_access_level": security_and_compliance_access_level,
"topics": topics,
}): }):
module.exit_json(changed=True, msg="Successfully created or updated the project %s" % project_name, project=gitlab_project.project_object._attrs) module.exit_json(changed=True, msg="Successfully created or updated the project %s" % project_name, project=gitlab_project.project_object._attrs)