all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:feb9:9bb7
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 5de5056b-cdf9-4ae7-8a5c-566ab1fa9fab
        host_id: d2c528664e1bd332192bb574345deb0c6c7158061222e4a6c036b5ef
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:feb9:9bb7
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.135
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.83
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:feb9:9bb7
        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 python-osism-test-setup explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/python-osism/.zuul.yaml@main#128>'
      - '<Job python-osism-test-setup explicit: None implied: None source: osism/python-osism/.zuul.yaml@main#143>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: e2ab7715ab914a1c8e53f81e69944a0e
      build_refs:
      - branch: main
        change: '2323'
        change_message: "Update dependency huey to v3\n\nThis PR contains the following
          updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [huey](https://redirect.github.com/coleifer/huey) ([changelog](https://redirect.github.com/coleifer/huey/blob/master/CHANGELOG.md))
          | `==2.6.0` \u2192 `==3.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/huey/3.0.3?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/huey/2.6.0/3.0.3?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>coleifer/huey (huey)</summary>\n\n###
          [`v3.0.3`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#303)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n-
          Add a Django 6.0 task backend - pretty much works the same way the normal\n
          \ Django integration works (manage.py run\\_huey), but using Django's canonical\n
          \ APIs and decorator. Docs [here](https://huey.readthedocs.io/en/latest/django.html#django-task).\n\n[View
          commits](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n###
          [`v3.0.2`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#302)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n-
          Redis blocking dequeue no longer swallows `ConnectionError` -- the error\n
          \ propagates to the worker, which logs it and applies exponential backoff.\n
          \ Previously a downed redis server caused workers to busy-loop silently.\n-
          Chord callbacks now fire when a member task is revoked, expired or cancelled\n
          \ by a pre-execute hook -- the skipped member contributes a `None` placeholder\n
          \ result. Previously the callback was silently lost.\n- Scheduler skips
          missed periodic checks after a stall (e.g. suspend/resume)\n  instead of
          running them back-to-back, which enqueued duplicate periodic\n  tasks for
          the current minute.\n- Fix inverted timeout clamp in `wait_result()` when
          using `notify_result`\n  with redis < 6 (or an unknown server version):
          timeouts over one second were\n  cut to 1s, and sub-second timeouts blocked
          indefinitely.\n- `put_if_empty()` is now atomic for the memory and file
          storage backends,\n  restoring `lock_task()` mutual exclusion on those backends.\n-
          `FileLock` no longer unlinks an existing lock file at construction time,\n
          \ which broke mutual exclusion for any process already holding the lock.\n-
          Process-worker task timeouts use `signal.setitimer()`, so float / sub-second\n
          \ timeouts work. Previously a timeout less than 1 second was silently ignored\n
          \ (`alarm(0)` cancels the timer) and fractional seconds were truncated.\n-
          Consumer signal handlers only set flags -- logging and greenlet cleanup
          now\n  happen in the main loop, avoiding re-entrant I/O from signal context.\n-
          A user-supplied task kwarg named `task` is no longer dropped during\n  serialization.
          Context tasks (`context=True`) inject the task instance into\n  a copy of
          the kwargs rather than mutating the task's data.\n- `MemoryStorage.dequeue()`
          and `add_to_schedule()` acquire the storage lock,\n  like the other mutating
          methods.\n- `normalize_time()` treats `delay=0` as \"now\" rather than ignoring
          it, so\n  e.g. `expires=0` means \"expires immediately\" instead of \"never
          expires\".\n- Redis `enqueued_items(limit)` returned `limit + 1` items from
          the producer\n  end of the queue; it now returns the next-`limit` items
          to be dequeued,\n  matching the other storage backends.\n- Redis-dependent
          tests are skipped when no local redis server is reachable,\n  instead of
          failing at import time.\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n###
          [`v3.0.1`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#301)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n-
          Fix bug in redis version parsing when using Elasticache or any other that\n
          \ sends major/minor. redis-py incorrectly parses these as floats because\n
          \ there's only a single decimal, so the version check was breaking.\n- Rename
          max task option `--max-tasks` (previously was `--max_tasks`).\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n###
          [`v3.0.0`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#300)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n-
          Add `chord()` (map -> reduce) and `group()` (map) primitives.\n- Add `timeout`
          (using SIGALRM for process and gevent.Timeout for greenlet) to\n  control
          task running time. For threads, unfortunately, there's no good\n  mechanism
          so instead APIs for cooperatively checking timeout are provided on\n  the
          Task instance.\n- Add simple fixed-window `rate_limit()` for tasks.\n- Add
          `Result.is_ready()` method for checking result readiness.\n- New option
          for low-latency result fetching, available for RedisHuey. To use,\n  pass
          `notify_result=True` when initializing your Huey instance.\n- Add new `incr(key,
          amount=1)` to storage API for atomic increment primitive.\n  This is used
          by `chord()`.\n- Add new `wait_result()` method to storage APIs for efficiently
          waiting for a\n  result to become ready. The default implementation uses
          the exponential\n  backoff from the previous implementation of a blocking
          `Result.get()` - so no\n  changes are needed. However if you have a custom
          storage implementation, this\n  provides a mechanism for pub/sub or other
          notification of result readiness.\n- Remove Python 2.x compatibility.\n\n[View
          commits](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
          defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
          manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes
          conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**:
          Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/osism/python-osism).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
        change_url: https://github.com/osism/python-osism/pull/2323
        commit_id: 99ce5cd344ffcce021ef62e657882d48fbef6679
        patchset: 99ce5cd344ffcce021ef62e657882d48fbef6679
        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: 0c67f7eacec04985959826cc633b4cfa
      buildset_refs:
      - branch: main
        change: '2323'
        change_message: "Update dependency huey to v3\n\nThis PR contains the following
          updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [huey](https://redirect.github.com/coleifer/huey) ([changelog](https://redirect.github.com/coleifer/huey/blob/master/CHANGELOG.md))
          | `==2.6.0` \u2192 `==3.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/huey/3.0.3?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/huey/2.6.0/3.0.3?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>coleifer/huey (huey)</summary>\n\n###
          [`v3.0.3`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#303)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n-
          Add a Django 6.0 task backend - pretty much works the same way the normal\n
          \ Django integration works (manage.py run\\_huey), but using Django's canonical\n
          \ APIs and decorator. Docs [here](https://huey.readthedocs.io/en/latest/django.html#django-task).\n\n[View
          commits](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n###
          [`v3.0.2`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#302)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n-
          Redis blocking dequeue no longer swallows `ConnectionError` -- the error\n
          \ propagates to the worker, which logs it and applies exponential backoff.\n
          \ Previously a downed redis server caused workers to busy-loop silently.\n-
          Chord callbacks now fire when a member task is revoked, expired or cancelled\n
          \ by a pre-execute hook -- the skipped member contributes a `None` placeholder\n
          \ result. Previously the callback was silently lost.\n- Scheduler skips
          missed periodic checks after a stall (e.g. suspend/resume)\n  instead of
          running them back-to-back, which enqueued duplicate periodic\n  tasks for
          the current minute.\n- Fix inverted timeout clamp in `wait_result()` when
          using `notify_result`\n  with redis < 6 (or an unknown server version):
          timeouts over one second were\n  cut to 1s, and sub-second timeouts blocked
          indefinitely.\n- `put_if_empty()` is now atomic for the memory and file
          storage backends,\n  restoring `lock_task()` mutual exclusion on those backends.\n-
          `FileLock` no longer unlinks an existing lock file at construction time,\n
          \ which broke mutual exclusion for any process already holding the lock.\n-
          Process-worker task timeouts use `signal.setitimer()`, so float / sub-second\n
          \ timeouts work. Previously a timeout less than 1 second was silently ignored\n
          \ (`alarm(0)` cancels the timer) and fractional seconds were truncated.\n-
          Consumer signal handlers only set flags -- logging and greenlet cleanup
          now\n  happen in the main loop, avoiding re-entrant I/O from signal context.\n-
          A user-supplied task kwarg named `task` is no longer dropped during\n  serialization.
          Context tasks (`context=True`) inject the task instance into\n  a copy of
          the kwargs rather than mutating the task's data.\n- `MemoryStorage.dequeue()`
          and `add_to_schedule()` acquire the storage lock,\n  like the other mutating
          methods.\n- `normalize_time()` treats `delay=0` as \"now\" rather than ignoring
          it, so\n  e.g. `expires=0` means \"expires immediately\" instead of \"never
          expires\".\n- Redis `enqueued_items(limit)` returned `limit + 1` items from
          the producer\n  end of the queue; it now returns the next-`limit` items
          to be dequeued,\n  matching the other storage backends.\n- Redis-dependent
          tests are skipped when no local redis server is reachable,\n  instead of
          failing at import time.\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n###
          [`v3.0.1`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#301)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n-
          Fix bug in redis version parsing when using Elasticache or any other that\n
          \ sends major/minor. redis-py incorrectly parses these as floats because\n
          \ there's only a single decimal, so the version check was breaking.\n- Rename
          max task option `--max-tasks` (previously was `--max_tasks`).\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n###
          [`v3.0.0`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#300)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n-
          Add `chord()` (map -> reduce) and `group()` (map) primitives.\n- Add `timeout`
          (using SIGALRM for process and gevent.Timeout for greenlet) to\n  control
          task running time. For threads, unfortunately, there's no good\n  mechanism
          so instead APIs for cooperatively checking timeout are provided on\n  the
          Task instance.\n- Add simple fixed-window `rate_limit()` for tasks.\n- Add
          `Result.is_ready()` method for checking result readiness.\n- New option
          for low-latency result fetching, available for RedisHuey. To use,\n  pass
          `notify_result=True` when initializing your Huey instance.\n- Add new `incr(key,
          amount=1)` to storage API for atomic increment primitive.\n  This is used
          by `chord()`.\n- Add new `wait_result()` method to storage APIs for efficiently
          waiting for a\n  result to become ready. The default implementation uses
          the exponential\n  backoff from the previous implementation of a blocking
          `Result.get()` - so no\n  changes are needed. However if you have a custom
          storage implementation, this\n  provides a mechanism for pub/sub or other
          notification of result readiness.\n- Remove Python 2.x compatibility.\n\n[View
          commits](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
          defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
          manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes
          conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**:
          Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/osism/python-osism).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
        change_url: https://github.com/osism/python-osism/pull/2323
        commit_id: 99ce5cd344ffcce021ef62e657882d48fbef6679
        patchset: 99ce5cd344ffcce021ef62e657882d48fbef6679
        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: '2323'
      change_message: "Update dependency huey to v3\n\nThis PR contains the following
        updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
        | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
        [huey](https://redirect.github.com/coleifer/huey) ([changelog](https://redirect.github.com/coleifer/huey/blob/master/CHANGELOG.md))
        | `==2.6.0` \u2192 `==3.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/huey/3.0.3?slim=true)
        | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/huey/2.6.0/3.0.3?slim=true)
        |\n\n---\n\n### Release Notes\n\n<details>\n<summary>coleifer/huey (huey)</summary>\n\n###
        [`v3.0.3`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#303)\n\n[Compare
        Source](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n-
        Add a Django 6.0 task backend - pretty much works the same way the normal\n
        \ Django integration works (manage.py run\\_huey), but using Django's canonical\n
        \ APIs and decorator. Docs [here](https://huey.readthedocs.io/en/latest/django.html#django-task).\n\n[View
        commits](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n###
        [`v3.0.2`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#302)\n\n[Compare
        Source](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n-
        Redis blocking dequeue no longer swallows `ConnectionError` -- the error\n
        \ propagates to the worker, which logs it and applies exponential backoff.\n
        \ Previously a downed redis server caused workers to busy-loop silently.\n-
        Chord callbacks now fire when a member task is revoked, expired or cancelled\n
        \ by a pre-execute hook -- the skipped member contributes a `None` placeholder\n
        \ result. Previously the callback was silently lost.\n- Scheduler skips missed
        periodic checks after a stall (e.g. suspend/resume)\n  instead of running
        them back-to-back, which enqueued duplicate periodic\n  tasks for the current
        minute.\n- Fix inverted timeout clamp in `wait_result()` when using `notify_result`\n
        \ with redis < 6 (or an unknown server version): timeouts over one second
        were\n  cut to 1s, and sub-second timeouts blocked indefinitely.\n- `put_if_empty()`
        is now atomic for the memory and file storage backends,\n  restoring `lock_task()`
        mutual exclusion on those backends.\n- `FileLock` no longer unlinks an existing
        lock file at construction time,\n  which broke mutual exclusion for any process
        already holding the lock.\n- Process-worker task timeouts use `signal.setitimer()`,
        so float / sub-second\n  timeouts work. Previously a timeout less than 1 second
        was silently ignored\n  (`alarm(0)` cancels the timer) and fractional seconds
        were truncated.\n- Consumer signal handlers only set flags -- logging and
        greenlet cleanup now\n  happen in the main loop, avoiding re-entrant I/O from
        signal context.\n- A user-supplied task kwarg named `task` is no longer dropped
        during\n  serialization. Context tasks (`context=True`) inject the task instance
        into\n  a copy of the kwargs rather than mutating the task's data.\n- `MemoryStorage.dequeue()`
        and `add_to_schedule()` acquire the storage lock,\n  like the other mutating
        methods.\n- `normalize_time()` treats `delay=0` as \"now\" rather than ignoring
        it, so\n  e.g. `expires=0` means \"expires immediately\" instead of \"never
        expires\".\n- Redis `enqueued_items(limit)` returned `limit + 1` items from
        the producer\n  end of the queue; it now returns the next-`limit` items to
        be dequeued,\n  matching the other storage backends.\n- Redis-dependent tests
        are skipped when no local redis server is reachable,\n  instead of failing
        at import time.\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n###
        [`v3.0.1`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#301)\n\n[Compare
        Source](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n-
        Fix bug in redis version parsing when using Elasticache or any other that\n
        \ sends major/minor. redis-py incorrectly parses these as floats because\n
        \ there's only a single decimal, so the version check was breaking.\n- Rename
        max task option `--max-tasks` (previously was `--max_tasks`).\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n###
        [`v3.0.0`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#300)\n\n[Compare
        Source](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n-
        Add `chord()` (map -> reduce) and `group()` (map) primitives.\n- Add `timeout`
        (using SIGALRM for process and gevent.Timeout for greenlet) to\n  control
        task running time. For threads, unfortunately, there's no good\n  mechanism
        so instead APIs for cooperatively checking timeout are provided on\n  the
        Task instance.\n- Add simple fixed-window `rate_limit()` for tasks.\n- Add
        `Result.is_ready()` method for checking result readiness.\n- New option for
        low-latency result fetching, available for RedisHuey. To use,\n  pass `notify_result=True`
        when initializing your Huey instance.\n- Add new `incr(key, amount=1)` to
        storage API for atomic increment primitive.\n  This is used by `chord()`.\n-
        Add new `wait_result()` method to storage APIs for efficiently waiting for
        a\n  result to become ready. The default implementation uses the exponential\n
        \ backoff from the previous implementation of a blocking `Result.get()` -
        so no\n  changes are needed. However if you have a custom storage implementation,
        this\n  provides a mechanism for pub/sub or other notification of result readiness.\n-
        Remove Python 2.x compatibility.\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n</details>\n\n---\n\n###
        Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
        At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
        defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
        manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes
        conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**:
        Close this PR and you won't be reminded about this update again.\n\n---\n\n
        - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
        box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
        View the [repository job log](https://developer.mend.io/github/osism/python-osism).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
      change_url: https://github.com/osism/python-osism/pull/2323
      child_jobs: []
      commit_id: 99ce5cd344ffcce021ef62e657882d48fbef6679
      event_id: ca97ae20-6bca-11f1-89dc-3c9f52ca7a35
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/e2ab7715ab914a1c8e53f81e69944a0e/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/e2ab7715ab914a1c8e53f81e69944a0e/work/logs
        result_data_file: /var/lib/zuul/builds/e2ab7715ab914a1c8e53f81e69944a0e/work/results.json
        src_root: /var/lib/zuul/builds/e2ab7715ab914a1c8e53f81e69944a0e/work/src
        work_root: /var/lib/zuul/builds/e2ab7715ab914a1c8e53f81e69944a0e/work
      include_vars: []
      items:
      - branch: main
        change: '2323'
        change_message: "Update dependency huey to v3\n\nThis PR contains the following
          updates:\n\n| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/)
          | [Confidence](https://docs.renovatebot.com/merge-confidence/) |\n|---|---|---|---|\n|
          [huey](https://redirect.github.com/coleifer/huey) ([changelog](https://redirect.github.com/coleifer/huey/blob/master/CHANGELOG.md))
          | `==2.6.0` \u2192 `==3.0.3` | ![age](https://developer.mend.io/api/mc/badges/age/pypi/huey/3.0.3?slim=true)
          | ![confidence](https://developer.mend.io/api/mc/badges/confidence/pypi/huey/2.6.0/3.0.3?slim=true)
          |\n\n---\n\n### Release Notes\n\n<details>\n<summary>coleifer/huey (huey)</summary>\n\n###
          [`v3.0.3`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#303)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n-
          Add a Django 6.0 task backend - pretty much works the same way the normal\n
          \ Django integration works (manage.py run\\_huey), but using Django's canonical\n
          \ APIs and decorator. Docs [here](https://huey.readthedocs.io/en/latest/django.html#django-task).\n\n[View
          commits](https://redirect.github.com/coleifer/huey/compare/3.0.2...3.0.3)\n\n###
          [`v3.0.2`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#302)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n-
          Redis blocking dequeue no longer swallows `ConnectionError` -- the error\n
          \ propagates to the worker, which logs it and applies exponential backoff.\n
          \ Previously a downed redis server caused workers to busy-loop silently.\n-
          Chord callbacks now fire when a member task is revoked, expired or cancelled\n
          \ by a pre-execute hook -- the skipped member contributes a `None` placeholder\n
          \ result. Previously the callback was silently lost.\n- Scheduler skips
          missed periodic checks after a stall (e.g. suspend/resume)\n  instead of
          running them back-to-back, which enqueued duplicate periodic\n  tasks for
          the current minute.\n- Fix inverted timeout clamp in `wait_result()` when
          using `notify_result`\n  with redis < 6 (or an unknown server version):
          timeouts over one second were\n  cut to 1s, and sub-second timeouts blocked
          indefinitely.\n- `put_if_empty()` is now atomic for the memory and file
          storage backends,\n  restoring `lock_task()` mutual exclusion on those backends.\n-
          `FileLock` no longer unlinks an existing lock file at construction time,\n
          \ which broke mutual exclusion for any process already holding the lock.\n-
          Process-worker task timeouts use `signal.setitimer()`, so float / sub-second\n
          \ timeouts work. Previously a timeout less than 1 second was silently ignored\n
          \ (`alarm(0)` cancels the timer) and fractional seconds were truncated.\n-
          Consumer signal handlers only set flags -- logging and greenlet cleanup
          now\n  happen in the main loop, avoiding re-entrant I/O from signal context.\n-
          A user-supplied task kwarg named `task` is no longer dropped during\n  serialization.
          Context tasks (`context=True`) inject the task instance into\n  a copy of
          the kwargs rather than mutating the task's data.\n- `MemoryStorage.dequeue()`
          and `add_to_schedule()` acquire the storage lock,\n  like the other mutating
          methods.\n- `normalize_time()` treats `delay=0` as \"now\" rather than ignoring
          it, so\n  e.g. `expires=0` means \"expires immediately\" instead of \"never
          expires\".\n- Redis `enqueued_items(limit)` returned `limit + 1` items from
          the producer\n  end of the queue; it now returns the next-`limit` items
          to be dequeued,\n  matching the other storage backends.\n- Redis-dependent
          tests are skipped when no local redis server is reachable,\n  instead of
          failing at import time.\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.1...3.0.2)\n\n###
          [`v3.0.1`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#301)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n-
          Fix bug in redis version parsing when using Elasticache or any other that\n
          \ sends major/minor. redis-py incorrectly parses these as floats because\n
          \ there's only a single decimal, so the version check was breaking.\n- Rename
          max task option `--max-tasks` (previously was `--max_tasks`).\n\n[View commits](https://redirect.github.com/coleifer/huey/compare/3.0.0...3.0.1)\n\n###
          [`v3.0.0`](https://redirect.github.com/coleifer/huey/blob/HEAD/CHANGELOG.md#300)\n\n[Compare
          Source](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n-
          Add `chord()` (map -> reduce) and `group()` (map) primitives.\n- Add `timeout`
          (using SIGALRM for process and gevent.Timeout for greenlet) to\n  control
          task running time. For threads, unfortunately, there's no good\n  mechanism
          so instead APIs for cooperatively checking timeout are provided on\n  the
          Task instance.\n- Add simple fixed-window `rate_limit()` for tasks.\n- Add
          `Result.is_ready()` method for checking result readiness.\n- New option
          for low-latency result fetching, available for RedisHuey. To use,\n  pass
          `notify_result=True` when initializing your Huey instance.\n- Add new `incr(key,
          amount=1)` to storage API for atomic increment primitive.\n  This is used
          by `chord()`.\n- Add new `wait_result()` method to storage APIs for efficiently
          waiting for a\n  result to become ready. The default implementation uses
          the exponential\n  backoff from the previous implementation of a blocking
          `Result.get()` - so no\n  changes are needed. However if you have a custom
          storage implementation, this\n  provides a mechanism for pub/sub or other
          notification of result readiness.\n- Remove Python 2.x compatibility.\n\n[View
          commits](https://redirect.github.com/coleifer/huey/compare/2.6.0...3.0.0)\n\n</details>\n\n---\n\n###
          Configuration\n\n\U0001F4C5 **Schedule**: (UTC)\n\n- Branch creation\n  -
          At any time (no schedule defined)\n- Automerge\n  - At any time (no schedule
          defined)\n\n\U0001F6A6 **Automerge**: Disabled by config. Please merge this
          manually once you are satisfied.\n\n\u267B **Rebasing**: Whenever PR becomes
          conflicted, or you tick the rebase/retry checkbox.\n\n\U0001F515 **Ignore**:
          Close this PR and you won't be reminded about this update again.\n\n---\n\n
          - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this
          box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).
          View the [repository job log](https://developer.mend.io/github/osism/python-osism).\n<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDYuMSIsInVwZGF0ZWRJblZlciI6IjQzLjIxOS4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->\n"
        change_url: https://github.com/osism/python-osism/pull/2323
        commit_id: 99ce5cd344ffcce021ef62e657882d48fbef6679
        patchset: 99ce5cd344ffcce021ef62e657882d48fbef6679
        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: python-osism-test-setup
      jobtags: []
      max_attempts: 3
      message: VXBkYXRlIGRlcGVuZGVuY3kgaHVleSB0byB2MwoKVGhpcyBQUiBjb250YWlucyB0aGUgZm9sbG93aW5nIHVwZGF0ZXM6Cgp8IFBhY2thZ2UgfCBDaGFuZ2UgfCBbQWdlXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8IFtDb25maWRlbmNlXShodHRwczovL2RvY3MucmVub3ZhdGVib3QuY29tL21lcmdlLWNvbmZpZGVuY2UvKSB8CnwtLS18LS0tfC0tLXwtLS18CnwgW2h1ZXldKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jb2xlaWZlci9odWV5KSAoW2NoYW5nZWxvZ10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbGVpZmVyL2h1ZXkvYmxvYi9tYXN0ZXIvQ0hBTkdFTE9HLm1kKSkgfCBgPT0yLjYuMGAg4oaSIGA9PTMuMC4zYCB8ICFbYWdlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvYWdlL3B5cGkvaHVleS8zLjAuMz9zbGltPXRydWUpIHwgIVtjb25maWRlbmNlXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2FwaS9tYy9iYWRnZXMvY29uZmlkZW5jZS9weXBpL2h1ZXkvMi42LjAvMy4wLjM/c2xpbT10cnVlKSB8CgotLS0KCiMjIyBSZWxlYXNlIE5vdGVzCgo8ZGV0YWlscz4KPHN1bW1hcnk+Y29sZWlmZXIvaHVleSAoaHVleSk8L3N1bW1hcnk+CgojIyMgW2B2My4wLjNgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29sZWlmZXIvaHVleS9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzMwMykKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbGVpZmVyL2h1ZXkvY29tcGFyZS8zLjAuMi4uLjMuMC4zKQoKLSBBZGQgYSBEamFuZ28gNi4wIHRhc2sgYmFja2VuZCAtIHByZXR0eSBtdWNoIHdvcmtzIHRoZSBzYW1lIHdheSB0aGUgbm9ybWFsCiAgRGphbmdvIGludGVncmF0aW9uIHdvcmtzIChtYW5hZ2UucHkgcnVuXF9odWV5KSwgYnV0IHVzaW5nIERqYW5nbydzIGNhbm9uaWNhbAogIEFQSXMgYW5kIGRlY29yYXRvci4gRG9jcyBbaGVyZV0oaHR0cHM6Ly9odWV5LnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC9kamFuZ28uaHRtbCNkamFuZ28tdGFzaykuCgpbVmlldyBjb21taXRzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29sZWlmZXIvaHVleS9jb21wYXJlLzMuMC4yLi4uMy4wLjMpCgojIyMgW2B2My4wLjJgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29sZWlmZXIvaHVleS9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzMwMikKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbGVpZmVyL2h1ZXkvY29tcGFyZS8zLjAuMS4uLjMuMC4yKQoKLSBSZWRpcyBibG9ja2luZyBkZXF1ZXVlIG5vIGxvbmdlciBzd2FsbG93cyBgQ29ubmVjdGlvbkVycm9yYCAtLSB0aGUgZXJyb3IKICBwcm9wYWdhdGVzIHRvIHRoZSB3b3JrZXIsIHdoaWNoIGxvZ3MgaXQgYW5kIGFwcGxpZXMgZXhwb25lbnRpYWwgYmFja29mZi4KICBQcmV2aW91c2x5IGEgZG93bmVkIHJlZGlzIHNlcnZlciBjYXVzZWQgd29ya2VycyB0byBidXN5LWxvb3Agc2lsZW50bHkuCi0gQ2hvcmQgY2FsbGJhY2tzIG5vdyBmaXJlIHdoZW4gYSBtZW1iZXIgdGFzayBpcyByZXZva2VkLCBleHBpcmVkIG9yIGNhbmNlbGxlZAogIGJ5IGEgcHJlLWV4ZWN1dGUgaG9vayAtLSB0aGUgc2tpcHBlZCBtZW1iZXIgY29udHJpYnV0ZXMgYSBgTm9uZWAgcGxhY2Vob2xkZXIKICByZXN1bHQuIFByZXZpb3VzbHkgdGhlIGNhbGxiYWNrIHdhcyBzaWxlbnRseSBsb3N0LgotIFNjaGVkdWxlciBza2lwcyBtaXNzZWQgcGVyaW9kaWMgY2hlY2tzIGFmdGVyIGEgc3RhbGwgKGUuZy4gc3VzcGVuZC9yZXN1bWUpCiAgaW5zdGVhZCBvZiBydW5uaW5nIHRoZW0gYmFjay10by1iYWNrLCB3aGljaCBlbnF1ZXVlZCBkdXBsaWNhdGUgcGVyaW9kaWMKICB0YXNrcyBmb3IgdGhlIGN1cnJlbnQgbWludXRlLgotIEZpeCBpbnZlcnRlZCB0aW1lb3V0IGNsYW1wIGluIGB3YWl0X3Jlc3VsdCgpYCB3aGVuIHVzaW5nIGBub3RpZnlfcmVzdWx0YAogIHdpdGggcmVkaXMgPCA2IChvciBhbiB1bmtub3duIHNlcnZlciB2ZXJzaW9uKTogdGltZW91dHMgb3ZlciBvbmUgc2Vjb25kIHdlcmUKICBjdXQgdG8gMXMsIGFuZCBzdWItc2Vjb25kIHRpbWVvdXRzIGJsb2NrZWQgaW5kZWZpbml0ZWx5LgotIGBwdXRfaWZfZW1wdHkoKWAgaXMgbm93IGF0b21pYyBmb3IgdGhlIG1lbW9yeSBhbmQgZmlsZSBzdG9yYWdlIGJhY2tlbmRzLAogIHJlc3RvcmluZyBgbG9ja190YXNrKClgIG11dHVhbCBleGNsdXNpb24gb24gdGhvc2UgYmFja2VuZHMuCi0gYEZpbGVMb2NrYCBubyBsb25nZXIgdW5saW5rcyBhbiBleGlzdGluZyBsb2NrIGZpbGUgYXQgY29uc3RydWN0aW9uIHRpbWUsCiAgd2hpY2ggYnJva2UgbXV0dWFsIGV4Y2x1c2lvbiBmb3IgYW55IHByb2Nlc3MgYWxyZWFkeSBob2xkaW5nIHRoZSBsb2NrLgotIFByb2Nlc3Mtd29ya2VyIHRhc2sgdGltZW91dHMgdXNlIGBzaWduYWwuc2V0aXRpbWVyKClgLCBzbyBmbG9hdCAvIHN1Yi1zZWNvbmQKICB0aW1lb3V0cyB3b3JrLiBQcmV2aW91c2x5IGEgdGltZW91dCBsZXNzIHRoYW4gMSBzZWNvbmQgd2FzIHNpbGVudGx5IGlnbm9yZWQKICAoYGFsYXJtKDApYCBjYW5jZWxzIHRoZSB0aW1lcikgYW5kIGZyYWN0aW9uYWwgc2Vjb25kcyB3ZXJlIHRydW5jYXRlZC4KLSBDb25zdW1lciBzaWduYWwgaGFuZGxlcnMgb25seSBzZXQgZmxhZ3MgLS0gbG9nZ2luZyBhbmQgZ3JlZW5sZXQgY2xlYW51cCBub3cKICBoYXBwZW4gaW4gdGhlIG1haW4gbG9vcCwgYXZvaWRpbmcgcmUtZW50cmFudCBJL08gZnJvbSBzaWduYWwgY29udGV4dC4KLSBBIHVzZXItc3VwcGxpZWQgdGFzayBrd2FyZyBuYW1lZCBgdGFza2AgaXMgbm8gbG9uZ2VyIGRyb3BwZWQgZHVyaW5nCiAgc2VyaWFsaXphdGlvbi4gQ29udGV4dCB0YXNrcyAoYGNvbnRleHQ9VHJ1ZWApIGluamVjdCB0aGUgdGFzayBpbnN0YW5jZSBpbnRvCiAgYSBjb3B5IG9mIHRoZSBrd2FyZ3MgcmF0aGVyIHRoYW4gbXV0YXRpbmcgdGhlIHRhc2sncyBkYXRhLgotIGBNZW1vcnlTdG9yYWdlLmRlcXVldWUoKWAgYW5kIGBhZGRfdG9fc2NoZWR1bGUoKWAgYWNxdWlyZSB0aGUgc3RvcmFnZSBsb2NrLAogIGxpa2UgdGhlIG90aGVyIG11dGF0aW5nIG1ldGhvZHMuCi0gYG5vcm1hbGl6ZV90aW1lKClgIHRyZWF0cyBgZGVsYXk9MGAgYXMgIm5vdyIgcmF0aGVyIHRoYW4gaWdub3JpbmcgaXQsIHNvCiAgZS5nLiBgZXhwaXJlcz0wYCBtZWFucyAiZXhwaXJlcyBpbW1lZGlhdGVseSIgaW5zdGVhZCBvZiAibmV2ZXIgZXhwaXJlcyIuCi0gUmVkaXMgYGVucXVldWVkX2l0ZW1zKGxpbWl0KWAgcmV0dXJuZWQgYGxpbWl0ICsgMWAgaXRlbXMgZnJvbSB0aGUgcHJvZHVjZXIKICBlbmQgb2YgdGhlIHF1ZXVlOyBpdCBub3cgcmV0dXJucyB0aGUgbmV4dC1gbGltaXRgIGl0ZW1zIHRvIGJlIGRlcXVldWVkLAogIG1hdGNoaW5nIHRoZSBvdGhlciBzdG9yYWdlIGJhY2tlbmRzLgotIFJlZGlzLWRlcGVuZGVudCB0ZXN0cyBhcmUgc2tpcHBlZCB3aGVuIG5vIGxvY2FsIHJlZGlzIHNlcnZlciBpcyByZWFjaGFibGUsCiAgaW5zdGVhZCBvZiBmYWlsaW5nIGF0IGltcG9ydCB0aW1lLgoKW1ZpZXcgY29tbWl0c10oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbGVpZmVyL2h1ZXkvY29tcGFyZS8zLjAuMS4uLjMuMC4yKQoKIyMjIFtgdjMuMC4xYF0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbGVpZmVyL2h1ZXkvYmxvYi9IRUFEL0NIQU5HRUxPRy5tZCMzMDEpCgpbQ29tcGFyZSBTb3VyY2VdKGh0dHBzOi8vcmVkaXJlY3QuZ2l0aHViLmNvbS9jb2xlaWZlci9odWV5L2NvbXBhcmUvMy4wLjAuLi4zLjAuMSkKCi0gRml4IGJ1ZyBpbiByZWRpcyB2ZXJzaW9uIHBhcnNpbmcgd2hlbiB1c2luZyBFbGFzdGljYWNoZSBvciBhbnkgb3RoZXIgdGhhdAogIHNlbmRzIG1ham9yL21pbm9yLiByZWRpcy1weSBpbmNvcnJlY3RseSBwYXJzZXMgdGhlc2UgYXMgZmxvYXRzIGJlY2F1c2UKICB0aGVyZSdzIG9ubHkgYSBzaW5nbGUgZGVjaW1hbCwgc28gdGhlIHZlcnNpb24gY2hlY2sgd2FzIGJyZWFraW5nLgotIFJlbmFtZSBtYXggdGFzayBvcHRpb24gYC0tbWF4LXRhc2tzYCAocHJldmlvdXNseSB3YXMgYC0tbWF4X3Rhc2tzYCkuCgpbVmlldyBjb21taXRzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29sZWlmZXIvaHVleS9jb21wYXJlLzMuMC4wLi4uMy4wLjEpCgojIyMgW2B2My4wLjBgXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29sZWlmZXIvaHVleS9ibG9iL0hFQUQvQ0hBTkdFTE9HLm1kIzMwMCkKCltDb21wYXJlIFNvdXJjZV0oaHR0cHM6Ly9yZWRpcmVjdC5naXRodWIuY29tL2NvbGVpZmVyL2h1ZXkvY29tcGFyZS8yLjYuMC4uLjMuMC4wKQoKLSBBZGQgYGNob3JkKClgIChtYXAgLT4gcmVkdWNlKSBhbmQgYGdyb3VwKClgIChtYXApIHByaW1pdGl2ZXMuCi0gQWRkIGB0aW1lb3V0YCAodXNpbmcgU0lHQUxSTSBmb3IgcHJvY2VzcyBhbmQgZ2V2ZW50LlRpbWVvdXQgZm9yIGdyZWVubGV0KSB0bwogIGNvbnRyb2wgdGFzayBydW5uaW5nIHRpbWUuIEZvciB0aHJlYWRzLCB1bmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIGdvb2QKICBtZWNoYW5pc20gc28gaW5zdGVhZCBBUElzIGZvciBjb29wZXJhdGl2ZWx5IGNoZWNraW5nIHRpbWVvdXQgYXJlIHByb3ZpZGVkIG9uCiAgdGhlIFRhc2sgaW5zdGFuY2UuCi0gQWRkIHNpbXBsZSBmaXhlZC13aW5kb3cgYHJhdGVfbGltaXQoKWAgZm9yIHRhc2tzLgotIEFkZCBgUmVzdWx0LmlzX3JlYWR5KClgIG1ldGhvZCBmb3IgY2hlY2tpbmcgcmVzdWx0IHJlYWRpbmVzcy4KLSBOZXcgb3B0aW9uIGZvciBsb3ctbGF0ZW5jeSByZXN1bHQgZmV0Y2hpbmcsIGF2YWlsYWJsZSBmb3IgUmVkaXNIdWV5LiBUbyB1c2UsCiAgcGFzcyBgbm90aWZ5X3Jlc3VsdD1UcnVlYCB3aGVuIGluaXRpYWxpemluZyB5b3VyIEh1ZXkgaW5zdGFuY2UuCi0gQWRkIG5ldyBgaW5jcihrZXksIGFtb3VudD0xKWAgdG8gc3RvcmFnZSBBUEkgZm9yIGF0b21pYyBpbmNyZW1lbnQgcHJpbWl0aXZlLgogIFRoaXMgaXMgdXNlZCBieSBgY2hvcmQoKWAuCi0gQWRkIG5ldyBgd2FpdF9yZXN1bHQoKWAgbWV0aG9kIHRvIHN0b3JhZ2UgQVBJcyBmb3IgZWZmaWNpZW50bHkgd2FpdGluZyBmb3IgYQogIHJlc3VsdCB0byBiZWNvbWUgcmVhZHkuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIGV4cG9uZW50aWFsCiAgYmFja29mZiBmcm9tIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBhIGJsb2NraW5nIGBSZXN1bHQuZ2V0KClgIC0gc28gbm8KICBjaGFuZ2VzIGFyZSBuZWVkZWQuIEhvd2V2ZXIgaWYgeW91IGhhdmUgYSBjdXN0b20gc3RvcmFnZSBpbXBsZW1lbnRhdGlvbiwgdGhpcwogIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBwdWIvc3ViIG9yIG90aGVyIG5vdGlmaWNhdGlvbiBvZiByZXN1bHQgcmVhZGluZXNzLgotIFJlbW92ZSBQeXRob24gMi54IGNvbXBhdGliaWxpdHkuCgpbVmlldyBjb21taXRzXShodHRwczovL3JlZGlyZWN0LmdpdGh1Yi5jb20vY29sZWlmZXIvaHVleS9jb21wYXJlLzIuNi4wLi4uMy4wLjApCgo8L2RldGFpbHM+CgotLS0KCiMjIyBDb25maWd1cmF0aW9uCgrwn5OFICoqU2NoZWR1bGUqKjogKFVUQykKCi0gQnJhbmNoIGNyZWF0aW9uCiAgLSBBdCBhbnkgdGltZSAobm8gc2NoZWR1bGUgZGVmaW5lZCkKLSBBdXRvbWVyZ2UKICAtIEF0IGFueSB0aW1lIChubyBzY2hlZHVsZSBkZWZpbmVkKQoK8J+apiAqKkF1dG9tZXJnZSoqOiBEaXNhYmxlZCBieSBjb25maWcuIFBsZWFzZSBtZXJnZSB0aGlzIG1hbnVhbGx5IG9uY2UgeW91IGFyZSBzYXRpc2ZpZWQuCgrimbsgKipSZWJhc2luZyoqOiBXaGVuZXZlciBQUiBiZWNvbWVzIGNvbmZsaWN0ZWQsIG9yIHlvdSB0aWNrIHRoZSByZWJhc2UvcmV0cnkgY2hlY2tib3guCgrwn5SVICoqSWdub3JlKio6IENsb3NlIHRoaXMgUFIgYW5kIHlvdSB3b24ndCBiZSByZW1pbmRlZCBhYm91dCB0aGlzIHVwZGF0ZSBhZ2Fpbi4KCi0tLQoKIC0gWyBdIDwhLS0gcmViYXNlLWNoZWNrIC0tPklmIHlvdSB3YW50IHRvIHJlYmFzZS9yZXRyeSB0aGlzIFBSLCBjaGVjayB0aGlzIGJveAoKLS0tCgpUaGlzIFBSIHdhcyBnZW5lcmF0ZWQgYnkgW01lbmQgUmVub3ZhdGVdKGh0dHBzOi8vbWVuZC5pby9yZW5vdmF0ZS8pLiBWaWV3IHRoZSBbcmVwb3NpdG9yeSBqb2IgbG9nXShodHRwczovL2RldmVsb3Blci5tZW5kLmlvL2dpdGh1Yi9vc2lzbS9weXRob24tb3Npc20pLgo8IS0tcmVub3ZhdGUtZGVidWc6ZXlKamNtVmhkR1ZrU1c1V1pYSWlPaUkwTXk0eU1EWXVNU0lzSW5Wd1pHRjBaV1JKYmxabGNpSTZJalF6TGpJeE9TNHdJaXdpZEdGeVoyVjBRbkpoYm1Ob0lqb2liV0ZwYmlJc0lteGhZbVZzY3lJNld5SnlaVzV2ZG1GMFpTSmRmUT09LS0+Cg==
      patchset: 99ce5cd344ffcce021ef62e657882d48fbef6679
      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/python-osism:
            canonical_name: github.com/osism/python-osism
            checkout: main
            commit: af8329c7bf25a991ac89fa6f029785143dfdf3ec
          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/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/test-setup.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/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: af8329c7bf25a991ac89fa6f029785143dfdf3ec
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2323/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
