diff options
author | Ben Hutchings <ben.hutchings@codethink.co.uk> | 2020-05-13 16:40:43 +0100 |
---|---|---|
committer | Ben Hutchings <ben.hutchings@codethink.co.uk> | 2020-06-01 15:31:19 +0100 |
commit | 91f046b71e0ec46c957da3055a268ff8f0ba45c4 (patch) | |
tree | 59e774af7a9ece97b42f68f063618dcce878c0a3 /lorrycontroller/gitlab.py | |
parent | 035617a3334f279b029edf892e41b7d0cb87f0b7 (diff) | |
download | lorry-controller-91f046b71e0ec46c957da3055a268ff8f0ba45c4.tar.gz |
Implement getting and setting repo metadata for all host types
* GitlabUpstream: Implement get_repo_metadata
* {Gerrit,Gitlab,Local}Downstream: Use given metadata in prepare_repo
Diffstat (limited to 'lorrycontroller/gitlab.py')
-rw-r--r-- | lorrycontroller/gitlab.py | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/lorrycontroller/gitlab.py b/lorrycontroller/gitlab.py index ab6df63..4f70f0a 100644 --- a/lorrycontroller/gitlab.py +++ b/lorrycontroller/gitlab.py @@ -66,19 +66,22 @@ class GitlabDownstream(hosts.DownstreamHost): self.gl = _init_gitlab(host, app_settings['gitlab-private-token']) - def _has_project(self, repo_path): - try: - self.gl.projects.get(repo_path) - return True - except gitlab.GitlabGetError: - return False - def prepare_repo(self, repo_path, metadata): - # TODO: set metadata - if self._has_project(repo_path): + try: + project = self.gl.projects.get(repo_path) + except gitlab.GitlabGetError: + pass + else: logging.info('Project %s exists in local GitLab already.', repo_path) + if 'head' in metadata \ + and project.default_branch != metadata['head']: + project.default_branch = metadata['head'] + if 'description' in metadata \ + and project.description != metadata['description']: + project.description = metadata['description'] + project.save() return path_comps = repo_path.split('/') @@ -109,6 +112,8 @@ class GitlabDownstream(hosts.DownstreamHost): 'public': True, 'merge_requests_enabled': False, 'namespace_id': group.id, + 'default_branch': metadata.get('head'), + 'description': metadata.get('description'), } self.gl.projects.create(project) @@ -157,5 +162,10 @@ class GitlabUpstream(hosts.UpstreamHost): self._protocol, split.netloc, split.path, '', '')) def get_repo_metadata(self, repo_path): - # TODO - return {} + project = self.gl.projects.get(repo_path) + metadata = {} + if project.default_branch is not None: + metadata['head'] = project.default_branch + if project.description is not None: + metadata['description'] = project.description + return metadata |