all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:feb8:ef
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: e3573e32-a2d0-4e5a-b575-4d42dd85bba1
        host_id: 0d3d02185f810c959252bd1d303ec55040bf5bb0b401cceef814c3a7
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:feb8:ef
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.190
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.88
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:feb8:ef
        region: null
        slot: null
  vars:
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job hadolint explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#37>'
      - '<Job hadolint explicit: None implied: None source: osism/container-image-inventory-reconciler/.zuul.yaml@main#104>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 64758a92b25f4faab46b30a245fa4702
      build_refs:
      - branch: main
        change: '521'
        change_message: "Stage ansible.cfg via rsync for atomic updates\n\n## Summary\n\n-
          Render `ansible.cfg` into `/inventory.merge/ansible/` so it ships as part
          of the staging-tree rsync rather than being written directly into `/inventory/ansible/`
          after the rsync completes.\n- Add `--delay-updates` to the `/inventory.merge/
          \u2192 /inventory` rsync so consumers see an atomic `renameat` swap of each
          file, including `ansible.cfg`.\n- Drop the now-unnecessary post-rsync `mkdir
          -p /inventory/ansible` + `python3 /merge-ansible-cfg.py` sequence.\n\n##
          Why\n\nThe previous ordering had a short window (tens to hundreds of milliseconds)
          in which `/inventory/ansible/ansible.cfg` did not exist: the `rsync --delete`
          at `run.sh:84` removed the previous copy, and `merge-ansible-cfg.py` at
          `run.sh:105` had not yet rewritten it. Consumer containers (`osism-ansible`,
          `kolla-ansible` for 2023.2 / 2024.1 / 2024.2 / 2025.1 / 2025.2, `ceph-ansible`)
          that resolved `ANSIBLE_CONFIG` during that window silently fell through
          to the image-baked `/etc/ansible/ansible.cfg`, which carries a stale `private_key_file`
          pointer, producing `UNREACHABLE` on gather-facts and a silently corrupt
          fact cache for the rest of the deploy.\n\nWith the merge staged before the
          rsync and `--delay-updates` engaged, the live `ansible.cfg` transitions
          old \u2192 new via a single atomic `rename(2)`; there is no absent window.
          No consumer-side change is required \u2014 all three container families
          use the same three-tier ladder against `/ansible/inventory/ansible/ansible.cfg`.\n\n##
          Test plan\n\n- [ ] Rebuild `container-image-inventory-reconciler` from this
          branch.\n- [ ] Run `contrib/operator-loop.py` (in `osism/testbed`) against
          a fresh-deploy cloudpod to exercise the reconciler/consumer race over multiple
          cycles.\n- [ ] With a tight `stat`/`inotify` watcher on `/ansible/inventory/ansible/ansible.cfg`
          during a reconciler cycle, confirm the file is never absent (only ever replaced).\n-
          [ ] Confirm no gather-facts `UNREACHABLE` recaps attributable to the silent
          `ANSIBLE_CONFIG` fall-through during repeated deploy loops.\n\n## Notes\n\n-
          Companion hygiene fixes (strip the stale `private_key_file` line from the
          three image-default `ansible.cfg` files, fail-loud guard on `ANSIBLE_CONFIG`
          in `run-generic.sh`, drop `ignore_unreachable: true` from `gather-facts.yml`)
          are tracked separately and do not depend on this change; this PR removes
          the race at its source.\n- The sibling post-rsync writer `generate-clustershell-ansible-file.py`
          at `run.sh:101` opens a smaller window for clustershell consumers. It is
          not currently biting the silent-cache-miss bug (no gather-facts path reads
          `/inventory/clustershell/`), but the same staging pattern would close it
          and is worth a follow-up PR."
        change_url: https://github.com/osism/container-image-inventory-reconciler/pull/521
        commit_id: b39a51ad41b056593b21732d58c607826c4b5118
        patchset: b39a51ad41b056593b21732d58c607826c4b5118
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          name: osism/container-image-inventory-reconciler
          short_name: container-image-inventory-reconciler
        src_dir: src/github.com/osism/container-image-inventory-reconciler
        topic: null
      buildset: e17197b4d71c4b1e81f9a8095bec319c
      buildset_refs:
      - branch: main
        change: '521'
        change_message: "Stage ansible.cfg via rsync for atomic updates\n\n## Summary\n\n-
          Render `ansible.cfg` into `/inventory.merge/ansible/` so it ships as part
          of the staging-tree rsync rather than being written directly into `/inventory/ansible/`
          after the rsync completes.\n- Add `--delay-updates` to the `/inventory.merge/
          \u2192 /inventory` rsync so consumers see an atomic `renameat` swap of each
          file, including `ansible.cfg`.\n- Drop the now-unnecessary post-rsync `mkdir
          -p /inventory/ansible` + `python3 /merge-ansible-cfg.py` sequence.\n\n##
          Why\n\nThe previous ordering had a short window (tens to hundreds of milliseconds)
          in which `/inventory/ansible/ansible.cfg` did not exist: the `rsync --delete`
          at `run.sh:84` removed the previous copy, and `merge-ansible-cfg.py` at
          `run.sh:105` had not yet rewritten it. Consumer containers (`osism-ansible`,
          `kolla-ansible` for 2023.2 / 2024.1 / 2024.2 / 2025.1 / 2025.2, `ceph-ansible`)
          that resolved `ANSIBLE_CONFIG` during that window silently fell through
          to the image-baked `/etc/ansible/ansible.cfg`, which carries a stale `private_key_file`
          pointer, producing `UNREACHABLE` on gather-facts and a silently corrupt
          fact cache for the rest of the deploy.\n\nWith the merge staged before the
          rsync and `--delay-updates` engaged, the live `ansible.cfg` transitions
          old \u2192 new via a single atomic `rename(2)`; there is no absent window.
          No consumer-side change is required \u2014 all three container families
          use the same three-tier ladder against `/ansible/inventory/ansible/ansible.cfg`.\n\n##
          Test plan\n\n- [ ] Rebuild `container-image-inventory-reconciler` from this
          branch.\n- [ ] Run `contrib/operator-loop.py` (in `osism/testbed`) against
          a fresh-deploy cloudpod to exercise the reconciler/consumer race over multiple
          cycles.\n- [ ] With a tight `stat`/`inotify` watcher on `/ansible/inventory/ansible/ansible.cfg`
          during a reconciler cycle, confirm the file is never absent (only ever replaced).\n-
          [ ] Confirm no gather-facts `UNREACHABLE` recaps attributable to the silent
          `ANSIBLE_CONFIG` fall-through during repeated deploy loops.\n\n## Notes\n\n-
          Companion hygiene fixes (strip the stale `private_key_file` line from the
          three image-default `ansible.cfg` files, fail-loud guard on `ANSIBLE_CONFIG`
          in `run-generic.sh`, drop `ignore_unreachable: true` from `gather-facts.yml`)
          are tracked separately and do not depend on this change; this PR removes
          the race at its source.\n- The sibling post-rsync writer `generate-clustershell-ansible-file.py`
          at `run.sh:101` opens a smaller window for clustershell consumers. It is
          not currently biting the silent-cache-miss bug (no gather-facts path reads
          `/inventory/clustershell/`), but the same staging pattern would close it
          and is worth a follow-up PR."
        change_url: https://github.com/osism/container-image-inventory-reconciler/pull/521
        commit_id: b39a51ad41b056593b21732d58c607826c4b5118
        patchset: b39a51ad41b056593b21732d58c607826c4b5118
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          name: osism/container-image-inventory-reconciler
          short_name: container-image-inventory-reconciler
        src_dir: src/github.com/osism/container-image-inventory-reconciler
        topic: null
      change: '521'
      change_message: "Stage ansible.cfg via rsync for atomic updates\n\n## Summary\n\n-
        Render `ansible.cfg` into `/inventory.merge/ansible/` so it ships as part
        of the staging-tree rsync rather than being written directly into `/inventory/ansible/`
        after the rsync completes.\n- Add `--delay-updates` to the `/inventory.merge/
        \u2192 /inventory` rsync so consumers see an atomic `renameat` swap of each
        file, including `ansible.cfg`.\n- Drop the now-unnecessary post-rsync `mkdir
        -p /inventory/ansible` + `python3 /merge-ansible-cfg.py` sequence.\n\n## Why\n\nThe
        previous ordering had a short window (tens to hundreds of milliseconds) in
        which `/inventory/ansible/ansible.cfg` did not exist: the `rsync --delete`
        at `run.sh:84` removed the previous copy, and `merge-ansible-cfg.py` at `run.sh:105`
        had not yet rewritten it. Consumer containers (`osism-ansible`, `kolla-ansible`
        for 2023.2 / 2024.1 / 2024.2 / 2025.1 / 2025.2, `ceph-ansible`) that resolved
        `ANSIBLE_CONFIG` during that window silently fell through to the image-baked
        `/etc/ansible/ansible.cfg`, which carries a stale `private_key_file` pointer,
        producing `UNREACHABLE` on gather-facts and a silently corrupt fact cache
        for the rest of the deploy.\n\nWith the merge staged before the rsync and
        `--delay-updates` engaged, the live `ansible.cfg` transitions old \u2192 new
        via a single atomic `rename(2)`; there is no absent window. No consumer-side
        change is required \u2014 all three container families use the same three-tier
        ladder against `/ansible/inventory/ansible/ansible.cfg`.\n\n## Test plan\n\n-
        [ ] Rebuild `container-image-inventory-reconciler` from this branch.\n- [
        ] Run `contrib/operator-loop.py` (in `osism/testbed`) against a fresh-deploy
        cloudpod to exercise the reconciler/consumer race over multiple cycles.\n-
        [ ] With a tight `stat`/`inotify` watcher on `/ansible/inventory/ansible/ansible.cfg`
        during a reconciler cycle, confirm the file is never absent (only ever replaced).\n-
        [ ] Confirm no gather-facts `UNREACHABLE` recaps attributable to the silent
        `ANSIBLE_CONFIG` fall-through during repeated deploy loops.\n\n## Notes\n\n-
        Companion hygiene fixes (strip the stale `private_key_file` line from the
        three image-default `ansible.cfg` files, fail-loud guard on `ANSIBLE_CONFIG`
        in `run-generic.sh`, drop `ignore_unreachable: true` from `gather-facts.yml`)
        are tracked separately and do not depend on this change; this PR removes the
        race at its source.\n- The sibling post-rsync writer `generate-clustershell-ansible-file.py`
        at `run.sh:101` opens a smaller window for clustershell consumers. It is not
        currently biting the silent-cache-miss bug (no gather-facts path reads `/inventory/clustershell/`),
        but the same staging pattern would close it and is worth a follow-up PR."
      change_url: https://github.com/osism/container-image-inventory-reconciler/pull/521
      child_jobs: []
      commit_id: b39a51ad41b056593b21732d58c607826c4b5118
      event_id: f27ed020-3caa-11f1-9415-427366a3a4ce
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/64758a92b25f4faab46b30a245fa4702/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/64758a92b25f4faab46b30a245fa4702/work/logs
        result_data_file: /var/lib/zuul/builds/64758a92b25f4faab46b30a245fa4702/work/results.json
        src_root: /var/lib/zuul/builds/64758a92b25f4faab46b30a245fa4702/work/src
        work_root: /var/lib/zuul/builds/64758a92b25f4faab46b30a245fa4702/work
      include_vars: []
      items:
      - branch: main
        change: '521'
        change_message: "Stage ansible.cfg via rsync for atomic updates\n\n## Summary\n\n-
          Render `ansible.cfg` into `/inventory.merge/ansible/` so it ships as part
          of the staging-tree rsync rather than being written directly into `/inventory/ansible/`
          after the rsync completes.\n- Add `--delay-updates` to the `/inventory.merge/
          \u2192 /inventory` rsync so consumers see an atomic `renameat` swap of each
          file, including `ansible.cfg`.\n- Drop the now-unnecessary post-rsync `mkdir
          -p /inventory/ansible` + `python3 /merge-ansible-cfg.py` sequence.\n\n##
          Why\n\nThe previous ordering had a short window (tens to hundreds of milliseconds)
          in which `/inventory/ansible/ansible.cfg` did not exist: the `rsync --delete`
          at `run.sh:84` removed the previous copy, and `merge-ansible-cfg.py` at
          `run.sh:105` had not yet rewritten it. Consumer containers (`osism-ansible`,
          `kolla-ansible` for 2023.2 / 2024.1 / 2024.2 / 2025.1 / 2025.2, `ceph-ansible`)
          that resolved `ANSIBLE_CONFIG` during that window silently fell through
          to the image-baked `/etc/ansible/ansible.cfg`, which carries a stale `private_key_file`
          pointer, producing `UNREACHABLE` on gather-facts and a silently corrupt
          fact cache for the rest of the deploy.\n\nWith the merge staged before the
          rsync and `--delay-updates` engaged, the live `ansible.cfg` transitions
          old \u2192 new via a single atomic `rename(2)`; there is no absent window.
          No consumer-side change is required \u2014 all three container families
          use the same three-tier ladder against `/ansible/inventory/ansible/ansible.cfg`.\n\n##
          Test plan\n\n- [ ] Rebuild `container-image-inventory-reconciler` from this
          branch.\n- [ ] Run `contrib/operator-loop.py` (in `osism/testbed`) against
          a fresh-deploy cloudpod to exercise the reconciler/consumer race over multiple
          cycles.\n- [ ] With a tight `stat`/`inotify` watcher on `/ansible/inventory/ansible/ansible.cfg`
          during a reconciler cycle, confirm the file is never absent (only ever replaced).\n-
          [ ] Confirm no gather-facts `UNREACHABLE` recaps attributable to the silent
          `ANSIBLE_CONFIG` fall-through during repeated deploy loops.\n\n## Notes\n\n-
          Companion hygiene fixes (strip the stale `private_key_file` line from the
          three image-default `ansible.cfg` files, fail-loud guard on `ANSIBLE_CONFIG`
          in `run-generic.sh`, drop `ignore_unreachable: true` from `gather-facts.yml`)
          are tracked separately and do not depend on this change; this PR removes
          the race at its source.\n- The sibling post-rsync writer `generate-clustershell-ansible-file.py`
          at `run.sh:101` opens a smaller window for clustershell consumers. It is
          not currently biting the silent-cache-miss bug (no gather-facts path reads
          `/inventory/clustershell/`), but the same staging pattern would close it
          and is worth a follow-up PR."
        change_url: https://github.com/osism/container-image-inventory-reconciler/pull/521
        commit_id: b39a51ad41b056593b21732d58c607826c4b5118
        patchset: b39a51ad41b056593b21732d58c607826c4b5118
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          name: osism/container-image-inventory-reconciler
          short_name: container-image-inventory-reconciler
          src_dir: src/github.com/osism/container-image-inventory-reconciler
        topic: null
      job: hadolint
      jobtags: []
      max_attempts: 3
      message: U3RhZ2UgYW5zaWJsZS5jZmcgdmlhIHJzeW5jIGZvciBhdG9taWMgdXBkYXRlcwoKIyMgU3VtbWFyeQoKLSBSZW5kZXIgYGFuc2libGUuY2ZnYCBpbnRvIGAvaW52ZW50b3J5Lm1lcmdlL2Fuc2libGUvYCBzbyBpdCBzaGlwcyBhcyBwYXJ0IG9mIHRoZSBzdGFnaW5nLXRyZWUgcnN5bmMgcmF0aGVyIHRoYW4gYmVpbmcgd3JpdHRlbiBkaXJlY3RseSBpbnRvIGAvaW52ZW50b3J5L2Fuc2libGUvYCBhZnRlciB0aGUgcnN5bmMgY29tcGxldGVzLgotIEFkZCBgLS1kZWxheS11cGRhdGVzYCB0byB0aGUgYC9pbnZlbnRvcnkubWVyZ2UvIOKGkiAvaW52ZW50b3J5YCByc3luYyBzbyBjb25zdW1lcnMgc2VlIGFuIGF0b21pYyBgcmVuYW1lYXRgIHN3YXAgb2YgZWFjaCBmaWxlLCBpbmNsdWRpbmcgYGFuc2libGUuY2ZnYC4KLSBEcm9wIHRoZSBub3ctdW5uZWNlc3NhcnkgcG9zdC1yc3luYyBgbWtkaXIgLXAgL2ludmVudG9yeS9hbnNpYmxlYCArIGBweXRob24zIC9tZXJnZS1hbnNpYmxlLWNmZy5weWAgc2VxdWVuY2UuCgojIyBXaHkKClRoZSBwcmV2aW91cyBvcmRlcmluZyBoYWQgYSBzaG9ydCB3aW5kb3cgKHRlbnMgdG8gaHVuZHJlZHMgb2YgbWlsbGlzZWNvbmRzKSBpbiB3aGljaCBgL2ludmVudG9yeS9hbnNpYmxlL2Fuc2libGUuY2ZnYCBkaWQgbm90IGV4aXN0OiB0aGUgYHJzeW5jIC0tZGVsZXRlYCBhdCBgcnVuLnNoOjg0YCByZW1vdmVkIHRoZSBwcmV2aW91cyBjb3B5LCBhbmQgYG1lcmdlLWFuc2libGUtY2ZnLnB5YCBhdCBgcnVuLnNoOjEwNWAgaGFkIG5vdCB5ZXQgcmV3cml0dGVuIGl0LiBDb25zdW1lciBjb250YWluZXJzIChgb3Npc20tYW5zaWJsZWAsIGBrb2xsYS1hbnNpYmxlYCBmb3IgMjAyMy4yIC8gMjAyNC4xIC8gMjAyNC4yIC8gMjAyNS4xIC8gMjAyNS4yLCBgY2VwaC1hbnNpYmxlYCkgdGhhdCByZXNvbHZlZCBgQU5TSUJMRV9DT05GSUdgIGR1cmluZyB0aGF0IHdpbmRvdyBzaWxlbnRseSBmZWxsIHRocm91Z2ggdG8gdGhlIGltYWdlLWJha2VkIGAvZXRjL2Fuc2libGUvYW5zaWJsZS5jZmdgLCB3aGljaCBjYXJyaWVzIGEgc3RhbGUgYHByaXZhdGVfa2V5X2ZpbGVgIHBvaW50ZXIsIHByb2R1Y2luZyBgVU5SRUFDSEFCTEVgIG9uIGdhdGhlci1mYWN0cyBhbmQgYSBzaWxlbnRseSBjb3JydXB0IGZhY3QgY2FjaGUgZm9yIHRoZSByZXN0IG9mIHRoZSBkZXBsb3kuCgpXaXRoIHRoZSBtZXJnZSBzdGFnZWQgYmVmb3JlIHRoZSByc3luYyBhbmQgYC0tZGVsYXktdXBkYXRlc2AgZW5nYWdlZCwgdGhlIGxpdmUgYGFuc2libGUuY2ZnYCB0cmFuc2l0aW9ucyBvbGQg4oaSIG5ldyB2aWEgYSBzaW5nbGUgYXRvbWljIGByZW5hbWUoMilgOyB0aGVyZSBpcyBubyBhYnNlbnQgd2luZG93LiBObyBjb25zdW1lci1zaWRlIGNoYW5nZSBpcyByZXF1aXJlZCDigJQgYWxsIHRocmVlIGNvbnRhaW5lciBmYW1pbGllcyB1c2UgdGhlIHNhbWUgdGhyZWUtdGllciBsYWRkZXIgYWdhaW5zdCBgL2Fuc2libGUvaW52ZW50b3J5L2Fuc2libGUvYW5zaWJsZS5jZmdgLgoKIyMgVGVzdCBwbGFuCgotIFsgXSBSZWJ1aWxkIGBjb250YWluZXItaW1hZ2UtaW52ZW50b3J5LXJlY29uY2lsZXJgIGZyb20gdGhpcyBicmFuY2guCi0gWyBdIFJ1biBgY29udHJpYi9vcGVyYXRvci1sb29wLnB5YCAoaW4gYG9zaXNtL3Rlc3RiZWRgKSBhZ2FpbnN0IGEgZnJlc2gtZGVwbG95IGNsb3VkcG9kIHRvIGV4ZXJjaXNlIHRoZSByZWNvbmNpbGVyL2NvbnN1bWVyIHJhY2Ugb3ZlciBtdWx0aXBsZSBjeWNsZXMuCi0gWyBdIFdpdGggYSB0aWdodCBgc3RhdGAvYGlub3RpZnlgIHdhdGNoZXIgb24gYC9hbnNpYmxlL2ludmVudG9yeS9hbnNpYmxlL2Fuc2libGUuY2ZnYCBkdXJpbmcgYSByZWNvbmNpbGVyIGN5Y2xlLCBjb25maXJtIHRoZSBmaWxlIGlzIG5ldmVyIGFic2VudCAob25seSBldmVyIHJlcGxhY2VkKS4KLSBbIF0gQ29uZmlybSBubyBnYXRoZXItZmFjdHMgYFVOUkVBQ0hBQkxFYCByZWNhcHMgYXR0cmlidXRhYmxlIHRvIHRoZSBzaWxlbnQgYEFOU0lCTEVfQ09ORklHYCBmYWxsLXRocm91Z2ggZHVyaW5nIHJlcGVhdGVkIGRlcGxveSBsb29wcy4KCiMjIE5vdGVzCgotIENvbXBhbmlvbiBoeWdpZW5lIGZpeGVzIChzdHJpcCB0aGUgc3RhbGUgYHByaXZhdGVfa2V5X2ZpbGVgIGxpbmUgZnJvbSB0aGUgdGhyZWUgaW1hZ2UtZGVmYXVsdCBgYW5zaWJsZS5jZmdgIGZpbGVzLCBmYWlsLWxvdWQgZ3VhcmQgb24gYEFOU0lCTEVfQ09ORklHYCBpbiBgcnVuLWdlbmVyaWMuc2hgLCBkcm9wIGBpZ25vcmVfdW5yZWFjaGFibGU6IHRydWVgIGZyb20gYGdhdGhlci1mYWN0cy55bWxgKSBhcmUgdHJhY2tlZCBzZXBhcmF0ZWx5IGFuZCBkbyBub3QgZGVwZW5kIG9uIHRoaXMgY2hhbmdlOyB0aGlzIFBSIHJlbW92ZXMgdGhlIHJhY2UgYXQgaXRzIHNvdXJjZS4KLSBUaGUgc2libGluZyBwb3N0LXJzeW5jIHdyaXRlciBgZ2VuZXJhdGUtY2x1c3RlcnNoZWxsLWFuc2libGUtZmlsZS5weWAgYXQgYHJ1bi5zaDoxMDFgIG9wZW5zIGEgc21hbGxlciB3aW5kb3cgZm9yIGNsdXN0ZXJzaGVsbCBjb25zdW1lcnMuIEl0IGlzIG5vdCBjdXJyZW50bHkgYml0aW5nIHRoZSBzaWxlbnQtY2FjaGUtbWlzcyBidWcgKG5vIGdhdGhlci1mYWN0cyBwYXRoIHJlYWRzIGAvaW52ZW50b3J5L2NsdXN0ZXJzaGVsbC9gKSwgYnV0IHRoZSBzYW1lIHN0YWdpbmcgcGF0dGVybiB3b3VsZCBjbG9zZSBpdCBhbmQgaXMgd29ydGggYSBmb2xsb3ctdXAgUFIu
      patchset: b39a51ad41b056593b21732d58c607826c4b5118
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 4f450aa36c28b035ce97359a888edbd7599eaf31
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 8ad17ed1be1f63229e054fab94af45f2511a98ea
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 4f450aa36c28b035ce97359a888edbd7599eaf31
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 397240f42127868e42e86e6aeb120c2cb092d117
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/hadolint/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_0/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_1/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_1/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_2/openinfra-zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-image-inventory-reconciler
        name: osism/container-image-inventory-reconciler
        short_name: container-image-inventory-reconciler
        src_dir: src/github.com/osism/container-image-inventory-reconciler
      projects:
        github.com/osism/container-image-inventory-reconciler:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-image-inventory-reconciler
          checkout: main
          checkout_description: zuul branch
          commit: e294279a3b55164024789f76e176763f908b3e86
          name: osism/container-image-inventory-reconciler
          required: false
          short_name: container-image-inventory-reconciler
          src_dir: src/github.com/osism/container-image-inventory-reconciler
      ref: refs/pull/521/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
