all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe98:91e2
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      docker_namespace: osism
      docker_registry: osism.harbor.regio.digital
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 4e33729c-2a3e-4ddc-97c1-56a1a7e5e114
        host_id: de4c9765152b8ccf16bcbbf90e33fb083884dc744cc344501046bc88
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe98:91e2
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.101
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.104
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe98:91e2
        region: null
        slot: null
  vars:
    docker_namespace: osism
    docker_registry: osism.harbor.regio.digital
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job container-image-python-osism-build explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/python-osism/.zuul.yaml@main#79>'
      - '<Job container-image-python-osism-build explicit: None implied: None source:
        osism/python-osism/.zuul.yaml@main#138>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 662e729eaad74c1eb1d426ab692fc233
      build_refs:
      - branch: main
        change: '2313'
        change_message: "Return non-zero exit from get on query failure\n\n## What\n\n`osism
          get hostvars` and `osism get hosts` logged an error but then returned `None`
          when the underlying `ansible-inventory` subprocess failed. cliff turns a
          `take_action` return value of `None` into exit code 0 (`return_code = self.take_action(parsed_args)
          or 0`), so these commands exited **successfully** even when the inventory
          query could not be run at all \u2014 making them unsafe in `set -e` scripts
          and `&&` chains.\n\nBoth commands now `return 1` on `subprocess.CalledProcessError`,
          i.e. when the query itself could not be executed.\n\n## Missing host\n\nWith
          the pinned `ansible-core` (2.18.9 \u2014 `release` repo `latest/base.yml`),
          `ansible-inventory --host <unknown>` does **not** return an empty result.
          It refuses the query with `ERROR! You must pass a single valid host to --host
          parameter` and exits 5. So `osism get hostvars <unknown-host>` now exits
          1, matching its existing `Host not found in inventory.` error message.\n\n##
          What stays exit 0 (empty results)\n\nEmpty results are deliberately left
          as success \u2014 a query that ran fine but had nothing to show:\n\n- a
          host that exists but has no host vars (`ansible-inventory` prints `{}`,
          exits 0)\n- a requested variable/fact absent from an otherwise successfully
          retrieved data set\n- an inventory that lists no matching hosts\n\n## A
          note on the convention\n\nThere is **no documented exit-code contract**
          for the `osism` CLI \u2014 the behaviour is emergent and inconsistent across
          commands. This PR does not attempt to define or enforce one. It only tries
          to make `osism get` match what looks like the prevailing convention elsewhere
          in the CLI: a non-zero exit signals an *operational failure* (the query
          could not be run), while an empty result set is treated as a valid, successful
          answer.\n\n## Tests\n\nAdds unit tests for both commands covering the failure
          path (raised `CalledProcessError` \u2192 exit 1) and the empty-result path
          (successful query with nothing to show \u2192 exit 0)."
        change_url: https://github.com/osism/python-osism/pull/2313
        commit_id: a386d2919aa11a0e4316623998dafc5c05ad94da
        patchset: a386d2919aa11a0e4316623998dafc5c05ad94da
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      buildset: 994e881cba314a75aedc45227418132a
      buildset_refs:
      - branch: main
        change: '2313'
        change_message: "Return non-zero exit from get on query failure\n\n## What\n\n`osism
          get hostvars` and `osism get hosts` logged an error but then returned `None`
          when the underlying `ansible-inventory` subprocess failed. cliff turns a
          `take_action` return value of `None` into exit code 0 (`return_code = self.take_action(parsed_args)
          or 0`), so these commands exited **successfully** even when the inventory
          query could not be run at all \u2014 making them unsafe in `set -e` scripts
          and `&&` chains.\n\nBoth commands now `return 1` on `subprocess.CalledProcessError`,
          i.e. when the query itself could not be executed.\n\n## Missing host\n\nWith
          the pinned `ansible-core` (2.18.9 \u2014 `release` repo `latest/base.yml`),
          `ansible-inventory --host <unknown>` does **not** return an empty result.
          It refuses the query with `ERROR! You must pass a single valid host to --host
          parameter` and exits 5. So `osism get hostvars <unknown-host>` now exits
          1, matching its existing `Host not found in inventory.` error message.\n\n##
          What stays exit 0 (empty results)\n\nEmpty results are deliberately left
          as success \u2014 a query that ran fine but had nothing to show:\n\n- a
          host that exists but has no host vars (`ansible-inventory` prints `{}`,
          exits 0)\n- a requested variable/fact absent from an otherwise successfully
          retrieved data set\n- an inventory that lists no matching hosts\n\n## A
          note on the convention\n\nThere is **no documented exit-code contract**
          for the `osism` CLI \u2014 the behaviour is emergent and inconsistent across
          commands. This PR does not attempt to define or enforce one. It only tries
          to make `osism get` match what looks like the prevailing convention elsewhere
          in the CLI: a non-zero exit signals an *operational failure* (the query
          could not be run), while an empty result set is treated as a valid, successful
          answer.\n\n## Tests\n\nAdds unit tests for both commands covering the failure
          path (raised `CalledProcessError` \u2192 exit 1) and the empty-result path
          (successful query with nothing to show \u2192 exit 0)."
        change_url: https://github.com/osism/python-osism/pull/2313
        commit_id: a386d2919aa11a0e4316623998dafc5c05ad94da
        patchset: a386d2919aa11a0e4316623998dafc5c05ad94da
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
        src_dir: src/github.com/osism/python-osism
        topic: null
      change: '2313'
      change_message: "Return non-zero exit from get on query failure\n\n## What\n\n`osism
        get hostvars` and `osism get hosts` logged an error but then returned `None`
        when the underlying `ansible-inventory` subprocess failed. cliff turns a `take_action`
        return value of `None` into exit code 0 (`return_code = self.take_action(parsed_args)
        or 0`), so these commands exited **successfully** even when the inventory
        query could not be run at all \u2014 making them unsafe in `set -e` scripts
        and `&&` chains.\n\nBoth commands now `return 1` on `subprocess.CalledProcessError`,
        i.e. when the query itself could not be executed.\n\n## Missing host\n\nWith
        the pinned `ansible-core` (2.18.9 \u2014 `release` repo `latest/base.yml`),
        `ansible-inventory --host <unknown>` does **not** return an empty result.
        It refuses the query with `ERROR! You must pass a single valid host to --host
        parameter` and exits 5. So `osism get hostvars <unknown-host>` now exits 1,
        matching its existing `Host not found in inventory.` error message.\n\n##
        What stays exit 0 (empty results)\n\nEmpty results are deliberately left as
        success \u2014 a query that ran fine but had nothing to show:\n\n- a host
        that exists but has no host vars (`ansible-inventory` prints `{}`, exits 0)\n-
        a requested variable/fact absent from an otherwise successfully retrieved
        data set\n- an inventory that lists no matching hosts\n\n## A note on the
        convention\n\nThere is **no documented exit-code contract** for the `osism`
        CLI \u2014 the behaviour is emergent and inconsistent across commands. This
        PR does not attempt to define or enforce one. It only tries to make `osism
        get` match what looks like the prevailing convention elsewhere in the CLI:
        a non-zero exit signals an *operational failure* (the query could not be run),
        while an empty result set is treated as a valid, successful answer.\n\n##
        Tests\n\nAdds unit tests for both commands covering the failure path (raised
        `CalledProcessError` \u2192 exit 1) and the empty-result path (successful
        query with nothing to show \u2192 exit 0)."
      change_url: https://github.com/osism/python-osism/pull/2313
      child_jobs: []
      commit_id: a386d2919aa11a0e4316623998dafc5c05ad94da
      event_id: c801fdf0-5dba-11f1-9c49-737fe46bba18
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/662e729eaad74c1eb1d426ab692fc233/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/662e729eaad74c1eb1d426ab692fc233/work/logs
        result_data_file: /var/lib/zuul/builds/662e729eaad74c1eb1d426ab692fc233/work/results.json
        src_root: /var/lib/zuul/builds/662e729eaad74c1eb1d426ab692fc233/work/src
        work_root: /var/lib/zuul/builds/662e729eaad74c1eb1d426ab692fc233/work
      include_vars: []
      items:
      - branch: main
        change: '2313'
        change_message: "Return non-zero exit from get on query failure\n\n## What\n\n`osism
          get hostvars` and `osism get hosts` logged an error but then returned `None`
          when the underlying `ansible-inventory` subprocess failed. cliff turns a
          `take_action` return value of `None` into exit code 0 (`return_code = self.take_action(parsed_args)
          or 0`), so these commands exited **successfully** even when the inventory
          query could not be run at all \u2014 making them unsafe in `set -e` scripts
          and `&&` chains.\n\nBoth commands now `return 1` on `subprocess.CalledProcessError`,
          i.e. when the query itself could not be executed.\n\n## Missing host\n\nWith
          the pinned `ansible-core` (2.18.9 \u2014 `release` repo `latest/base.yml`),
          `ansible-inventory --host <unknown>` does **not** return an empty result.
          It refuses the query with `ERROR! You must pass a single valid host to --host
          parameter` and exits 5. So `osism get hostvars <unknown-host>` now exits
          1, matching its existing `Host not found in inventory.` error message.\n\n##
          What stays exit 0 (empty results)\n\nEmpty results are deliberately left
          as success \u2014 a query that ran fine but had nothing to show:\n\n- a
          host that exists but has no host vars (`ansible-inventory` prints `{}`,
          exits 0)\n- a requested variable/fact absent from an otherwise successfully
          retrieved data set\n- an inventory that lists no matching hosts\n\n## A
          note on the convention\n\nThere is **no documented exit-code contract**
          for the `osism` CLI \u2014 the behaviour is emergent and inconsistent across
          commands. This PR does not attempt to define or enforce one. It only tries
          to make `osism get` match what looks like the prevailing convention elsewhere
          in the CLI: a non-zero exit signals an *operational failure* (the query
          could not be run), while an empty result set is treated as a valid, successful
          answer.\n\n## Tests\n\nAdds unit tests for both commands covering the failure
          path (raised `CalledProcessError` \u2192 exit 1) and the empty-result path
          (successful query with nothing to show \u2192 exit 0)."
        change_url: https://github.com/osism/python-osism/pull/2313
        commit_id: a386d2919aa11a0e4316623998dafc5c05ad94da
        patchset: a386d2919aa11a0e4316623998dafc5c05ad94da
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          name: osism/python-osism
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
        topic: null
      job: container-image-python-osism-build
      jobtags: []
      max_attempts: 3
      message: UmV0dXJuIG5vbi16ZXJvIGV4aXQgZnJvbSBnZXQgb24gcXVlcnkgZmFpbHVyZQoKIyMgV2hhdAoKYG9zaXNtIGdldCBob3N0dmFyc2AgYW5kIGBvc2lzbSBnZXQgaG9zdHNgIGxvZ2dlZCBhbiBlcnJvciBidXQgdGhlbiByZXR1cm5lZCBgTm9uZWAgd2hlbiB0aGUgdW5kZXJseWluZyBgYW5zaWJsZS1pbnZlbnRvcnlgIHN1YnByb2Nlc3MgZmFpbGVkLiBjbGlmZiB0dXJucyBhIGB0YWtlX2FjdGlvbmAgcmV0dXJuIHZhbHVlIG9mIGBOb25lYCBpbnRvIGV4aXQgY29kZSAwIChgcmV0dXJuX2NvZGUgPSBzZWxmLnRha2VfYWN0aW9uKHBhcnNlZF9hcmdzKSBvciAwYCksIHNvIHRoZXNlIGNvbW1hbmRzIGV4aXRlZCAqKnN1Y2Nlc3NmdWxseSoqIGV2ZW4gd2hlbiB0aGUgaW52ZW50b3J5IHF1ZXJ5IGNvdWxkIG5vdCBiZSBydW4gYXQgYWxsIOKAlCBtYWtpbmcgdGhlbSB1bnNhZmUgaW4gYHNldCAtZWAgc2NyaXB0cyBhbmQgYCYmYCBjaGFpbnMuCgpCb3RoIGNvbW1hbmRzIG5vdyBgcmV0dXJuIDFgIG9uIGBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcmAsIGkuZS4gd2hlbiB0aGUgcXVlcnkgaXRzZWxmIGNvdWxkIG5vdCBiZSBleGVjdXRlZC4KCiMjIE1pc3NpbmcgaG9zdAoKV2l0aCB0aGUgcGlubmVkIGBhbnNpYmxlLWNvcmVgICgyLjE4Ljkg4oCUIGByZWxlYXNlYCByZXBvIGBsYXRlc3QvYmFzZS55bWxgKSwgYGFuc2libGUtaW52ZW50b3J5IC0taG9zdCA8dW5rbm93bj5gIGRvZXMgKipub3QqKiByZXR1cm4gYW4gZW1wdHkgcmVzdWx0LiBJdCByZWZ1c2VzIHRoZSBxdWVyeSB3aXRoIGBFUlJPUiEgWW91IG11c3QgcGFzcyBhIHNpbmdsZSB2YWxpZCBob3N0IHRvIC0taG9zdCBwYXJhbWV0ZXJgIGFuZCBleGl0cyA1LiBTbyBgb3Npc20gZ2V0IGhvc3R2YXJzIDx1bmtub3duLWhvc3Q+YCBub3cgZXhpdHMgMSwgbWF0Y2hpbmcgaXRzIGV4aXN0aW5nIGBIb3N0IG5vdCBmb3VuZCBpbiBpbnZlbnRvcnkuYCBlcnJvciBtZXNzYWdlLgoKIyMgV2hhdCBzdGF5cyBleGl0IDAgKGVtcHR5IHJlc3VsdHMpCgpFbXB0eSByZXN1bHRzIGFyZSBkZWxpYmVyYXRlbHkgbGVmdCBhcyBzdWNjZXNzIOKAlCBhIHF1ZXJ5IHRoYXQgcmFuIGZpbmUgYnV0IGhhZCBub3RoaW5nIHRvIHNob3c6CgotIGEgaG9zdCB0aGF0IGV4aXN0cyBidXQgaGFzIG5vIGhvc3QgdmFycyAoYGFuc2libGUtaW52ZW50b3J5YCBwcmludHMgYHt9YCwgZXhpdHMgMCkKLSBhIHJlcXVlc3RlZCB2YXJpYWJsZS9mYWN0IGFic2VudCBmcm9tIGFuIG90aGVyd2lzZSBzdWNjZXNzZnVsbHkgcmV0cmlldmVkIGRhdGEgc2V0Ci0gYW4gaW52ZW50b3J5IHRoYXQgbGlzdHMgbm8gbWF0Y2hpbmcgaG9zdHMKCiMjIEEgbm90ZSBvbiB0aGUgY29udmVudGlvbgoKVGhlcmUgaXMgKipubyBkb2N1bWVudGVkIGV4aXQtY29kZSBjb250cmFjdCoqIGZvciB0aGUgYG9zaXNtYCBDTEkg4oCUIHRoZSBiZWhhdmlvdXIgaXMgZW1lcmdlbnQgYW5kIGluY29uc2lzdGVudCBhY3Jvc3MgY29tbWFuZHMuIFRoaXMgUFIgZG9lcyBub3QgYXR0ZW1wdCB0byBkZWZpbmUgb3IgZW5mb3JjZSBvbmUuIEl0IG9ubHkgdHJpZXMgdG8gbWFrZSBgb3Npc20gZ2V0YCBtYXRjaCB3aGF0IGxvb2tzIGxpa2UgdGhlIHByZXZhaWxpbmcgY29udmVudGlvbiBlbHNld2hlcmUgaW4gdGhlIENMSTogYSBub24temVybyBleGl0IHNpZ25hbHMgYW4gKm9wZXJhdGlvbmFsIGZhaWx1cmUqICh0aGUgcXVlcnkgY291bGQgbm90IGJlIHJ1biksIHdoaWxlIGFuIGVtcHR5IHJlc3VsdCBzZXQgaXMgdHJlYXRlZCBhcyBhIHZhbGlkLCBzdWNjZXNzZnVsIGFuc3dlci4KCiMjIFRlc3RzCgpBZGRzIHVuaXQgdGVzdHMgZm9yIGJvdGggY29tbWFuZHMgY292ZXJpbmcgdGhlIGZhaWx1cmUgcGF0aCAocmFpc2VkIGBDYWxsZWRQcm9jZXNzRXJyb3JgIOKGkiBleGl0IDEpIGFuZCB0aGUgZW1wdHktcmVzdWx0IHBhdGggKHN1Y2Nlc3NmdWwgcXVlcnkgd2l0aCBub3RoaW5nIHRvIHNob3cg4oaSIGV4aXQgMCku
      patchset: a386d2919aa11a0e4316623998dafc5c05ad94da
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 019f0261a526db7d8989ff1abefc2299a8c0ffbc
          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/python-osism:
            canonical_name: github.com/osism/python-osism
            checkout: main
            commit: ea45b033d41626f8dc61448b19e71da976c26769
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 019f0261a526db7d8989ff1abefc2299a8c0ffbc
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 038dd8b856c62af4433c8477c5cb3d0480847059
          untrusted/project_3/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 0c74c57cedff2b36bb37ca68a5338d1c49991496
        playbooks:
        - path: untrusted/project_0/github.com/osism/python-osism/playbooks/build.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: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/python-osism
        name: osism/python-osism
        short_name: python-osism
        src_dir: src/github.com/osism/python-osism
      projects:
        github.com/osism/python-osism:
          canonical_hostname: github.com
          canonical_name: github.com/osism/python-osism
          checkout: main
          checkout_description: zuul branch
          commit: ea45b033d41626f8dc61448b19e71da976c26769
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2313/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
