summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <lwirzenius@wikimedia.org>2019-07-07 19:42:32 +0300
committerLars Wirzenius <lwirzenius@wikimedia.org>2019-07-07 19:42:32 +0300
commit2a94bfed8a2a0a445309c05487f30246f93c30c4 (patch)
tree44d1b7a2f303f2bf0dec329d2774b1cf702f8bc1
parentb57c89e61b60743b0f2b6bd6c6bf4e4b80fb505c (diff)
downloadwmf-ci-arch-2a94bfed8a2a0a445309c05487f30246f93c30c4.tar.gz
Change: creqte repo via API instead of pushing
-rwxr-xr-xapi.py23
1 files changed, 19 insertions, 4 deletions
diff --git a/api.py b/api.py
index c3da440..234ebc7 100755
--- a/api.py
+++ b/api.py
@@ -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)