diff options
-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) |