diff options
author | Lars Wirzenius <lwirzenius@wikimedia.org> | 2019-07-07 19:42:32 +0300 |
---|---|---|
committer | Lars Wirzenius <lwirzenius@wikimedia.org> | 2019-07-07 19:42:32 +0300 |
commit | 2a94bfed8a2a0a445309c05487f30246f93c30c4 (patch) | |
tree | 44d1b7a2f303f2bf0dec329d2774b1cf702f8bc1 /api.py | |
parent | b57c89e61b60743b0f2b6bd6c6bf4e4b80fb505c (diff) | |
download | wmf-ci-arch-2a94bfed8a2a0a445309c05487f30246f93c30c4.tar.gz |
Change: creqte repo via API instead of pushing
Diffstat (limited to 'api.py')
-rwxr-xr-x | api.py | 23 |
1 files changed, 19 insertions, 4 deletions
@@ -198,6 +198,7 @@ class VCSWorker(API): MAX_CLONE_TIME = 1 MAX_REMOVE_TIME = 60 + MAX_CREATE_REPO_TIME = 5 MAX_PUSH_TIME = 60 GITLAB_DOMAIN = 'wmf-gitlab3.vm.liw.fi' GITLAB_PROJECT = 'liw' @@ -230,11 +231,13 @@ class VCSWorker(API): ok = self._remove( self._token, self.GITLAB_DOMAIN, self.GITLAB_PROJECT, name) if ok: - ok = self._push( - dirname, self.GITLAB_DOMAIN, self.GITLAB_PROJECT, ref, - name) + ok = self._create_repo(self._token, self.GITLAB_DOMAIN, name) if ok: - return 'Repository copied successfully\n' + ok = self._push( + dirname, self.GITLAB_DOMAIN, self.GITLAB_PROJECT, ref, + name) + if ok: + return 'Repository copied successfully\n' logging.error('Something went wrong when copying repository') return bottle.HTTPError(418) @@ -252,6 +255,18 @@ class VCSWorker(API): argv = ['curl', '-HPRIVATE-TOKEN: %s' % token, '-X', 'DELETE', url] return runcmd('.', argv, self.MAX_REMOVE_TIME) + def _create_repo(self, token, gitlab_domain, name): + logging.info('Creating repository %s', name) + url = 'https://%s/api/v4/projects' % gitlab_domain + argv = [ + 'curl', + url, + '-sv', '-X' 'POST', + '-d', 'name=%s' % name, + '-HPRIVATE-TOKEN: %s' % token, + ] + return runcmd('.', argv, self.MAX_CREATE_REPO_TIME) + def _push(self, dirname, gitlab_domain, gitlab_project, ref, name): logging.info('Pushing %s to %s as %s', dirname, gitlab_domain, name) url = 'ssh://git@%s/%s/%s.git' % (gitlab_domain, gitlab_project, name) |