all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe6a:3949
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 3e6b6e43-0d2b-4984-bba4-2b9ad4247af1
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe6a:3949
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.100
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.79
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe6a:3949
        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 mypy explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#42>'
      - '<Job mypy explicit: None implied: None source: osism/python-osism/.zuul.yaml@main#143>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 5a466436fe4f481dbd911b6b21c22945
      build_refs:
      - branch: main
        change: '2458'
        change_message: "Add unit tests for osism/tasks/netbox.py\n\nAdds `tests/unit/tasks/test_netbox.py`
          covering the Celery tasks of the `netbox` worker as specified in #2355:\n\n-
          `_update_netbox_device_field`: happy path (custom-field update + save),
          device not found, all four `requests` exception handlers (`ConnectTimeout`,
          `ReadTimeout`, `ConnectionError`, `HTTPError`), errors raised by `device.save()`,
          and the semaphore being created from `nb.base_url` and entered/exited around
          the API call.\n- `_matches_netbox_filter`: empty filter, `primary` filter
          variants (case-insensitive, substring), URL/name/site matching, missing
          `netbox_name`/`netbox_site` attributes, and the no-match fall-through.\n-
          `set_maintenance` / `set_provision_state` / `set_power_state`: one parametrised
          body over the three tasks (same approach as `QUERY_LIST_VARIANTS` in the
          conductor tests) covering Redlock key/timeouts, unacquired lock, failed
          update still returning `True`, filter-based primary/secondary skipping,
          the `utils.secondary_nb_list` fallback, lock release on exceptions, the
          `set_power_state` `None` \u2192 `\"n/a\"` conversion, and task-lock abort
          before Redlock creation.\n- `get_location_id` / `get_rack_id` (parametrised):
          found, missing, and `ValueError` from ambiguous matches.\n- The four pass-through
          `get_*` tasks: delegation to the expected pynetbox endpoints.\n- `manage`:
          exact `netbox-manager` environment with `str()`-coerced settings, argument/keyword
          forwarding to `run_command`, return value pass-through, and no command execution
          when tasks are locked.\n- `ping` and `setup_periodic_tasks`.\n\n`utils.nb`
          and `utils.secondary_nb_list` are lazy attributes resolved via `osism.utils.__getattr__`;
          they are always patched with `create=True` so no real NetBox connection
          is ever opened. All tasks are invoked directly \u2014 Celery binds `self`
          on direct calls, so no broker is needed.\n\nCloses #2355"
        change_url: https://github.com/osism/python-osism/pull/2458
        commit_id: 6bca11332605449128d5d9975acb2090d47185b4
        patchset: 6bca11332605449128d5d9975acb2090d47185b4
        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: 65272ffee82b4c7b9a5e64cc10d722bf
      buildset_refs:
      - branch: main
        change: '2458'
        change_message: "Add unit tests for osism/tasks/netbox.py\n\nAdds `tests/unit/tasks/test_netbox.py`
          covering the Celery tasks of the `netbox` worker as specified in #2355:\n\n-
          `_update_netbox_device_field`: happy path (custom-field update + save),
          device not found, all four `requests` exception handlers (`ConnectTimeout`,
          `ReadTimeout`, `ConnectionError`, `HTTPError`), errors raised by `device.save()`,
          and the semaphore being created from `nb.base_url` and entered/exited around
          the API call.\n- `_matches_netbox_filter`: empty filter, `primary` filter
          variants (case-insensitive, substring), URL/name/site matching, missing
          `netbox_name`/`netbox_site` attributes, and the no-match fall-through.\n-
          `set_maintenance` / `set_provision_state` / `set_power_state`: one parametrised
          body over the three tasks (same approach as `QUERY_LIST_VARIANTS` in the
          conductor tests) covering Redlock key/timeouts, unacquired lock, failed
          update still returning `True`, filter-based primary/secondary skipping,
          the `utils.secondary_nb_list` fallback, lock release on exceptions, the
          `set_power_state` `None` \u2192 `\"n/a\"` conversion, and task-lock abort
          before Redlock creation.\n- `get_location_id` / `get_rack_id` (parametrised):
          found, missing, and `ValueError` from ambiguous matches.\n- The four pass-through
          `get_*` tasks: delegation to the expected pynetbox endpoints.\n- `manage`:
          exact `netbox-manager` environment with `str()`-coerced settings, argument/keyword
          forwarding to `run_command`, return value pass-through, and no command execution
          when tasks are locked.\n- `ping` and `setup_periodic_tasks`.\n\n`utils.nb`
          and `utils.secondary_nb_list` are lazy attributes resolved via `osism.utils.__getattr__`;
          they are always patched with `create=True` so no real NetBox connection
          is ever opened. All tasks are invoked directly \u2014 Celery binds `self`
          on direct calls, so no broker is needed.\n\nCloses #2355"
        change_url: https://github.com/osism/python-osism/pull/2458
        commit_id: 6bca11332605449128d5d9975acb2090d47185b4
        patchset: 6bca11332605449128d5d9975acb2090d47185b4
        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: '2458'
      change_message: "Add unit tests for osism/tasks/netbox.py\n\nAdds `tests/unit/tasks/test_netbox.py`
        covering the Celery tasks of the `netbox` worker as specified in #2355:\n\n-
        `_update_netbox_device_field`: happy path (custom-field update + save), device
        not found, all four `requests` exception handlers (`ConnectTimeout`, `ReadTimeout`,
        `ConnectionError`, `HTTPError`), errors raised by `device.save()`, and the
        semaphore being created from `nb.base_url` and entered/exited around the API
        call.\n- `_matches_netbox_filter`: empty filter, `primary` filter variants
        (case-insensitive, substring), URL/name/site matching, missing `netbox_name`/`netbox_site`
        attributes, and the no-match fall-through.\n- `set_maintenance` / `set_provision_state`
        / `set_power_state`: one parametrised body over the three tasks (same approach
        as `QUERY_LIST_VARIANTS` in the conductor tests) covering Redlock key/timeouts,
        unacquired lock, failed update still returning `True`, filter-based primary/secondary
        skipping, the `utils.secondary_nb_list` fallback, lock release on exceptions,
        the `set_power_state` `None` \u2192 `\"n/a\"` conversion, and task-lock abort
        before Redlock creation.\n- `get_location_id` / `get_rack_id` (parametrised):
        found, missing, and `ValueError` from ambiguous matches.\n- The four pass-through
        `get_*` tasks: delegation to the expected pynetbox endpoints.\n- `manage`:
        exact `netbox-manager` environment with `str()`-coerced settings, argument/keyword
        forwarding to `run_command`, return value pass-through, and no command execution
        when tasks are locked.\n- `ping` and `setup_periodic_tasks`.\n\n`utils.nb`
        and `utils.secondary_nb_list` are lazy attributes resolved via `osism.utils.__getattr__`;
        they are always patched with `create=True` so no real NetBox connection is
        ever opened. All tasks are invoked directly \u2014 Celery binds `self` on
        direct calls, so no broker is needed.\n\nCloses #2355"
      change_url: https://github.com/osism/python-osism/pull/2458
      child_jobs: []
      commit_id: 6bca11332605449128d5d9975acb2090d47185b4
      event_id: c85c6c20-7efa-11f1-9bd7-e269929be516
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/5a466436fe4f481dbd911b6b21c22945/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/5a466436fe4f481dbd911b6b21c22945/work/logs
        result_data_file: /var/lib/zuul/builds/5a466436fe4f481dbd911b6b21c22945/work/results.json
        src_root: /var/lib/zuul/builds/5a466436fe4f481dbd911b6b21c22945/work/src
        work_root: /var/lib/zuul/builds/5a466436fe4f481dbd911b6b21c22945/work
      include_vars: []
      items:
      - branch: main
        change: '2458'
        change_message: "Add unit tests for osism/tasks/netbox.py\n\nAdds `tests/unit/tasks/test_netbox.py`
          covering the Celery tasks of the `netbox` worker as specified in #2355:\n\n-
          `_update_netbox_device_field`: happy path (custom-field update + save),
          device not found, all four `requests` exception handlers (`ConnectTimeout`,
          `ReadTimeout`, `ConnectionError`, `HTTPError`), errors raised by `device.save()`,
          and the semaphore being created from `nb.base_url` and entered/exited around
          the API call.\n- `_matches_netbox_filter`: empty filter, `primary` filter
          variants (case-insensitive, substring), URL/name/site matching, missing
          `netbox_name`/`netbox_site` attributes, and the no-match fall-through.\n-
          `set_maintenance` / `set_provision_state` / `set_power_state`: one parametrised
          body over the three tasks (same approach as `QUERY_LIST_VARIANTS` in the
          conductor tests) covering Redlock key/timeouts, unacquired lock, failed
          update still returning `True`, filter-based primary/secondary skipping,
          the `utils.secondary_nb_list` fallback, lock release on exceptions, the
          `set_power_state` `None` \u2192 `\"n/a\"` conversion, and task-lock abort
          before Redlock creation.\n- `get_location_id` / `get_rack_id` (parametrised):
          found, missing, and `ValueError` from ambiguous matches.\n- The four pass-through
          `get_*` tasks: delegation to the expected pynetbox endpoints.\n- `manage`:
          exact `netbox-manager` environment with `str()`-coerced settings, argument/keyword
          forwarding to `run_command`, return value pass-through, and no command execution
          when tasks are locked.\n- `ping` and `setup_periodic_tasks`.\n\n`utils.nb`
          and `utils.secondary_nb_list` are lazy attributes resolved via `osism.utils.__getattr__`;
          they are always patched with `create=True` so no real NetBox connection
          is ever opened. All tasks are invoked directly \u2014 Celery binds `self`
          on direct calls, so no broker is needed.\n\nCloses #2355"
        change_url: https://github.com/osism/python-osism/pull/2458
        commit_id: 6bca11332605449128d5d9975acb2090d47185b4
        patchset: 6bca11332605449128d5d9975acb2090d47185b4
        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: mypy
      jobtags: []
      max_attempts: 3
      message: QWRkIHVuaXQgdGVzdHMgZm9yIG9zaXNtL3Rhc2tzL25ldGJveC5weQoKQWRkcyBgdGVzdHMvdW5pdC90YXNrcy90ZXN0X25ldGJveC5weWAgY292ZXJpbmcgdGhlIENlbGVyeSB0YXNrcyBvZiB0aGUgYG5ldGJveGAgd29ya2VyIGFzIHNwZWNpZmllZCBpbiAjMjM1NToKCi0gYF91cGRhdGVfbmV0Ym94X2RldmljZV9maWVsZGA6IGhhcHB5IHBhdGggKGN1c3RvbS1maWVsZCB1cGRhdGUgKyBzYXZlKSwgZGV2aWNlIG5vdCBmb3VuZCwgYWxsIGZvdXIgYHJlcXVlc3RzYCBleGNlcHRpb24gaGFuZGxlcnMgKGBDb25uZWN0VGltZW91dGAsIGBSZWFkVGltZW91dGAsIGBDb25uZWN0aW9uRXJyb3JgLCBgSFRUUEVycm9yYCksIGVycm9ycyByYWlzZWQgYnkgYGRldmljZS5zYXZlKClgLCBhbmQgdGhlIHNlbWFwaG9yZSBiZWluZyBjcmVhdGVkIGZyb20gYG5iLmJhc2VfdXJsYCBhbmQgZW50ZXJlZC9leGl0ZWQgYXJvdW5kIHRoZSBBUEkgY2FsbC4KLSBgX21hdGNoZXNfbmV0Ym94X2ZpbHRlcmA6IGVtcHR5IGZpbHRlciwgYHByaW1hcnlgIGZpbHRlciB2YXJpYW50cyAoY2FzZS1pbnNlbnNpdGl2ZSwgc3Vic3RyaW5nKSwgVVJML25hbWUvc2l0ZSBtYXRjaGluZywgbWlzc2luZyBgbmV0Ym94X25hbWVgL2BuZXRib3hfc2l0ZWAgYXR0cmlidXRlcywgYW5kIHRoZSBuby1tYXRjaCBmYWxsLXRocm91Z2guCi0gYHNldF9tYWludGVuYW5jZWAgLyBgc2V0X3Byb3Zpc2lvbl9zdGF0ZWAgLyBgc2V0X3Bvd2VyX3N0YXRlYDogb25lIHBhcmFtZXRyaXNlZCBib2R5IG92ZXIgdGhlIHRocmVlIHRhc2tzIChzYW1lIGFwcHJvYWNoIGFzIGBRVUVSWV9MSVNUX1ZBUklBTlRTYCBpbiB0aGUgY29uZHVjdG9yIHRlc3RzKSBjb3ZlcmluZyBSZWRsb2NrIGtleS90aW1lb3V0cywgdW5hY3F1aXJlZCBsb2NrLCBmYWlsZWQgdXBkYXRlIHN0aWxsIHJldHVybmluZyBgVHJ1ZWAsIGZpbHRlci1iYXNlZCBwcmltYXJ5L3NlY29uZGFyeSBza2lwcGluZywgdGhlIGB1dGlscy5zZWNvbmRhcnlfbmJfbGlzdGAgZmFsbGJhY2ssIGxvY2sgcmVsZWFzZSBvbiBleGNlcHRpb25zLCB0aGUgYHNldF9wb3dlcl9zdGF0ZWAgYE5vbmVgIOKGkiBgIm4vYSJgIGNvbnZlcnNpb24sIGFuZCB0YXNrLWxvY2sgYWJvcnQgYmVmb3JlIFJlZGxvY2sgY3JlYXRpb24uCi0gYGdldF9sb2NhdGlvbl9pZGAgLyBgZ2V0X3JhY2tfaWRgIChwYXJhbWV0cmlzZWQpOiBmb3VuZCwgbWlzc2luZywgYW5kIGBWYWx1ZUVycm9yYCBmcm9tIGFtYmlndW91cyBtYXRjaGVzLgotIFRoZSBmb3VyIHBhc3MtdGhyb3VnaCBgZ2V0XypgIHRhc2tzOiBkZWxlZ2F0aW9uIHRvIHRoZSBleHBlY3RlZCBweW5ldGJveCBlbmRwb2ludHMuCi0gYG1hbmFnZWA6IGV4YWN0IGBuZXRib3gtbWFuYWdlcmAgZW52aXJvbm1lbnQgd2l0aCBgc3RyKClgLWNvZXJjZWQgc2V0dGluZ3MsIGFyZ3VtZW50L2tleXdvcmQgZm9yd2FyZGluZyB0byBgcnVuX2NvbW1hbmRgLCByZXR1cm4gdmFsdWUgcGFzcy10aHJvdWdoLCBhbmQgbm8gY29tbWFuZCBleGVjdXRpb24gd2hlbiB0YXNrcyBhcmUgbG9ja2VkLgotIGBwaW5nYCBhbmQgYHNldHVwX3BlcmlvZGljX3Rhc2tzYC4KCmB1dGlscy5uYmAgYW5kIGB1dGlscy5zZWNvbmRhcnlfbmJfbGlzdGAgYXJlIGxhenkgYXR0cmlidXRlcyByZXNvbHZlZCB2aWEgYG9zaXNtLnV0aWxzLl9fZ2V0YXR0cl9fYDsgdGhleSBhcmUgYWx3YXlzIHBhdGNoZWQgd2l0aCBgY3JlYXRlPVRydWVgIHNvIG5vIHJlYWwgTmV0Qm94IGNvbm5lY3Rpb24gaXMgZXZlciBvcGVuZWQuIEFsbCB0YXNrcyBhcmUgaW52b2tlZCBkaXJlY3RseSDigJQgQ2VsZXJ5IGJpbmRzIGBzZWxmYCBvbiBkaXJlY3QgY2FsbHMsIHNvIG5vIGJyb2tlciBpcyBuZWVkZWQuCgpDbG9zZXMgIzIzNTU=
      patchset: 6bca11332605449128d5d9975acb2090d47185b4
      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/mypy/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/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: d5b2d1226cba9f0ec3758a8cf907328cd16370d0
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2458/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
