all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe01:6976
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: a2e90957-8b62-40c9-8e49-446d39e76ba0
        host_id: df70f2a3f3d0c26428f22685cfc722ebc48099d99e7332c39e017195
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe01:6976
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.102
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.107
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe01:6976
        region: null
        slot: null
      tox_environment:
        NOSE_HTML_OUT_FILE: nose_results.html
        NOSE_WITH_HTML_OUTPUT: 1
        NOSE_WITH_XUNIT: 1
      tox_envlist: seed
  vars:
    tox_environment:
      NOSE_HTML_OUT_FILE: nose_results.html
      NOSE_WITH_HTML_OUTPUT: 1
      NOSE_WITH_XUNIT: 1
    tox_envlist: seed
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job unittests explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: osism/openinfra-zuul-jobs/zuul.d/general-jobs.yaml@master#9>'
      - '<Job tox explicit: None implied: {MatchAny:{ImpliedBranchMatcher:master}}
        source: osism/openinfra-zuul-jobs/zuul.d/python-jobs.yaml@master#1>'
      - '<Job generics-tox-seed explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/generics/.zuul.yaml@main#32>'
      - '<Job generics-tox-seed explicit: None implied: None source: osism/generics/.zuul.yaml@main#38>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: a84a59845eae40dc9d1d208bbd4f19ed
      build_refs:
      - branch: main
        change: '601'
        change_message: "inventory: add ironic-dnsmasq service group\n\n## What\n\nAdd
          the `ironic-dnsmasq` inventory group (child of `ironic`) to\n`inventory/51-kolla`,
          mirroring kolla-ansible `stable/2025.2`\n`ansible/inventory/multinode`.\n\n##
          Why\n\nkolla-ansible `stable/2025.2` ships an `ironic-dnsmasq` group in
          its\n`multinode` inventory, but this inventory never gained it. The ironic
          role\ndereferences `groups['ironic-dnsmasq']` **unconditionally** \u2014
          it appears as\n`groups['ironic-dnsmasq'] | length > 0` in:\n\n- `ironic/tasks/config.yml`
          (4\xD7) and `ironic/tasks/precheck.yml` `when:` conditions\n- the `ironic-http.json.j2`
          and `ironic-tftp.json.j2` container config templates\n\nThese expressions
          are evaluated on every ironic deployment, *before* any\nenable check. With
          the group undefined, Ansible aborts with:\n\n```\n'dict object' has no attribute
          'ironic-dnsmasq'\n```\n\n(the \"dict object\" being the `groups` var). This
          breaks every ironic-enabled\ndeployment; only setups that do not deploy
          ironic (e.g. the virtualized\ntestbed) are unaffected.\n\n## Same class
          of fix as the neutron 2025.2 groups\n\nThis is the identical failure mode
          and remedy as the recent neutron change:\n\n- osism/generics#599\n\n## Validation\n\n-
          `tox -e check` (inventory sorting) passes with the group inserted in\n  alphabetical
          order between `ironic-conductor` and `ironic-http`.\n\n\U0001F916 Generated
          with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/generics/pull/601
        commit_id: 9d3dcaae10eced90634932722a872ec647eda821
        patchset: 9d3dcaae10eced90634932722a872ec647eda821
        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: d6e9c0c31d724618847eb3b973070d0c
      buildset_refs:
      - branch: main
        change: '601'
        change_message: "inventory: add ironic-dnsmasq service group\n\n## What\n\nAdd
          the `ironic-dnsmasq` inventory group (child of `ironic`) to\n`inventory/51-kolla`,
          mirroring kolla-ansible `stable/2025.2`\n`ansible/inventory/multinode`.\n\n##
          Why\n\nkolla-ansible `stable/2025.2` ships an `ironic-dnsmasq` group in
          its\n`multinode` inventory, but this inventory never gained it. The ironic
          role\ndereferences `groups['ironic-dnsmasq']` **unconditionally** \u2014
          it appears as\n`groups['ironic-dnsmasq'] | length > 0` in:\n\n- `ironic/tasks/config.yml`
          (4\xD7) and `ironic/tasks/precheck.yml` `when:` conditions\n- the `ironic-http.json.j2`
          and `ironic-tftp.json.j2` container config templates\n\nThese expressions
          are evaluated on every ironic deployment, *before* any\nenable check. With
          the group undefined, Ansible aborts with:\n\n```\n'dict object' has no attribute
          'ironic-dnsmasq'\n```\n\n(the \"dict object\" being the `groups` var). This
          breaks every ironic-enabled\ndeployment; only setups that do not deploy
          ironic (e.g. the virtualized\ntestbed) are unaffected.\n\n## Same class
          of fix as the neutron 2025.2 groups\n\nThis is the identical failure mode
          and remedy as the recent neutron change:\n\n- osism/generics#599\n\n## Validation\n\n-
          `tox -e check` (inventory sorting) passes with the group inserted in\n  alphabetical
          order between `ironic-conductor` and `ironic-http`.\n\n\U0001F916 Generated
          with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/generics/pull/601
        commit_id: 9d3dcaae10eced90634932722a872ec647eda821
        patchset: 9d3dcaae10eced90634932722a872ec647eda821
        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: '601'
      change_message: "inventory: add ironic-dnsmasq service group\n\n## What\n\nAdd
        the `ironic-dnsmasq` inventory group (child of `ironic`) to\n`inventory/51-kolla`,
        mirroring kolla-ansible `stable/2025.2`\n`ansible/inventory/multinode`.\n\n##
        Why\n\nkolla-ansible `stable/2025.2` ships an `ironic-dnsmasq` group in its\n`multinode`
        inventory, but this inventory never gained it. The ironic role\ndereferences
        `groups['ironic-dnsmasq']` **unconditionally** \u2014 it appears as\n`groups['ironic-dnsmasq']
        | length > 0` in:\n\n- `ironic/tasks/config.yml` (4\xD7) and `ironic/tasks/precheck.yml`
        `when:` conditions\n- the `ironic-http.json.j2` and `ironic-tftp.json.j2`
        container config templates\n\nThese expressions are evaluated on every ironic
        deployment, *before* any\nenable check. With the group undefined, Ansible
        aborts with:\n\n```\n'dict object' has no attribute 'ironic-dnsmasq'\n```\n\n(the
        \"dict object\" being the `groups` var). This breaks every ironic-enabled\ndeployment;
        only setups that do not deploy ironic (e.g. the virtualized\ntestbed) are
        unaffected.\n\n## Same class of fix as the neutron 2025.2 groups\n\nThis is
        the identical failure mode and remedy as the recent neutron change:\n\n- osism/generics#599\n\n##
        Validation\n\n- `tox -e check` (inventory sorting) passes with the group inserted
        in\n  alphabetical order between `ironic-conductor` and `ironic-http`.\n\n\U0001F916
        Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/generics/pull/601
      child_jobs: []
      commit_id: 9d3dcaae10eced90634932722a872ec647eda821
      event_id: c6077220-6fb0-11f1-9639-a5e4a99c3051
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/a84a59845eae40dc9d1d208bbd4f19ed/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/a84a59845eae40dc9d1d208bbd4f19ed/work/logs
        result_data_file: /var/lib/zuul/builds/a84a59845eae40dc9d1d208bbd4f19ed/work/results.json
        src_root: /var/lib/zuul/builds/a84a59845eae40dc9d1d208bbd4f19ed/work/src
        work_root: /var/lib/zuul/builds/a84a59845eae40dc9d1d208bbd4f19ed/work
      include_vars: []
      items:
      - branch: main
        change: '601'
        change_message: "inventory: add ironic-dnsmasq service group\n\n## What\n\nAdd
          the `ironic-dnsmasq` inventory group (child of `ironic`) to\n`inventory/51-kolla`,
          mirroring kolla-ansible `stable/2025.2`\n`ansible/inventory/multinode`.\n\n##
          Why\n\nkolla-ansible `stable/2025.2` ships an `ironic-dnsmasq` group in
          its\n`multinode` inventory, but this inventory never gained it. The ironic
          role\ndereferences `groups['ironic-dnsmasq']` **unconditionally** \u2014
          it appears as\n`groups['ironic-dnsmasq'] | length > 0` in:\n\n- `ironic/tasks/config.yml`
          (4\xD7) and `ironic/tasks/precheck.yml` `when:` conditions\n- the `ironic-http.json.j2`
          and `ironic-tftp.json.j2` container config templates\n\nThese expressions
          are evaluated on every ironic deployment, *before* any\nenable check. With
          the group undefined, Ansible aborts with:\n\n```\n'dict object' has no attribute
          'ironic-dnsmasq'\n```\n\n(the \"dict object\" being the `groups` var). This
          breaks every ironic-enabled\ndeployment; only setups that do not deploy
          ironic (e.g. the virtualized\ntestbed) are unaffected.\n\n## Same class
          of fix as the neutron 2025.2 groups\n\nThis is the identical failure mode
          and remedy as the recent neutron change:\n\n- osism/generics#599\n\n## Validation\n\n-
          `tox -e check` (inventory sorting) passes with the group inserted in\n  alphabetical
          order between `ironic-conductor` and `ironic-http`.\n\n\U0001F916 Generated
          with [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/generics/pull/601
        commit_id: 9d3dcaae10eced90634932722a872ec647eda821
        patchset: 9d3dcaae10eced90634932722a872ec647eda821
        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: generics-tox-seed
      jobtags: []
      max_attempts: 3
      message: aW52ZW50b3J5OiBhZGQgaXJvbmljLWRuc21hc3Egc2VydmljZSBncm91cAoKIyMgV2hhdAoKQWRkIHRoZSBgaXJvbmljLWRuc21hc3FgIGludmVudG9yeSBncm91cCAoY2hpbGQgb2YgYGlyb25pY2ApIHRvCmBpbnZlbnRvcnkvNTEta29sbGFgLCBtaXJyb3Jpbmcga29sbGEtYW5zaWJsZSBgc3RhYmxlLzIwMjUuMmAKYGFuc2libGUvaW52ZW50b3J5L211bHRpbm9kZWAuCgojIyBXaHkKCmtvbGxhLWFuc2libGUgYHN0YWJsZS8yMDI1LjJgIHNoaXBzIGFuIGBpcm9uaWMtZG5zbWFzcWAgZ3JvdXAgaW4gaXRzCmBtdWx0aW5vZGVgIGludmVudG9yeSwgYnV0IHRoaXMgaW52ZW50b3J5IG5ldmVyIGdhaW5lZCBpdC4gVGhlIGlyb25pYyByb2xlCmRlcmVmZXJlbmNlcyBgZ3JvdXBzWydpcm9uaWMtZG5zbWFzcSddYCAqKnVuY29uZGl0aW9uYWxseSoqIOKAlCBpdCBhcHBlYXJzIGFzCmBncm91cHNbJ2lyb25pYy1kbnNtYXNxJ10gfCBsZW5ndGggPiAwYCBpbjoKCi0gYGlyb25pYy90YXNrcy9jb25maWcueW1sYCAoNMOXKSBhbmQgYGlyb25pYy90YXNrcy9wcmVjaGVjay55bWxgIGB3aGVuOmAgY29uZGl0aW9ucwotIHRoZSBgaXJvbmljLWh0dHAuanNvbi5qMmAgYW5kIGBpcm9uaWMtdGZ0cC5qc29uLmoyYCBjb250YWluZXIgY29uZmlnIHRlbXBsYXRlcwoKVGhlc2UgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBvbiBldmVyeSBpcm9uaWMgZGVwbG95bWVudCwgKmJlZm9yZSogYW55CmVuYWJsZSBjaGVjay4gV2l0aCB0aGUgZ3JvdXAgdW5kZWZpbmVkLCBBbnNpYmxlIGFib3J0cyB3aXRoOgoKYGBgCidkaWN0IG9iamVjdCcgaGFzIG5vIGF0dHJpYnV0ZSAnaXJvbmljLWRuc21hc3EnCmBgYAoKKHRoZSAiZGljdCBvYmplY3QiIGJlaW5nIHRoZSBgZ3JvdXBzYCB2YXIpLiBUaGlzIGJyZWFrcyBldmVyeSBpcm9uaWMtZW5hYmxlZApkZXBsb3ltZW50OyBvbmx5IHNldHVwcyB0aGF0IGRvIG5vdCBkZXBsb3kgaXJvbmljIChlLmcuIHRoZSB2aXJ0dWFsaXplZAp0ZXN0YmVkKSBhcmUgdW5hZmZlY3RlZC4KCiMjIFNhbWUgY2xhc3Mgb2YgZml4IGFzIHRoZSBuZXV0cm9uIDIwMjUuMiBncm91cHMKClRoaXMgaXMgdGhlIGlkZW50aWNhbCBmYWlsdXJlIG1vZGUgYW5kIHJlbWVkeSBhcyB0aGUgcmVjZW50IG5ldXRyb24gY2hhbmdlOgoKLSBvc2lzbS9nZW5lcmljcyM1OTkKCiMjIFZhbGlkYXRpb24KCi0gYHRveCAtZSBjaGVja2AgKGludmVudG9yeSBzb3J0aW5nKSBwYXNzZXMgd2l0aCB0aGUgZ3JvdXAgaW5zZXJ0ZWQgaW4KICBhbHBoYWJldGljYWwgb3JkZXIgYmV0d2VlbiBgaXJvbmljLWNvbmR1Y3RvcmAgYW5kIGBpcm9uaWMtaHR0cGAuCgrwn6SWIEdlbmVyYXRlZCB3aXRoIFtDbGF1ZGUgQ29kZV0oaHR0cHM6Ly9jbGF1ZGUuY29tL2NsYXVkZS1jb2RlKQo=
      patchset: 9d3dcaae10eced90634932722a872ec647eda821
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
          untrusted/project_0/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 3d5c7b5973754999f7005857a00ce9168944f0f1
          untrusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
        playbooks:
        - path: untrusted/project_0/github.com/osism/openinfra-zuul-jobs/playbooks/tox/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: playbook branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_0/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/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: 8dfd1acbcb96d910e406d415641d4b5476e2d060
          name: osism/generics
          required: false
          short_name: generics
          src_dir: src/github.com/osism/generics
      ref: refs/pull/601/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
