Improve idempotency of gitea-git-repos

When determining whether a project exists, we need to compare to
just the name, not the full data structure about the project.

Also, if the project exists, don't try to create it again; that
will return a 409 conflict error.

Change-Id: I0b8affac96b17fa73253082b1b87d4c00bf23463
This commit is contained in:
James E. Blair 2019-07-15 15:18:45 -07:00
parent 5c6b3411b7
commit 892596373f

View File

@ -86,22 +86,24 @@ class Gitea(object):
self.log("Added gerrit to team:", org)
def get_org_repo_list(self, org):
return self.get('/api/v1/orgs/{org}/repos'.format(org=org)).json()
return [x['full_name'] for x in
self.get('/api/v1/orgs/{org}/repos'.format(org=org)).json()]
def get_csrf_token(self):
resp = self.get('/')
return urllib.parse.unquote(resp.cookies.get('_csrf'))
def make_gitea_project(self, project, csrf_token):
def make_gitea_project(self, project, csrf_token, create_project=True):
org, repo = project['project'].split('/', 1)
resp = self.post(
'/api/v1/org/{org}/repos'.format(org=org),
json=dict(
auto_init=True,
description=project.get('description', '')[:255],
name=repo,
private=False,
readme='Default'))
if create_project:
resp = self.post(
'/api/v1/org/{org}/repos'.format(org=org),
json=dict(
auto_init=True,
description=project.get('description', '')[:255],
name=repo,
private=False,
readme='Default'))
self.log("Created repo:", project['project'])
if project.get('use-storyboard'):
external_tracker_url = SB_REPO.format(org=org, repo=repo)
@ -158,8 +160,12 @@ class Gitea(object):
csrf_token = self.get_csrf_token()
for project in self.projects:
if project['project'] not in gitea_repos or self.always_update:
self.make_gitea_project(project, csrf_token)
if project['project'] in gitea_repos:
create = False
else:
create = True
if create or self.always_update:
self.make_gitea_project(project, csrf_token, create)
def ansible_main():