all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe52:50f
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: e9f70473-bcff-4eeb-a15d-b99cef2c9e1d
        host_id: df70f2a3f3d0c26428f22685cfc722ebc48099d99e7332c39e017195
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe52:50f
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.108
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.148
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe52:50f
        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 flake8 explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#32>'
      - '<Job flake8 explicit: None implied: None source: osism/generics/.zuul.yaml@main#44>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 18b1abb292fb41ba8be7c65a9e368c6b
      build_refs:
      - branch: main
        change: '604'
        change_message: "Add kolla drift-detection tool\n\n## What\n\nAdds `check-kolla-drift.py`,
          a plugin-based drift detector for the OSISM kolla\ncontainer-image toolchain,
          and wires it into CI. It catches divergence between\nthe OSISM consumer
          repos (`defaults`, `release`, `generics`, the container-image\nrepos) and
          upstream `openstack/kolla` / `openstack/kolla-ansible` *when it is\nintroduced*
          \u2014 before it breaks a deploy or a gate.\n\nThe framework lands first
          (empty registry, flags nothing on its own), then seven\nplugins in lifecycle
          order, each reviewable in isolation:\n\n- `kolla_enablement_orphan` \u2014
          OSISM enables a service upstream no longer defines\n- `kolla_orphan_config`
          \u2014 dead companion vars / image blocks for an orphaned service\n- `kolla_secrets_orphan`
          \u2014 OSISM kolla secret with no upstream counterpart\n- `kolla_enablement_build`
          \u2014 enabled + upstream-buildable service missing from the build set\n-
          `kolla_version_chain_upstream` \u2014 upstream `docker/` service with no
          version-pin line\n- `kolla_version_chain_inner` \u2014 a referenced version
          pin that resolves to nothing (inert pin)\n- `kolla_inventory` \u2014 upstream
          inventory group missing from the OSISM `50/51-kolla` files\n  (subsumes
          the retired `check-kolla-inventory.py`, which is removed)\n\nSources resolve
          remotely (GitHub) by default, so the detector runs anywhere\nincluding CI;
          `--base-dir` reads local checkouts. An allowlist marks intentional\nexceptions
          (each requiring a reason); allowlist entries that match nothing are\nreported
          stale. Exit codes: 0 clean / 1 drift or stale / 2 input error.\n\nFull reference:
          `docs/check-kolla-drift.md`.\n\n## CI wiring\n\n- A `kolla-drift` tox env
          runs `python3 src/check-kolla-drift.py`; a\n  `generics-tox-kolla-drift`
          Zuul job wraps it and runs in `periodic-daily`.\n\n## Note for reviewers\n\nThe
          final commit, \"Also run kolla drift detector in check\", is **temporary**
          \u2014 it\nadds the job to the `check` pipeline so this push exercises it
          on a real change.\nThe detector compares against live upstream refs, so
          a `check` run can go red for\ndrift unrelated to this PR. Drop that commit
          before merge; the keeper leaves the\ndetector in `periodic-daily` only.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/generics/pull/604
        commit_id: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
        patchset: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
        src_dir: src/github.com/osism/generics
        topic: null
      buildset: 52ef700c7d07474bb935d7644fe30865
      buildset_refs:
      - branch: main
        change: '604'
        change_message: "Add kolla drift-detection tool\n\n## What\n\nAdds `check-kolla-drift.py`,
          a plugin-based drift detector for the OSISM kolla\ncontainer-image toolchain,
          and wires it into CI. It catches divergence between\nthe OSISM consumer
          repos (`defaults`, `release`, `generics`, the container-image\nrepos) and
          upstream `openstack/kolla` / `openstack/kolla-ansible` *when it is\nintroduced*
          \u2014 before it breaks a deploy or a gate.\n\nThe framework lands first
          (empty registry, flags nothing on its own), then seven\nplugins in lifecycle
          order, each reviewable in isolation:\n\n- `kolla_enablement_orphan` \u2014
          OSISM enables a service upstream no longer defines\n- `kolla_orphan_config`
          \u2014 dead companion vars / image blocks for an orphaned service\n- `kolla_secrets_orphan`
          \u2014 OSISM kolla secret with no upstream counterpart\n- `kolla_enablement_build`
          \u2014 enabled + upstream-buildable service missing from the build set\n-
          `kolla_version_chain_upstream` \u2014 upstream `docker/` service with no
          version-pin line\n- `kolla_version_chain_inner` \u2014 a referenced version
          pin that resolves to nothing (inert pin)\n- `kolla_inventory` \u2014 upstream
          inventory group missing from the OSISM `50/51-kolla` files\n  (subsumes
          the retired `check-kolla-inventory.py`, which is removed)\n\nSources resolve
          remotely (GitHub) by default, so the detector runs anywhere\nincluding CI;
          `--base-dir` reads local checkouts. An allowlist marks intentional\nexceptions
          (each requiring a reason); allowlist entries that match nothing are\nreported
          stale. Exit codes: 0 clean / 1 drift or stale / 2 input error.\n\nFull reference:
          `docs/check-kolla-drift.md`.\n\n## CI wiring\n\n- A `kolla-drift` tox env
          runs `python3 src/check-kolla-drift.py`; a\n  `generics-tox-kolla-drift`
          Zuul job wraps it and runs in `periodic-daily`.\n\n## Note for reviewers\n\nThe
          final commit, \"Also run kolla drift detector in check\", is **temporary**
          \u2014 it\nadds the job to the `check` pipeline so this push exercises it
          on a real change.\nThe detector compares against live upstream refs, so
          a `check` run can go red for\ndrift unrelated to this PR. Drop that commit
          before merge; the keeper leaves the\ndetector in `periodic-daily` only.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/generics/pull/604
        commit_id: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
        patchset: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
        src_dir: src/github.com/osism/generics
        topic: null
      change: '604'
      change_message: "Add kolla drift-detection tool\n\n## What\n\nAdds `check-kolla-drift.py`,
        a plugin-based drift detector for the OSISM kolla\ncontainer-image toolchain,
        and wires it into CI. It catches divergence between\nthe OSISM consumer repos
        (`defaults`, `release`, `generics`, the container-image\nrepos) and upstream
        `openstack/kolla` / `openstack/kolla-ansible` *when it is\nintroduced* \u2014
        before it breaks a deploy or a gate.\n\nThe framework lands first (empty registry,
        flags nothing on its own), then seven\nplugins in lifecycle order, each reviewable
        in isolation:\n\n- `kolla_enablement_orphan` \u2014 OSISM enables a service
        upstream no longer defines\n- `kolla_orphan_config` \u2014 dead companion
        vars / image blocks for an orphaned service\n- `kolla_secrets_orphan` \u2014
        OSISM kolla secret with no upstream counterpart\n- `kolla_enablement_build`
        \u2014 enabled + upstream-buildable service missing from the build set\n-
        `kolla_version_chain_upstream` \u2014 upstream `docker/` service with no version-pin
        line\n- `kolla_version_chain_inner` \u2014 a referenced version pin that resolves
        to nothing (inert pin)\n- `kolla_inventory` \u2014 upstream inventory group
        missing from the OSISM `50/51-kolla` files\n  (subsumes the retired `check-kolla-inventory.py`,
        which is removed)\n\nSources resolve remotely (GitHub) by default, so the
        detector runs anywhere\nincluding CI; `--base-dir` reads local checkouts.
        An allowlist marks intentional\nexceptions (each requiring a reason); allowlist
        entries that match nothing are\nreported stale. Exit codes: 0 clean / 1 drift
        or stale / 2 input error.\n\nFull reference: `docs/check-kolla-drift.md`.\n\n##
        CI wiring\n\n- A `kolla-drift` tox env runs `python3 src/check-kolla-drift.py`;
        a\n  `generics-tox-kolla-drift` Zuul job wraps it and runs in `periodic-daily`.\n\n##
        Note for reviewers\n\nThe final commit, \"Also run kolla drift detector in
        check\", is **temporary** \u2014 it\nadds the job to the `check` pipeline
        so this push exercises it on a real change.\nThe detector compares against
        live upstream refs, so a `check` run can go red for\ndrift unrelated to this
        PR. Drop that commit before merge; the keeper leaves the\ndetector in `periodic-daily`
        only.\n\n\U0001F916 Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/generics/pull/604
      child_jobs: []
      commit_id: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
      event_id: 83e0a1b0-73ce-11f1-8f0c-5c6b59f47a38
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/18b1abb292fb41ba8be7c65a9e368c6b/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/18b1abb292fb41ba8be7c65a9e368c6b/work/logs
        result_data_file: /var/lib/zuul/builds/18b1abb292fb41ba8be7c65a9e368c6b/work/results.json
        src_root: /var/lib/zuul/builds/18b1abb292fb41ba8be7c65a9e368c6b/work/src
        work_root: /var/lib/zuul/builds/18b1abb292fb41ba8be7c65a9e368c6b/work
      include_vars: []
      items:
      - branch: main
        change: '604'
        change_message: "Add kolla drift-detection tool\n\n## What\n\nAdds `check-kolla-drift.py`,
          a plugin-based drift detector for the OSISM kolla\ncontainer-image toolchain,
          and wires it into CI. It catches divergence between\nthe OSISM consumer
          repos (`defaults`, `release`, `generics`, the container-image\nrepos) and
          upstream `openstack/kolla` / `openstack/kolla-ansible` *when it is\nintroduced*
          \u2014 before it breaks a deploy or a gate.\n\nThe framework lands first
          (empty registry, flags nothing on its own), then seven\nplugins in lifecycle
          order, each reviewable in isolation:\n\n- `kolla_enablement_orphan` \u2014
          OSISM enables a service upstream no longer defines\n- `kolla_orphan_config`
          \u2014 dead companion vars / image blocks for an orphaned service\n- `kolla_secrets_orphan`
          \u2014 OSISM kolla secret with no upstream counterpart\n- `kolla_enablement_build`
          \u2014 enabled + upstream-buildable service missing from the build set\n-
          `kolla_version_chain_upstream` \u2014 upstream `docker/` service with no
          version-pin line\n- `kolla_version_chain_inner` \u2014 a referenced version
          pin that resolves to nothing (inert pin)\n- `kolla_inventory` \u2014 upstream
          inventory group missing from the OSISM `50/51-kolla` files\n  (subsumes
          the retired `check-kolla-inventory.py`, which is removed)\n\nSources resolve
          remotely (GitHub) by default, so the detector runs anywhere\nincluding CI;
          `--base-dir` reads local checkouts. An allowlist marks intentional\nexceptions
          (each requiring a reason); allowlist entries that match nothing are\nreported
          stale. Exit codes: 0 clean / 1 drift or stale / 2 input error.\n\nFull reference:
          `docs/check-kolla-drift.md`.\n\n## CI wiring\n\n- A `kolla-drift` tox env
          runs `python3 src/check-kolla-drift.py`; a\n  `generics-tox-kolla-drift`
          Zuul job wraps it and runs in `periodic-daily`.\n\n## Note for reviewers\n\nThe
          final commit, \"Also run kolla drift detector in check\", is **temporary**
          \u2014 it\nadds the job to the `check` pipeline so this push exercises it
          on a real change.\nThe detector compares against live upstream refs, so
          a `check` run can go red for\ndrift unrelated to this PR. Drop that commit
          before merge; the keeper leaves the\ndetector in `periodic-daily` only.\n\n\U0001F916
          Generated with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/generics/pull/604
        commit_id: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
        patchset: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          name: osism/generics
          short_name: generics
          src_dir: src/github.com/osism/generics
        topic: null
      job: flake8
      jobtags: []
      max_attempts: 3
      message: QWRkIGtvbGxhIGRyaWZ0LWRldGVjdGlvbiB0b29sCgojIyBXaGF0CgpBZGRzIGBjaGVjay1rb2xsYS1kcmlmdC5weWAsIGEgcGx1Z2luLWJhc2VkIGRyaWZ0IGRldGVjdG9yIGZvciB0aGUgT1NJU00ga29sbGEKY29udGFpbmVyLWltYWdlIHRvb2xjaGFpbiwgYW5kIHdpcmVzIGl0IGludG8gQ0kuIEl0IGNhdGNoZXMgZGl2ZXJnZW5jZSBiZXR3ZWVuCnRoZSBPU0lTTSBjb25zdW1lciByZXBvcyAoYGRlZmF1bHRzYCwgYHJlbGVhc2VgLCBgZ2VuZXJpY3NgLCB0aGUgY29udGFpbmVyLWltYWdlCnJlcG9zKSBhbmQgdXBzdHJlYW0gYG9wZW5zdGFjay9rb2xsYWAgLyBgb3BlbnN0YWNrL2tvbGxhLWFuc2libGVgICp3aGVuIGl0IGlzCmludHJvZHVjZWQqIOKAlCBiZWZvcmUgaXQgYnJlYWtzIGEgZGVwbG95IG9yIGEgZ2F0ZS4KClRoZSBmcmFtZXdvcmsgbGFuZHMgZmlyc3QgKGVtcHR5IHJlZ2lzdHJ5LCBmbGFncyBub3RoaW5nIG9uIGl0cyBvd24pLCB0aGVuIHNldmVuCnBsdWdpbnMgaW4gbGlmZWN5Y2xlIG9yZGVyLCBlYWNoIHJldmlld2FibGUgaW4gaXNvbGF0aW9uOgoKLSBga29sbGFfZW5hYmxlbWVudF9vcnBoYW5gIOKAlCBPU0lTTSBlbmFibGVzIGEgc2VydmljZSB1cHN0cmVhbSBubyBsb25nZXIgZGVmaW5lcwotIGBrb2xsYV9vcnBoYW5fY29uZmlnYCDigJQgZGVhZCBjb21wYW5pb24gdmFycyAvIGltYWdlIGJsb2NrcyBmb3IgYW4gb3JwaGFuZWQgc2VydmljZQotIGBrb2xsYV9zZWNyZXRzX29ycGhhbmAg4oCUIE9TSVNNIGtvbGxhIHNlY3JldCB3aXRoIG5vIHVwc3RyZWFtIGNvdW50ZXJwYXJ0Ci0gYGtvbGxhX2VuYWJsZW1lbnRfYnVpbGRgIOKAlCBlbmFibGVkICsgdXBzdHJlYW0tYnVpbGRhYmxlIHNlcnZpY2UgbWlzc2luZyBmcm9tIHRoZSBidWlsZCBzZXQKLSBga29sbGFfdmVyc2lvbl9jaGFpbl91cHN0cmVhbWAg4oCUIHVwc3RyZWFtIGBkb2NrZXIvYCBzZXJ2aWNlIHdpdGggbm8gdmVyc2lvbi1waW4gbGluZQotIGBrb2xsYV92ZXJzaW9uX2NoYWluX2lubmVyYCDigJQgYSByZWZlcmVuY2VkIHZlcnNpb24gcGluIHRoYXQgcmVzb2x2ZXMgdG8gbm90aGluZyAoaW5lcnQgcGluKQotIGBrb2xsYV9pbnZlbnRvcnlgIOKAlCB1cHN0cmVhbSBpbnZlbnRvcnkgZ3JvdXAgbWlzc2luZyBmcm9tIHRoZSBPU0lTTSBgNTAvNTEta29sbGFgIGZpbGVzCiAgKHN1YnN1bWVzIHRoZSByZXRpcmVkIGBjaGVjay1rb2xsYS1pbnZlbnRvcnkucHlgLCB3aGljaCBpcyByZW1vdmVkKQoKU291cmNlcyByZXNvbHZlIHJlbW90ZWx5IChHaXRIdWIpIGJ5IGRlZmF1bHQsIHNvIHRoZSBkZXRlY3RvciBydW5zIGFueXdoZXJlCmluY2x1ZGluZyBDSTsgYC0tYmFzZS1kaXJgIHJlYWRzIGxvY2FsIGNoZWNrb3V0cy4gQW4gYWxsb3dsaXN0IG1hcmtzIGludGVudGlvbmFsCmV4Y2VwdGlvbnMgKGVhY2ggcmVxdWlyaW5nIGEgcmVhc29uKTsgYWxsb3dsaXN0IGVudHJpZXMgdGhhdCBtYXRjaCBub3RoaW5nIGFyZQpyZXBvcnRlZCBzdGFsZS4gRXhpdCBjb2RlczogMCBjbGVhbiAvIDEgZHJpZnQgb3Igc3RhbGUgLyAyIGlucHV0IGVycm9yLgoKRnVsbCByZWZlcmVuY2U6IGBkb2NzL2NoZWNrLWtvbGxhLWRyaWZ0Lm1kYC4KCiMjIENJIHdpcmluZwoKLSBBIGBrb2xsYS1kcmlmdGAgdG94IGVudiBydW5zIGBweXRob24zIHNyYy9jaGVjay1rb2xsYS1kcmlmdC5weWA7IGEKICBgZ2VuZXJpY3MtdG94LWtvbGxhLWRyaWZ0YCBadXVsIGpvYiB3cmFwcyBpdCBhbmQgcnVucyBpbiBgcGVyaW9kaWMtZGFpbHlgLgoKIyMgTm90ZSBmb3IgcmV2aWV3ZXJzCgpUaGUgZmluYWwgY29tbWl0LCAiQWxzbyBydW4ga29sbGEgZHJpZnQgZGV0ZWN0b3IgaW4gY2hlY2siLCBpcyAqKnRlbXBvcmFyeSoqIOKAlCBpdAphZGRzIHRoZSBqb2IgdG8gdGhlIGBjaGVja2AgcGlwZWxpbmUgc28gdGhpcyBwdXNoIGV4ZXJjaXNlcyBpdCBvbiBhIHJlYWwgY2hhbmdlLgpUaGUgZGV0ZWN0b3IgY29tcGFyZXMgYWdhaW5zdCBsaXZlIHVwc3RyZWFtIHJlZnMsIHNvIGEgYGNoZWNrYCBydW4gY2FuIGdvIHJlZCBmb3IKZHJpZnQgdW5yZWxhdGVkIHRvIHRoaXMgUFIuIERyb3AgdGhhdCBjb21taXQgYmVmb3JlIG1lcmdlOyB0aGUga2VlcGVyIGxlYXZlcyB0aGUKZGV0ZWN0b3IgaW4gYHBlcmlvZGljLWRhaWx5YCBvbmx5LgoK8J+kliBHZW5lcmF0ZWQgd2l0aCBbQ2xhdWRlIENvZGVdKGh0dHBzOi8vY2xhdWRlLmNvbS9jbGF1ZGUtY29kZSkK
      patchset: c76f8c663c3b40fd90468a935917f4b3cf9a54f8
      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: 1d71e58c93442038e695a5d883d57a603182c7ae
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
          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
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/flake8/run.yaml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_0/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_0/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: 1800
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/generics
        name: osism/generics
        short_name: generics
        src_dir: src/github.com/osism/generics
      projects:
        github.com/osism/generics:
          canonical_hostname: github.com
          canonical_name: github.com/osism/generics
          checkout: main
          checkout_description: zuul branch
          commit: c65e221564581c39b1a1b49501097432694b2250
          name: osism/generics
          required: false
          short_name: generics
          src_dir: src/github.com/osism/generics
      ref: refs/pull/604/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
