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:
parent
5c6b3411b7
commit
892596373f
@ -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():
|
||||
|
Loading…
x
Reference in New Issue
Block a user