all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    ubuntu-noble:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe41:f3ba
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      docker_namespace: kolla
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: b6db3b0d-d091-4f4e-9383-5053ce819d66
        host_id: d2c528664e1bd332192bb574345deb0c6c7158061222e4a6c036b5ef
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe41:f3ba
        label: ubuntu-noble
        node_properties: {}
        private_ipv4: 10.128.0.100
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.247
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe41:f3ba
        region: null
        slot: null
      push_images: false
      version_openstack: '2024.1'
  vars:
    docker_namespace: kolla
    push_images: false
    version_openstack: '2024.1'
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job container-images-kolla-patch explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/container-images-kolla/.zuul.yaml@main#76>'
      - '<Job container-images-kolla-patch-2024.1 explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/container-images-kolla/.zuul.yaml@main#94>'
      - '<Job container-images-kolla-patch-2024.1 explicit: None implied: None source:
        osism/container-images-kolla/.zuul.yaml@main#213>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 3b14e20952fa42389a15118214b02e1a
      build_refs:
      - branch: main
        change: '765'
        change_message: "Fail the build when a patch is never applied\n\nStacked on:\n\n-
          osism/container-images-kolla#764\n\nThat PR drops a keystone patch that
          went upstream. This one adds a check so the\nnext one is found by CI instead
          of by a broken nightly build, and fixes two\npatch directories that were
          already dead.\n\n## Why\n\n`003-patch.sh` derives the patch directory from
          the tarball's top-level\ndirectory. A missing patch directory is the ordinary
          \"this project has no\npatches\" case, so when a name stops matching, the
          patch is skipped and nothing\nis logged. `patches/*/neutron-dynamic-routing/`
          has been skipped that way since\nopendev started shipping PEP 625-normalized
          sdists: the tarball extracts to\n`neutron_dynamic_routing-<version>`, which
          never matches the hyphenated\ndirectory here.\n\n## What the check does\n\nEvery
          apply site records into a manifest; at the end of `003-patch.sh` the\nmanifest
          is compared against every file under the release's patch trees.\nAnything
          present but unapplied fails the build with exit 3, naming the file.\n`find
          -type f` rather than `-name '*.patch'`, so a stray `fix.diff` is loud too.\n\nThe
          first commit deliberately leaves `neutron-dynamic-routing` broken, so the\ndetector
          is exercised by a real, pre-existing failure. Zuul only tests the head\ncommit,
          so here is that intermediate state, run locally:\n\n```\n+ verify_all_patches_applied
          /home/.../.patches-applied patches/2025.1 patches/kolla-build/2025.1\nERROR:
          patch files present in the repository but never applied:\n  patches/2025.1/neutron-dynamic-routing/bug-2023632.patch\n+
          return 3\n+ exit 3\n```\n\nThe second commit makes it pass by probing hyphen/underscore
          spellings, each\ntree independently. `bug-2023632.patch` dry-runs clean
          against all three\naffected tarballs (2025.1 offset 6, 2025.2 offset 6,
          2024.1 exact), so waking\nthese patches up does not break the build.\n\nThe
          third commit is the check paying for itself on its first real run: it found\n`patches/2024.2/skyline/953719.patch`,
          dead because its directory (`skyline`) is\na truncation of the derived name
          (`skyline_apiserver`) \u2014 not a spelling variant,\nso commit 2 does not
          reach it either. That patch is already upstream (forward\ndry-run reports
          `Reversed (or previously applied)`, and `nginx.conf.j2` carries\nthe TLS
          lines), so it is dropped rather than renamed.\n\n## Also in here\n\n- The
          real `patch` invocation is now gated with `|| exit 1`. Previously only the\n
          \ `--dry-run` was, so a real apply failing after a passing dry-run left
          the build\n  running with the patch unapplied.\n- A cached tarball belonging
          to a project with patches or an overlay is\n  re-downloaded rather than
          reused: it has already been repacked with its patches\n  applied, and can
          predate a change to the patch set. CI always starts cold, so\n  this only
          affects local builds.\n- Each tarball is processed exactly once. The generated
          config repeats an entry\n  for projects producing more than one image section.\n\n##
          Verification\n\nAll four releases run `001` \u2192 `002` \u2192 `003` locally
          to exit 0, with the reported\ncount independently matching `find patches/<rel>
          patches/kolla-build/<rel> -type f | wc -l`:\n\n| release | exit | patch
          files |\n|---|---|---|\n| 2024.1 | 0 | 14 |\n| 2024.2 | 0 | 27 |\n| 2025.1
          | 0 | 14 |\n| 2025.2 | 0 | 14 |\n\n2025.1 and 2024.2 both now log\n`APPLY
          PATCH patches/<rel>/neutron-dynamic-routing/bug-2023632.patch`. For 2025.1\nthat
          has never appeared in a build before.\n\nFixture tests for the new library
          live in `scripts/test-patch-lib.sh` and run in\nall four `container-images-kolla-patch-*`
          check jobs, ahead of the pipeline, so a\nbroken library fails in seconds
          rather than after two dozen tarball downloads.\n\n## One thing reviewers
          should know\n\nThe expected set is repo-side, but the applied set depends
          on `kolla-build.conf`,\ngenerated from `osism/release`. If a patched project
          is dropped there, its tarball\nis never downloaded and the check exits 3
          \u2014 a nightly build stopped by a change in\nanother repo. That is the
          intended trade, loud over silent, and every repo-side\ntrigger is caught
          by the check jobs on a PR first. Worth recognising an exit 3 as\n\"expected
          set vs. built set\" rather than \"patch broken\".\n\nNot covered: `kolla-patches/<rel>/<image>/`,
          applied by kolla-build itself via\n`patches_path`. Same failure family,
          different mechanism; tracked separately.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/container-images-kolla/pull/765
        commit_id: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
        patchset: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images-kolla
          name: osism/container-images-kolla
          short_name: container-images-kolla
        src_dir: src/github.com/osism/container-images-kolla
        topic: null
      buildset: 49495e075c174821a545ae33a06a622c
      buildset_refs:
      - branch: main
        change: '765'
        change_message: "Fail the build when a patch is never applied\n\nStacked on:\n\n-
          osism/container-images-kolla#764\n\nThat PR drops a keystone patch that
          went upstream. This one adds a check so the\nnext one is found by CI instead
          of by a broken nightly build, and fixes two\npatch directories that were
          already dead.\n\n## Why\n\n`003-patch.sh` derives the patch directory from
          the tarball's top-level\ndirectory. A missing patch directory is the ordinary
          \"this project has no\npatches\" case, so when a name stops matching, the
          patch is skipped and nothing\nis logged. `patches/*/neutron-dynamic-routing/`
          has been skipped that way since\nopendev started shipping PEP 625-normalized
          sdists: the tarball extracts to\n`neutron_dynamic_routing-<version>`, which
          never matches the hyphenated\ndirectory here.\n\n## What the check does\n\nEvery
          apply site records into a manifest; at the end of `003-patch.sh` the\nmanifest
          is compared against every file under the release's patch trees.\nAnything
          present but unapplied fails the build with exit 3, naming the file.\n`find
          -type f` rather than `-name '*.patch'`, so a stray `fix.diff` is loud too.\n\nThe
          first commit deliberately leaves `neutron-dynamic-routing` broken, so the\ndetector
          is exercised by a real, pre-existing failure. Zuul only tests the head\ncommit,
          so here is that intermediate state, run locally:\n\n```\n+ verify_all_patches_applied
          /home/.../.patches-applied patches/2025.1 patches/kolla-build/2025.1\nERROR:
          patch files present in the repository but never applied:\n  patches/2025.1/neutron-dynamic-routing/bug-2023632.patch\n+
          return 3\n+ exit 3\n```\n\nThe second commit makes it pass by probing hyphen/underscore
          spellings, each\ntree independently. `bug-2023632.patch` dry-runs clean
          against all three\naffected tarballs (2025.1 offset 6, 2025.2 offset 6,
          2024.1 exact), so waking\nthese patches up does not break the build.\n\nThe
          third commit is the check paying for itself on its first real run: it found\n`patches/2024.2/skyline/953719.patch`,
          dead because its directory (`skyline`) is\na truncation of the derived name
          (`skyline_apiserver`) \u2014 not a spelling variant,\nso commit 2 does not
          reach it either. That patch is already upstream (forward\ndry-run reports
          `Reversed (or previously applied)`, and `nginx.conf.j2` carries\nthe TLS
          lines), so it is dropped rather than renamed.\n\n## Also in here\n\n- The
          real `patch` invocation is now gated with `|| exit 1`. Previously only the\n
          \ `--dry-run` was, so a real apply failing after a passing dry-run left
          the build\n  running with the patch unapplied.\n- A cached tarball belonging
          to a project with patches or an overlay is\n  re-downloaded rather than
          reused: it has already been repacked with its patches\n  applied, and can
          predate a change to the patch set. CI always starts cold, so\n  this only
          affects local builds.\n- Each tarball is processed exactly once. The generated
          config repeats an entry\n  for projects producing more than one image section.\n\n##
          Verification\n\nAll four releases run `001` \u2192 `002` \u2192 `003` locally
          to exit 0, with the reported\ncount independently matching `find patches/<rel>
          patches/kolla-build/<rel> -type f | wc -l`:\n\n| release | exit | patch
          files |\n|---|---|---|\n| 2024.1 | 0 | 14 |\n| 2024.2 | 0 | 27 |\n| 2025.1
          | 0 | 14 |\n| 2025.2 | 0 | 14 |\n\n2025.1 and 2024.2 both now log\n`APPLY
          PATCH patches/<rel>/neutron-dynamic-routing/bug-2023632.patch`. For 2025.1\nthat
          has never appeared in a build before.\n\nFixture tests for the new library
          live in `scripts/test-patch-lib.sh` and run in\nall four `container-images-kolla-patch-*`
          check jobs, ahead of the pipeline, so a\nbroken library fails in seconds
          rather than after two dozen tarball downloads.\n\n## One thing reviewers
          should know\n\nThe expected set is repo-side, but the applied set depends
          on `kolla-build.conf`,\ngenerated from `osism/release`. If a patched project
          is dropped there, its tarball\nis never downloaded and the check exits 3
          \u2014 a nightly build stopped by a change in\nanother repo. That is the
          intended trade, loud over silent, and every repo-side\ntrigger is caught
          by the check jobs on a PR first. Worth recognising an exit 3 as\n\"expected
          set vs. built set\" rather than \"patch broken\".\n\nNot covered: `kolla-patches/<rel>/<image>/`,
          applied by kolla-build itself via\n`patches_path`. Same failure family,
          different mechanism; tracked separately.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/container-images-kolla/pull/765
        commit_id: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
        patchset: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images-kolla
          name: osism/container-images-kolla
          short_name: container-images-kolla
        src_dir: src/github.com/osism/container-images-kolla
        topic: null
      change: '765'
      change_message: "Fail the build when a patch is never applied\n\nStacked on:\n\n-
        osism/container-images-kolla#764\n\nThat PR drops a keystone patch that went
        upstream. This one adds a check so the\nnext one is found by CI instead of
        by a broken nightly build, and fixes two\npatch directories that were already
        dead.\n\n## Why\n\n`003-patch.sh` derives the patch directory from the tarball's
        top-level\ndirectory. A missing patch directory is the ordinary \"this project
        has no\npatches\" case, so when a name stops matching, the patch is skipped
        and nothing\nis logged. `patches/*/neutron-dynamic-routing/` has been skipped
        that way since\nopendev started shipping PEP 625-normalized sdists: the tarball
        extracts to\n`neutron_dynamic_routing-<version>`, which never matches the
        hyphenated\ndirectory here.\n\n## What the check does\n\nEvery apply site
        records into a manifest; at the end of `003-patch.sh` the\nmanifest is compared
        against every file under the release's patch trees.\nAnything present but
        unapplied fails the build with exit 3, naming the file.\n`find -type f` rather
        than `-name '*.patch'`, so a stray `fix.diff` is loud too.\n\nThe first commit
        deliberately leaves `neutron-dynamic-routing` broken, so the\ndetector is
        exercised by a real, pre-existing failure. Zuul only tests the head\ncommit,
        so here is that intermediate state, run locally:\n\n```\n+ verify_all_patches_applied
        /home/.../.patches-applied patches/2025.1 patches/kolla-build/2025.1\nERROR:
        patch files present in the repository but never applied:\n  patches/2025.1/neutron-dynamic-routing/bug-2023632.patch\n+
        return 3\n+ exit 3\n```\n\nThe second commit makes it pass by probing hyphen/underscore
        spellings, each\ntree independently. `bug-2023632.patch` dry-runs clean against
        all three\naffected tarballs (2025.1 offset 6, 2025.2 offset 6, 2024.1 exact),
        so waking\nthese patches up does not break the build.\n\nThe third commit
        is the check paying for itself on its first real run: it found\n`patches/2024.2/skyline/953719.patch`,
        dead because its directory (`skyline`) is\na truncation of the derived name
        (`skyline_apiserver`) \u2014 not a spelling variant,\nso commit 2 does not
        reach it either. That patch is already upstream (forward\ndry-run reports
        `Reversed (or previously applied)`, and `nginx.conf.j2` carries\nthe TLS lines),
        so it is dropped rather than renamed.\n\n## Also in here\n\n- The real `patch`
        invocation is now gated with `|| exit 1`. Previously only the\n  `--dry-run`
        was, so a real apply failing after a passing dry-run left the build\n  running
        with the patch unapplied.\n- A cached tarball belonging to a project with
        patches or an overlay is\n  re-downloaded rather than reused: it has already
        been repacked with its patches\n  applied, and can predate a change to the
        patch set. CI always starts cold, so\n  this only affects local builds.\n-
        Each tarball is processed exactly once. The generated config repeats an entry\n
        \ for projects producing more than one image section.\n\n## Verification\n\nAll
        four releases run `001` \u2192 `002` \u2192 `003` locally to exit 0, with
        the reported\ncount independently matching `find patches/<rel> patches/kolla-build/<rel>
        -type f | wc -l`:\n\n| release | exit | patch files |\n|---|---|---|\n| 2024.1
        | 0 | 14 |\n| 2024.2 | 0 | 27 |\n| 2025.1 | 0 | 14 |\n| 2025.2 | 0 | 14 |\n\n2025.1
        and 2024.2 both now log\n`APPLY PATCH patches/<rel>/neutron-dynamic-routing/bug-2023632.patch`.
        For 2025.1\nthat has never appeared in a build before.\n\nFixture tests for
        the new library live in `scripts/test-patch-lib.sh` and run in\nall four `container-images-kolla-patch-*`
        check jobs, ahead of the pipeline, so a\nbroken library fails in seconds rather
        than after two dozen tarball downloads.\n\n## One thing reviewers should know\n\nThe
        expected set is repo-side, but the applied set depends on `kolla-build.conf`,\ngenerated
        from `osism/release`. If a patched project is dropped there, its tarball\nis
        never downloaded and the check exits 3 \u2014 a nightly build stopped by a
        change in\nanother repo. That is the intended trade, loud over silent, and
        every repo-side\ntrigger is caught by the check jobs on a PR first. Worth
        recognising an exit 3 as\n\"expected set vs. built set\" rather than \"patch
        broken\".\n\nNot covered: `kolla-patches/<rel>/<image>/`, applied by kolla-build
        itself via\n`patches_path`. Same failure family, different mechanism; tracked
        separately.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/container-images-kolla/pull/765
      child_jobs: []
      commit_id: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
      event_id: dbb9f400-9272-11f1-9010-c7b580f2388e
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/3b14e20952fa42389a15118214b02e1a/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/3b14e20952fa42389a15118214b02e1a/work/logs
        result_data_file: /var/lib/zuul/builds/3b14e20952fa42389a15118214b02e1a/work/results.json
        src_root: /var/lib/zuul/builds/3b14e20952fa42389a15118214b02e1a/work/src
        work_root: /var/lib/zuul/builds/3b14e20952fa42389a15118214b02e1a/work
      include_vars: []
      items:
      - branch: main
        change: '765'
        change_message: "Fail the build when a patch is never applied\n\nStacked on:\n\n-
          osism/container-images-kolla#764\n\nThat PR drops a keystone patch that
          went upstream. This one adds a check so the\nnext one is found by CI instead
          of by a broken nightly build, and fixes two\npatch directories that were
          already dead.\n\n## Why\n\n`003-patch.sh` derives the patch directory from
          the tarball's top-level\ndirectory. A missing patch directory is the ordinary
          \"this project has no\npatches\" case, so when a name stops matching, the
          patch is skipped and nothing\nis logged. `patches/*/neutron-dynamic-routing/`
          has been skipped that way since\nopendev started shipping PEP 625-normalized
          sdists: the tarball extracts to\n`neutron_dynamic_routing-<version>`, which
          never matches the hyphenated\ndirectory here.\n\n## What the check does\n\nEvery
          apply site records into a manifest; at the end of `003-patch.sh` the\nmanifest
          is compared against every file under the release's patch trees.\nAnything
          present but unapplied fails the build with exit 3, naming the file.\n`find
          -type f` rather than `-name '*.patch'`, so a stray `fix.diff` is loud too.\n\nThe
          first commit deliberately leaves `neutron-dynamic-routing` broken, so the\ndetector
          is exercised by a real, pre-existing failure. Zuul only tests the head\ncommit,
          so here is that intermediate state, run locally:\n\n```\n+ verify_all_patches_applied
          /home/.../.patches-applied patches/2025.1 patches/kolla-build/2025.1\nERROR:
          patch files present in the repository but never applied:\n  patches/2025.1/neutron-dynamic-routing/bug-2023632.patch\n+
          return 3\n+ exit 3\n```\n\nThe second commit makes it pass by probing hyphen/underscore
          spellings, each\ntree independently. `bug-2023632.patch` dry-runs clean
          against all three\naffected tarballs (2025.1 offset 6, 2025.2 offset 6,
          2024.1 exact), so waking\nthese patches up does not break the build.\n\nThe
          third commit is the check paying for itself on its first real run: it found\n`patches/2024.2/skyline/953719.patch`,
          dead because its directory (`skyline`) is\na truncation of the derived name
          (`skyline_apiserver`) \u2014 not a spelling variant,\nso commit 2 does not
          reach it either. That patch is already upstream (forward\ndry-run reports
          `Reversed (or previously applied)`, and `nginx.conf.j2` carries\nthe TLS
          lines), so it is dropped rather than renamed.\n\n## Also in here\n\n- The
          real `patch` invocation is now gated with `|| exit 1`. Previously only the\n
          \ `--dry-run` was, so a real apply failing after a passing dry-run left
          the build\n  running with the patch unapplied.\n- A cached tarball belonging
          to a project with patches or an overlay is\n  re-downloaded rather than
          reused: it has already been repacked with its patches\n  applied, and can
          predate a change to the patch set. CI always starts cold, so\n  this only
          affects local builds.\n- Each tarball is processed exactly once. The generated
          config repeats an entry\n  for projects producing more than one image section.\n\n##
          Verification\n\nAll four releases run `001` \u2192 `002` \u2192 `003` locally
          to exit 0, with the reported\ncount independently matching `find patches/<rel>
          patches/kolla-build/<rel> -type f | wc -l`:\n\n| release | exit | patch
          files |\n|---|---|---|\n| 2024.1 | 0 | 14 |\n| 2024.2 | 0 | 27 |\n| 2025.1
          | 0 | 14 |\n| 2025.2 | 0 | 14 |\n\n2025.1 and 2024.2 both now log\n`APPLY
          PATCH patches/<rel>/neutron-dynamic-routing/bug-2023632.patch`. For 2025.1\nthat
          has never appeared in a build before.\n\nFixture tests for the new library
          live in `scripts/test-patch-lib.sh` and run in\nall four `container-images-kolla-patch-*`
          check jobs, ahead of the pipeline, so a\nbroken library fails in seconds
          rather than after two dozen tarball downloads.\n\n## One thing reviewers
          should know\n\nThe expected set is repo-side, but the applied set depends
          on `kolla-build.conf`,\ngenerated from `osism/release`. If a patched project
          is dropped there, its tarball\nis never downloaded and the check exits 3
          \u2014 a nightly build stopped by a change in\nanother repo. That is the
          intended trade, loud over silent, and every repo-side\ntrigger is caught
          by the check jobs on a PR first. Worth recognising an exit 3 as\n\"expected
          set vs. built set\" rather than \"patch broken\".\n\nNot covered: `kolla-patches/<rel>/<image>/`,
          applied by kolla-build itself via\n`patches_path`. Same failure family,
          different mechanism; tracked separately.\n\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/container-images-kolla/pull/765
        commit_id: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
        patchset: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images-kolla
          name: osism/container-images-kolla
          short_name: container-images-kolla
          src_dir: src/github.com/osism/container-images-kolla
        topic: null
      job: container-images-kolla-patch-2024.1
      jobtags: []
      max_attempts: 3
      message: RmFpbCB0aGUgYnVpbGQgd2hlbiBhIHBhdGNoIGlzIG5ldmVyIGFwcGxpZWQKClN0YWNrZWQgb246CgotIG9zaXNtL2NvbnRhaW5lci1pbWFnZXMta29sbGEjNzY0CgpUaGF0IFBSIGRyb3BzIGEga2V5c3RvbmUgcGF0Y2ggdGhhdCB3ZW50IHVwc3RyZWFtLiBUaGlzIG9uZSBhZGRzIGEgY2hlY2sgc28gdGhlCm5leHQgb25lIGlzIGZvdW5kIGJ5IENJIGluc3RlYWQgb2YgYnkgYSBicm9rZW4gbmlnaHRseSBidWlsZCwgYW5kIGZpeGVzIHR3bwpwYXRjaCBkaXJlY3RvcmllcyB0aGF0IHdlcmUgYWxyZWFkeSBkZWFkLgoKIyMgV2h5CgpgMDAzLXBhdGNoLnNoYCBkZXJpdmVzIHRoZSBwYXRjaCBkaXJlY3RvcnkgZnJvbSB0aGUgdGFyYmFsbCdzIHRvcC1sZXZlbApkaXJlY3RvcnkuIEEgbWlzc2luZyBwYXRjaCBkaXJlY3RvcnkgaXMgdGhlIG9yZGluYXJ5ICJ0aGlzIHByb2plY3QgaGFzIG5vCnBhdGNoZXMiIGNhc2UsIHNvIHdoZW4gYSBuYW1lIHN0b3BzIG1hdGNoaW5nLCB0aGUgcGF0Y2ggaXMgc2tpcHBlZCBhbmQgbm90aGluZwppcyBsb2dnZWQuIGBwYXRjaGVzLyovbmV1dHJvbi1keW5hbWljLXJvdXRpbmcvYCBoYXMgYmVlbiBza2lwcGVkIHRoYXQgd2F5IHNpbmNlCm9wZW5kZXYgc3RhcnRlZCBzaGlwcGluZyBQRVAgNjI1LW5vcm1hbGl6ZWQgc2Rpc3RzOiB0aGUgdGFyYmFsbCBleHRyYWN0cyB0bwpgbmV1dHJvbl9keW5hbWljX3JvdXRpbmctPHZlcnNpb24+YCwgd2hpY2ggbmV2ZXIgbWF0Y2hlcyB0aGUgaHlwaGVuYXRlZApkaXJlY3RvcnkgaGVyZS4KCiMjIFdoYXQgdGhlIGNoZWNrIGRvZXMKCkV2ZXJ5IGFwcGx5IHNpdGUgcmVjb3JkcyBpbnRvIGEgbWFuaWZlc3Q7IGF0IHRoZSBlbmQgb2YgYDAwMy1wYXRjaC5zaGAgdGhlCm1hbmlmZXN0IGlzIGNvbXBhcmVkIGFnYWluc3QgZXZlcnkgZmlsZSB1bmRlciB0aGUgcmVsZWFzZSdzIHBhdGNoIHRyZWVzLgpBbnl0aGluZyBwcmVzZW50IGJ1dCB1bmFwcGxpZWQgZmFpbHMgdGhlIGJ1aWxkIHdpdGggZXhpdCAzLCBuYW1pbmcgdGhlIGZpbGUuCmBmaW5kIC10eXBlIGZgIHJhdGhlciB0aGFuIGAtbmFtZSAnKi5wYXRjaCdgLCBzbyBhIHN0cmF5IGBmaXguZGlmZmAgaXMgbG91ZCB0b28uCgpUaGUgZmlyc3QgY29tbWl0IGRlbGliZXJhdGVseSBsZWF2ZXMgYG5ldXRyb24tZHluYW1pYy1yb3V0aW5nYCBicm9rZW4sIHNvIHRoZQpkZXRlY3RvciBpcyBleGVyY2lzZWQgYnkgYSByZWFsLCBwcmUtZXhpc3RpbmcgZmFpbHVyZS4gWnV1bCBvbmx5IHRlc3RzIHRoZSBoZWFkCmNvbW1pdCwgc28gaGVyZSBpcyB0aGF0IGludGVybWVkaWF0ZSBzdGF0ZSwgcnVuIGxvY2FsbHk6CgpgYGAKKyB2ZXJpZnlfYWxsX3BhdGNoZXNfYXBwbGllZCAvaG9tZS8uLi4vLnBhdGNoZXMtYXBwbGllZCBwYXRjaGVzLzIwMjUuMSBwYXRjaGVzL2tvbGxhLWJ1aWxkLzIwMjUuMQpFUlJPUjogcGF0Y2ggZmlsZXMgcHJlc2VudCBpbiB0aGUgcmVwb3NpdG9yeSBidXQgbmV2ZXIgYXBwbGllZDoKICBwYXRjaGVzLzIwMjUuMS9uZXV0cm9uLWR5bmFtaWMtcm91dGluZy9idWctMjAyMzYzMi5wYXRjaAorIHJldHVybiAzCisgZXhpdCAzCmBgYAoKVGhlIHNlY29uZCBjb21taXQgbWFrZXMgaXQgcGFzcyBieSBwcm9iaW5nIGh5cGhlbi91bmRlcnNjb3JlIHNwZWxsaW5ncywgZWFjaAp0cmVlIGluZGVwZW5kZW50bHkuIGBidWctMjAyMzYzMi5wYXRjaGAgZHJ5LXJ1bnMgY2xlYW4gYWdhaW5zdCBhbGwgdGhyZWUKYWZmZWN0ZWQgdGFyYmFsbHMgKDIwMjUuMSBvZmZzZXQgNiwgMjAyNS4yIG9mZnNldCA2LCAyMDI0LjEgZXhhY3QpLCBzbyB3YWtpbmcKdGhlc2UgcGF0Y2hlcyB1cCBkb2VzIG5vdCBicmVhayB0aGUgYnVpbGQuCgpUaGUgdGhpcmQgY29tbWl0IGlzIHRoZSBjaGVjayBwYXlpbmcgZm9yIGl0c2VsZiBvbiBpdHMgZmlyc3QgcmVhbCBydW46IGl0IGZvdW5kCmBwYXRjaGVzLzIwMjQuMi9za3lsaW5lLzk1MzcxOS5wYXRjaGAsIGRlYWQgYmVjYXVzZSBpdHMgZGlyZWN0b3J5IChgc2t5bGluZWApIGlzCmEgdHJ1bmNhdGlvbiBvZiB0aGUgZGVyaXZlZCBuYW1lIChgc2t5bGluZV9hcGlzZXJ2ZXJgKSDigJQgbm90IGEgc3BlbGxpbmcgdmFyaWFudCwKc28gY29tbWl0IDIgZG9lcyBub3QgcmVhY2ggaXQgZWl0aGVyLiBUaGF0IHBhdGNoIGlzIGFscmVhZHkgdXBzdHJlYW0gKGZvcndhcmQKZHJ5LXJ1biByZXBvcnRzIGBSZXZlcnNlZCAob3IgcHJldmlvdXNseSBhcHBsaWVkKWAsIGFuZCBgbmdpbnguY29uZi5qMmAgY2Fycmllcwp0aGUgVExTIGxpbmVzKSwgc28gaXQgaXMgZHJvcHBlZCByYXRoZXIgdGhhbiByZW5hbWVkLgoKIyMgQWxzbyBpbiBoZXJlCgotIFRoZSByZWFsIGBwYXRjaGAgaW52b2NhdGlvbiBpcyBub3cgZ2F0ZWQgd2l0aCBgfHwgZXhpdCAxYC4gUHJldmlvdXNseSBvbmx5IHRoZQogIGAtLWRyeS1ydW5gIHdhcywgc28gYSByZWFsIGFwcGx5IGZhaWxpbmcgYWZ0ZXIgYSBwYXNzaW5nIGRyeS1ydW4gbGVmdCB0aGUgYnVpbGQKICBydW5uaW5nIHdpdGggdGhlIHBhdGNoIHVuYXBwbGllZC4KLSBBIGNhY2hlZCB0YXJiYWxsIGJlbG9uZ2luZyB0byBhIHByb2plY3Qgd2l0aCBwYXRjaGVzIG9yIGFuIG92ZXJsYXkgaXMKICByZS1kb3dubG9hZGVkIHJhdGhlciB0aGFuIHJldXNlZDogaXQgaGFzIGFscmVhZHkgYmVlbiByZXBhY2tlZCB3aXRoIGl0cyBwYXRjaGVzCiAgYXBwbGllZCwgYW5kIGNhbiBwcmVkYXRlIGEgY2hhbmdlIHRvIHRoZSBwYXRjaCBzZXQuIENJIGFsd2F5cyBzdGFydHMgY29sZCwgc28KICB0aGlzIG9ubHkgYWZmZWN0cyBsb2NhbCBidWlsZHMuCi0gRWFjaCB0YXJiYWxsIGlzIHByb2Nlc3NlZCBleGFjdGx5IG9uY2UuIFRoZSBnZW5lcmF0ZWQgY29uZmlnIHJlcGVhdHMgYW4gZW50cnkKICBmb3IgcHJvamVjdHMgcHJvZHVjaW5nIG1vcmUgdGhhbiBvbmUgaW1hZ2Ugc2VjdGlvbi4KCiMjIFZlcmlmaWNhdGlvbgoKQWxsIGZvdXIgcmVsZWFzZXMgcnVuIGAwMDFgIOKGkiBgMDAyYCDihpIgYDAwM2AgbG9jYWxseSB0byBleGl0IDAsIHdpdGggdGhlIHJlcG9ydGVkCmNvdW50IGluZGVwZW5kZW50bHkgbWF0Y2hpbmcgYGZpbmQgcGF0Y2hlcy88cmVsPiBwYXRjaGVzL2tvbGxhLWJ1aWxkLzxyZWw+IC10eXBlIGYgfCB3YyAtbGA6Cgp8IHJlbGVhc2UgfCBleGl0IHwgcGF0Y2ggZmlsZXMgfAp8LS0tfC0tLXwtLS18CnwgMjAyNC4xIHwgMCB8IDE0IHwKfCAyMDI0LjIgfCAwIHwgMjcgfAp8IDIwMjUuMSB8IDAgfCAxNCB8CnwgMjAyNS4yIHwgMCB8IDE0IHwKCjIwMjUuMSBhbmQgMjAyNC4yIGJvdGggbm93IGxvZwpgQVBQTFkgUEFUQ0ggcGF0Y2hlcy88cmVsPi9uZXV0cm9uLWR5bmFtaWMtcm91dGluZy9idWctMjAyMzYzMi5wYXRjaGAuIEZvciAyMDI1LjEKdGhhdCBoYXMgbmV2ZXIgYXBwZWFyZWQgaW4gYSBidWlsZCBiZWZvcmUuCgpGaXh0dXJlIHRlc3RzIGZvciB0aGUgbmV3IGxpYnJhcnkgbGl2ZSBpbiBgc2NyaXB0cy90ZXN0LXBhdGNoLWxpYi5zaGAgYW5kIHJ1biBpbgphbGwgZm91ciBgY29udGFpbmVyLWltYWdlcy1rb2xsYS1wYXRjaC0qYCBjaGVjayBqb2JzLCBhaGVhZCBvZiB0aGUgcGlwZWxpbmUsIHNvIGEKYnJva2VuIGxpYnJhcnkgZmFpbHMgaW4gc2Vjb25kcyByYXRoZXIgdGhhbiBhZnRlciB0d28gZG96ZW4gdGFyYmFsbCBkb3dubG9hZHMuCgojIyBPbmUgdGhpbmcgcmV2aWV3ZXJzIHNob3VsZCBrbm93CgpUaGUgZXhwZWN0ZWQgc2V0IGlzIHJlcG8tc2lkZSwgYnV0IHRoZSBhcHBsaWVkIHNldCBkZXBlbmRzIG9uIGBrb2xsYS1idWlsZC5jb25mYCwKZ2VuZXJhdGVkIGZyb20gYG9zaXNtL3JlbGVhc2VgLiBJZiBhIHBhdGNoZWQgcHJvamVjdCBpcyBkcm9wcGVkIHRoZXJlLCBpdHMgdGFyYmFsbAppcyBuZXZlciBkb3dubG9hZGVkIGFuZCB0aGUgY2hlY2sgZXhpdHMgMyDigJQgYSBuaWdodGx5IGJ1aWxkIHN0b3BwZWQgYnkgYSBjaGFuZ2UgaW4KYW5vdGhlciByZXBvLiBUaGF0IGlzIHRoZSBpbnRlbmRlZCB0cmFkZSwgbG91ZCBvdmVyIHNpbGVudCwgYW5kIGV2ZXJ5IHJlcG8tc2lkZQp0cmlnZ2VyIGlzIGNhdWdodCBieSB0aGUgY2hlY2sgam9icyBvbiBhIFBSIGZpcnN0LiBXb3J0aCByZWNvZ25pc2luZyBhbiBleGl0IDMgYXMKImV4cGVjdGVkIHNldCB2cy4gYnVpbHQgc2V0IiByYXRoZXIgdGhhbiAicGF0Y2ggYnJva2VuIi4KCk5vdCBjb3ZlcmVkOiBga29sbGEtcGF0Y2hlcy88cmVsPi88aW1hZ2U+L2AsIGFwcGxpZWQgYnkga29sbGEtYnVpbGQgaXRzZWxmIHZpYQpgcGF0Y2hlc19wYXRoYC4gU2FtZSBmYWlsdXJlIGZhbWlseSwgZGlmZmVyZW50IG1lY2hhbmlzbTsgdHJhY2tlZCBzZXBhcmF0ZWx5LgoK8J+kliBHZW5lcmF0ZWQgd2l0aCBbQ2xhdWRlIENvZGVdKGh0dHBzOi8vY2xhdWRlLmNvbS9jbGF1ZGUtY29kZSkK
      patchset: f5be1ce877dda04a8c95bfb5f9311376e7065a4a
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: b7c70f39598a39998dbbc6f833779355630f3a39
          untrusted/project_0/github.com/osism/container-images-kolla:
            canonical_name: github.com/osism/container-images-kolla
            checkout: main
            commit: 0909199bb95946f57e2fdac9b061beb983ab5c71
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          untrusted/project_3/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: b7c70f39598a39998dbbc6f833779355630f3a39
        playbooks:
        - path: untrusted/project_0/github.com/osism/container-images-kolla/playbooks/patch.yml
          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
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_3/zuul-jobs
            link_target: untrusted/project_3/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_3/zuul-jobs/roles
      post_review: false
      post_timeout: 1800
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/container-images-kolla
        name: osism/container-images-kolla
        short_name: container-images-kolla
        src_dir: src/github.com/osism/container-images-kolla
      projects:
        github.com/osism/container-images-kolla:
          canonical_hostname: github.com
          canonical_name: github.com/osism/container-images-kolla
          checkout: main
          checkout_description: zuul branch
          commit: 0909199bb95946f57e2fdac9b061beb983ab5c71
          name: osism/container-images-kolla
          required: false
          short_name: container-images-kolla
          src_dir: src/github.com/osism/container-images-kolla
      ref: refs/pull/765/head
      resources: {}
      tenant: osism
      timeout: 10800
      topic: null
      voting: true
