mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
Improve modules gitlab (#3792)
* correction doc * Update gitlab_group.py * improve gitlab * Update changelogs/3766-improve_gitlab_group_and_project.yml Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/source_control/gitlab/gitlab_group.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/source_control/gitlab/gitlab_group.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/source_control/gitlab/gitlab_group.py Co-authored-by: Felix Fontein <felix@fontein.de> * Update plugins/modules/source_control/gitlab/gitlab_group.py Co-authored-by: Felix Fontein <felix@fontein.de> * correction * correction sanity project * Update plugins/modules/source_control/gitlab/gitlab_project.py Co-authored-by: Felix Fontein <felix@fontein.de> * modif condition default_branch arg * Update gitlab_project.py change indent if defautl_branch inside if initialize_with_radme Co-authored-by: paitrault <aymeric.paitrault@inetum.com> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
49bdc0f218
commit
c6dcae5fda
3 changed files with 50 additions and 0 deletions
3
changelogs/3766-improve_gitlab_group_and_project.yml
Normal file
3
changelogs/3766-improve_gitlab_group_and_project.yml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
minor_changes:
|
||||||
|
- gitlab_group, gitlab_project - add new option ``avatar_path`` (https://github.com/ansible-collections/community.general/pull/3792).
|
||||||
|
- gitlab_project - add new option ``default_branch`` to gitlab_project (if ``readme = true``) (https://github.com/ansible-collections/community.general/pull/3792).
|
|
@ -83,6 +83,12 @@ options:
|
||||||
- Require all users in this group to setup two-factor authentication.
|
- Require all users in this group to setup two-factor authentication.
|
||||||
type: bool
|
type: bool
|
||||||
version_added: 3.7.0
|
version_added: 3.7.0
|
||||||
|
avatar_path:
|
||||||
|
description:
|
||||||
|
- Absolute path image to configure avatar. File size should not exceed 200 kb.
|
||||||
|
- This option is only used on creation, not for updates.
|
||||||
|
type: path
|
||||||
|
version_added: 4.2.0
|
||||||
'''
|
'''
|
||||||
|
|
||||||
EXAMPLES = '''
|
EXAMPLES = '''
|
||||||
|
@ -212,6 +218,13 @@ class GitLabGroup(object):
|
||||||
if options.get('require_two_factor_authentication'):
|
if options.get('require_two_factor_authentication'):
|
||||||
payload['require_two_factor_authentication'] = options['require_two_factor_authentication']
|
payload['require_two_factor_authentication'] = options['require_two_factor_authentication']
|
||||||
group = self.create_group(payload)
|
group = self.create_group(payload)
|
||||||
|
|
||||||
|
# add avatar to group
|
||||||
|
if options['avatar_path']:
|
||||||
|
try:
|
||||||
|
group.avatar = open(options['avatar_path'], 'rb')
|
||||||
|
except IOError as e:
|
||||||
|
self._module.fail_json(msg='Cannot open {0}: {1}'.format(options['avatar_path'], e))
|
||||||
changed = True
|
changed = True
|
||||||
else:
|
else:
|
||||||
changed, group = self.update_group(self.group_object, {
|
changed, group = self.update_group(self.group_object, {
|
||||||
|
@ -308,6 +321,7 @@ def main():
|
||||||
auto_devops_enabled=dict(type='bool'),
|
auto_devops_enabled=dict(type='bool'),
|
||||||
subgroup_creation_level=dict(type='str', choices=['maintainer', 'owner']),
|
subgroup_creation_level=dict(type='str', choices=['maintainer', 'owner']),
|
||||||
require_two_factor_authentication=dict(type='bool'),
|
require_two_factor_authentication=dict(type='bool'),
|
||||||
|
avatar_path=dict(type='path'),
|
||||||
))
|
))
|
||||||
|
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
|
@ -335,6 +349,7 @@ def main():
|
||||||
auto_devops_enabled = module.params['auto_devops_enabled']
|
auto_devops_enabled = module.params['auto_devops_enabled']
|
||||||
subgroup_creation_level = module.params['subgroup_creation_level']
|
subgroup_creation_level = module.params['subgroup_creation_level']
|
||||||
require_two_factor_authentication = module.params['require_two_factor_authentication']
|
require_two_factor_authentication = module.params['require_two_factor_authentication']
|
||||||
|
avatar_path = module.params['avatar_path']
|
||||||
|
|
||||||
if not HAS_GITLAB_PACKAGE:
|
if not HAS_GITLAB_PACKAGE:
|
||||||
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
|
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
|
||||||
|
@ -373,6 +388,7 @@ def main():
|
||||||
"auto_devops_enabled": auto_devops_enabled,
|
"auto_devops_enabled": auto_devops_enabled,
|
||||||
"subgroup_creation_level": subgroup_creation_level,
|
"subgroup_creation_level": subgroup_creation_level,
|
||||||
"require_two_factor_authentication": require_two_factor_authentication,
|
"require_two_factor_authentication": require_two_factor_authentication,
|
||||||
|
"avatar_path": avatar_path,
|
||||||
}):
|
}):
|
||||||
module.exit_json(changed=True, msg="Successfully created or updated the group %s" % group_name, group=gitlab_group.group_object._attrs)
|
module.exit_json(changed=True, msg="Successfully created or updated the group %s" % group_name, group=gitlab_group.group_object._attrs)
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -162,6 +162,18 @@ options:
|
||||||
- Enable shared runners for this project.
|
- Enable shared runners for this project.
|
||||||
type: bool
|
type: bool
|
||||||
version_added: "3.7.0"
|
version_added: "3.7.0"
|
||||||
|
avatar_path:
|
||||||
|
description:
|
||||||
|
- Absolute path image to configure avatar. File size should not exceed 200 kb.
|
||||||
|
- This option is only used on creation, not for updates.
|
||||||
|
type: path
|
||||||
|
version_added: "4.2.0"
|
||||||
|
default_branch:
|
||||||
|
description:
|
||||||
|
- Default branch name for a new project.
|
||||||
|
- This option is only used on creation, not for updates. This is also only used if I(initialize_with_readme=true).
|
||||||
|
type: str
|
||||||
|
version_added: "4.2.0"
|
||||||
'''
|
'''
|
||||||
|
|
||||||
EXAMPLES = r'''
|
EXAMPLES = r'''
|
||||||
|
@ -280,8 +292,18 @@ class GitLabProject(object):
|
||||||
})
|
})
|
||||||
if options['initialize_with_readme']:
|
if options['initialize_with_readme']:
|
||||||
project_options['initialize_with_readme'] = options['initialize_with_readme']
|
project_options['initialize_with_readme'] = options['initialize_with_readme']
|
||||||
|
if options['default_branch']:
|
||||||
|
project_options['default_branch'] = options['default_branch']
|
||||||
|
|
||||||
project_options = self.get_options_with_value(project_options)
|
project_options = self.get_options_with_value(project_options)
|
||||||
project = self.create_project(namespace, project_options)
|
project = self.create_project(namespace, project_options)
|
||||||
|
|
||||||
|
# add avatar to project
|
||||||
|
try:
|
||||||
|
project.avatar = open(options['avatar_path'], 'rb')
|
||||||
|
except IOError as e:
|
||||||
|
self._module.fail_json(msg='Cannot open {0}: {1}'.format(options['avatar_path'], e))
|
||||||
|
|
||||||
changed = True
|
changed = True
|
||||||
else:
|
else:
|
||||||
changed, project = self.update_project(self.project_object, project_options)
|
changed, project = self.update_project(self.project_object, project_options)
|
||||||
|
@ -370,6 +392,7 @@ def main():
|
||||||
path=dict(type='str'),
|
path=dict(type='str'),
|
||||||
description=dict(type='str'),
|
description=dict(type='str'),
|
||||||
initialize_with_readme=dict(type='bool', default=False),
|
initialize_with_readme=dict(type='bool', default=False),
|
||||||
|
default_branch=dict(type='str'),
|
||||||
issues_enabled=dict(type='bool', default=True),
|
issues_enabled=dict(type='bool', default=True),
|
||||||
merge_requests_enabled=dict(type='bool', default=True),
|
merge_requests_enabled=dict(type='bool', default=True),
|
||||||
merge_method=dict(type='str', default='merge', choices=["merge", "rebase_merge", "ff"]),
|
merge_method=dict(type='str', default='merge', choices=["merge", "rebase_merge", "ff"]),
|
||||||
|
@ -388,6 +411,7 @@ def main():
|
||||||
squash_option=dict(type='str', choices=['never', 'always', 'default_off', 'default_on']),
|
squash_option=dict(type='str', choices=['never', 'always', 'default_off', 'default_on']),
|
||||||
ci_config_path=dict(type='str'),
|
ci_config_path=dict(type='str'),
|
||||||
shared_runners_enabled=dict(type='bool'),
|
shared_runners_enabled=dict(type='bool'),
|
||||||
|
avatar_path=dict(type='path'),
|
||||||
))
|
))
|
||||||
|
|
||||||
module = AnsibleModule(
|
module = AnsibleModule(
|
||||||
|
@ -429,6 +453,11 @@ def main():
|
||||||
squash_option = module.params['squash_option']
|
squash_option = module.params['squash_option']
|
||||||
ci_config_path = module.params['ci_config_path']
|
ci_config_path = module.params['ci_config_path']
|
||||||
shared_runners_enabled = module.params['shared_runners_enabled']
|
shared_runners_enabled = module.params['shared_runners_enabled']
|
||||||
|
avatar_path = module.params['avatar_path']
|
||||||
|
default_branch = module.params['default_branch']
|
||||||
|
|
||||||
|
if default_branch and not initialize_with_readme:
|
||||||
|
module.fail_json(msg="Param default_branch need param initialize_with_readme set to true")
|
||||||
|
|
||||||
if not HAS_GITLAB_PACKAGE:
|
if not HAS_GITLAB_PACKAGE:
|
||||||
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
|
module.fail_json(msg=missing_required_lib("python-gitlab"), exception=GITLAB_IMP_ERR)
|
||||||
|
@ -480,6 +509,7 @@ def main():
|
||||||
"path": project_path,
|
"path": project_path,
|
||||||
"description": project_description,
|
"description": project_description,
|
||||||
"initialize_with_readme": initialize_with_readme,
|
"initialize_with_readme": initialize_with_readme,
|
||||||
|
"default_branch": default_branch,
|
||||||
"issues_enabled": issues_enabled,
|
"issues_enabled": issues_enabled,
|
||||||
"merge_requests_enabled": merge_requests_enabled,
|
"merge_requests_enabled": merge_requests_enabled,
|
||||||
"merge_method": merge_method,
|
"merge_method": merge_method,
|
||||||
|
@ -496,6 +526,7 @@ def main():
|
||||||
"squash_option": squash_option,
|
"squash_option": squash_option,
|
||||||
"ci_config_path": ci_config_path,
|
"ci_config_path": ci_config_path,
|
||||||
"shared_runners_enabled": shared_runners_enabled,
|
"shared_runners_enabled": shared_runners_enabled,
|
||||||
|
"avatar_path": avatar_path,
|
||||||
}):
|
}):
|
||||||
|
|
||||||
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)
|
||||||
|
|
Loading…
Reference in a new issue