summaryrefslogtreecommitdiff
path: root/lorrycontroller
diff options
context:
space:
mode:
authorBen Hutchings <ben.hutchings@codethink.co.uk>2020-05-14 20:29:11 +0100
committerBen Hutchings <ben.hutchings@codethink.co.uk>2020-06-01 17:09:15 +0100
commita1d1913dcc2c73a961921213c9cfe8fc2cddbdae (patch)
treebb8135ce9a244eca833f86ea0998ce7cf8ffb282 /lorrycontroller
parent979a37fb44a8e46978daa318c4de3fdc823d2279 (diff)
downloadlorry-controller-a1d1913dcc2c73a961921213c9cfe8fc2cddbdae.tar.gz
GitlabDownstream: Create repositories with most optional features disabled
It generally doesn't make sense for a pure mirror to have issues, merge requests, CI, a wiki, snippets, GitLab Pages, container images, or LFS. Disable all of these. Closes #6.
Diffstat (limited to 'lorrycontroller')
-rw-r--r--lorrycontroller/gitlab.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/lorrycontroller/gitlab.py b/lorrycontroller/gitlab.py
index eda9c9d..759cdb0 100644
--- a/lorrycontroller/gitlab.py
+++ b/lorrycontroller/gitlab.py
@@ -113,15 +113,27 @@ class GitlabDownstream(hosts.DownstreamHost):
group = self.gl.groups.create(data)
parent_group = group
- project = {
- 'name': path_comps[-1],
- 'visibility': self._visibility,
- 'merge_requests_enabled': False,
- 'namespace_id': group.id,
- 'default_branch': metadata.get('head'),
- 'description': metadata.get('description'),
+ proj_create = {
+ 'name': path_comps[-1],
+ 'visibility': self._visibility,
+ 'namespace_id': group.id,
+ 'default_branch': metadata.get('head'),
+ 'description': metadata.get('description'),
+ 'pages_access_level': 'disabled',
+ 'container_registry_enabled': False,
+ 'autoclose_referenced_issues': False,
+ 'lfs_enabled': False,
+ 'auto_devops_enabled': False,
}
- self.gl.projects.create(project)
+ project = self.gl.projects.create(proj_create)
+
+ # Disabling these during creation doesn't work (as of GitLab
+ # 12.10.1) so do it immediately after
+ for attr_name in ['issues_access_level', 'merge_requests_access_level',
+ 'builds_access_level', 'wiki_access_level',
+ 'snippets_access_level']:
+ setattr(project, attr_name, 'disabled')
+ project.save()
logging.info('Created %s project in local GitLab.', repo_path)