Allow gitea_create_repos always_update to be list

Setting the gitea_always_update var for the gitea-git-repos role to
a list will filter metadata updates to only the project names
included in the supplied list. False and True still have their prior
meanings of do no metadata updates or force metadata updates for
every project we host.

Add testing for this, and also actually test that the rename
playbook renamed something.

Get rid of the git clone in the playbook since it's no longer
relevant to how we run things anyway, we'll instead want to rely on
the Zuul supplied projects.yaml path.

Change-Id: Id8238b232caffc242c6bda9fe39eb7e65fe5e059
This commit is contained in:
Jeremy Stanley 2021-10-13 19:16:18 +00:00
parent d76fb17fba
commit a39a939e03
3 changed files with 36 additions and 13 deletions

View File

@ -197,6 +197,9 @@ class Gitea(object):
# https://github.com/go-gitea/gitea/pull/7493 # https://github.com/go-gitea/gitea/pull/7493
self.make_gitea_project(project) self.make_gitea_project(project)
if create or self.always_update: if create or self.always_update:
if isinstance(self.always_update, list
) and project not in self.always_update:
continue
futures.append(settings_thread_pool.submit( futures.append(settings_thread_pool.submit(
self.update_gitea_project_settings, self.update_gitea_project_settings,
project)) project))
@ -272,7 +275,7 @@ def ansible_main():
url=dict(required=True), url=dict(required=True),
password=dict(required=True, no_log=True), password=dict(required=True, no_log=True),
projects=dict(required=True, type='list'), projects=dict(required=True, type='list'),
always_update=dict(type='bool', default=True), always_update=dict(default=True),
) )
) )

View File

@ -1,16 +1,9 @@
- hosts: "localhost:!disabled" # Note: Override the gitea_always_update rolevar to either true (update all) or
name: "sync-gitea-projects: Collect the project-config ref" # a list of specific projects if you want metadata applied for these, otherwise
strategy: free # the default (false) does not set any project metadata. We intentionally leave
connection: local # it unset here so that we can test it in the system-config-run-gitea job after
tasks: # renaming a project, or to be able to set it from the command line.
- name: Clone project-config repo
git:
repo: https://opendev.org/openstack/project-config
dest: /opt/project-config
force: yes
- hosts: "gitea:!disabled" - hosts: "gitea:!disabled"
name: "Create repos on gitea servers" name: "Create repos on gitea servers"
roles: roles:
- role: gitea-git-repos - role: gitea-git-repos
gitea_always_update: true

View File

@ -31,6 +31,33 @@
vars: vars:
repolist: /home/zuul/src/opendev.org/opendev/system-config/playbooks/zuul/test_gitea_renames.yaml repolist: /home/zuul/src/opendev.org/opendev/system-config/playbooks/zuul/test_gitea_renames.yaml
- hosts: "bridge.openstack.org:!disabled"
tasks:
- name: Update DIB project name in projects.yaml and switch to SB
lineinfile:
path: "{{ project_config_src }}/gerrit/projects.yaml"
regexp: "^- project: openstack/diskimage-builder"
line: "- project: opendev/disk-image-builder\n use-storyboard: true"
- name: Run filtered sync playbook
import_playbook: sync-gitea-projects.yaml
vars:
gitea_always_update: ["opendev/disk-image-builder"]
- hosts: "gitea"
tasks:
- name: Test opendev/disk-image-builder exists in gitea
uri:
url: "https://localhost:3000/opendev/disk-image-builder"
validate_certs: false
status_code: 200
return_content: yes
register: dib_content
- name: Assert DIB issues URL was updated
fail:
msg: DIB issues URL was not updated
when: '"https://storyboard.openstack.org/#!/project/opendev/disk-image-builder" not in dib_content.content'
# This is conveniently left here so that it can be uncommented in order to # This is conveniently left here so that it can be uncommented in order to
# autohold the system-config-run-gitea job in zuul. # autohold the system-config-run-gitea job in zuul.
#- hosts: bridge.openstack.org #- hosts: bridge.openstack.org