From a39a939e0352741d0b2c43e96e660f52eac22245 Mon Sep 17 00:00:00 2001 From: Jeremy Stanley Date: Wed, 13 Oct 2021 19:16:18 +0000 Subject: [PATCH] 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 --- .../library/gitea_create_repos.py | 5 +++- playbooks/sync-gitea-projects.yaml | 17 ++++-------- playbooks/test-gitea.yaml | 27 +++++++++++++++++++ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py b/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py index 119dcfb314..7385c78c2d 100755 --- a/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py +++ b/playbooks/roles/gitea-git-repos/library/gitea_create_repos.py @@ -197,6 +197,9 @@ class Gitea(object): # https://github.com/go-gitea/gitea/pull/7493 self.make_gitea_project(project) 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( self.update_gitea_project_settings, project)) @@ -272,7 +275,7 @@ def ansible_main(): url=dict(required=True), password=dict(required=True, no_log=True), projects=dict(required=True, type='list'), - always_update=dict(type='bool', default=True), + always_update=dict(default=True), ) ) diff --git a/playbooks/sync-gitea-projects.yaml b/playbooks/sync-gitea-projects.yaml index bf2e00c703..30c65ee089 100644 --- a/playbooks/sync-gitea-projects.yaml +++ b/playbooks/sync-gitea-projects.yaml @@ -1,16 +1,9 @@ -- hosts: "localhost:!disabled" - name: "sync-gitea-projects: Collect the project-config ref" - strategy: free - connection: local - tasks: - - name: Clone project-config repo - git: - repo: https://opendev.org/openstack/project-config - dest: /opt/project-config - force: yes - +# Note: Override the gitea_always_update rolevar to either true (update all) or +# a list of specific projects if you want metadata applied for these, otherwise +# the default (false) does not set any project metadata. We intentionally leave +# it unset here so that we can test it in the system-config-run-gitea job after +# renaming a project, or to be able to set it from the command line. - hosts: "gitea:!disabled" name: "Create repos on gitea servers" roles: - role: gitea-git-repos - gitea_always_update: true diff --git a/playbooks/test-gitea.yaml b/playbooks/test-gitea.yaml index 990794d16d..d47b9fe534 100644 --- a/playbooks/test-gitea.yaml +++ b/playbooks/test-gitea.yaml @@ -31,6 +31,33 @@ vars: 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 # autohold the system-config-run-gitea job in zuul. #- hosts: bridge.openstack.org