all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fef9:d16a
      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: bd28091c-3ea2-4203-9103-63835afbcfbc
        host_id: 4667d18e0398acd2fb730ad41ba32e35789c4ac8cd4c0875d25b316b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fef9:d16a
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.178
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.13
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fef9:d16a
        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: 1abb1f6c8624457a961485763d24df82
      build_refs:
      - branch: main
        change: '2332'
        change_message: "Fix silent reconciler skips on lock contention\n\n## Summary\n\nFix
          explicit inventory reconciliations that silently skip when they cannot\nacquire
          the reconciler lock, leaving `osism sync inventory` waiting for output\nthat
          will never arrive.\n\nAlso make related reconciler failure paths publish
          terminal output, return a\nnon-zero CLI result when the output wait itself
          times out, and prevent explicit\nand periodic reconciler processes from
          rewriting the inventory concurrently.\n\n## Problem\n\n`osism sync inventory`
          dispatches an explicit `reconciler.run` task and waits\nfor a terminal marker
          in that task's Redis output stream.\n\nPreviously, `reconciler.run` attempted
          to acquire its lock for 20 seconds. If\nthe lock remained held, the task
          skipped its entire body, published no terminal\nmarker, returned `None`,
          and was recorded by Celery as successful. The waiting\nCLI could not distinguish
          that silent skip from a still-running task, so it\nremained blocked until
          its configured task-output timeout.\n\nThis occurred during a deploy when
          seven reconciler tasks were dispatched in a\nshort burst. Five tasks silently
          skipped after approximately 20 seconds. The\nCLI was waiting on one of those
          tasks with `--task-timeout 1800`, so the deploy\nblocked for the full 30
          minutes before the output wait timed out and aborted\nthe deploy.\n\nSimply
          failing after the lock timeout is insufficient. The current lock holder\nmay
          have started before the caller's inventory changes existed, so the explicit\nsync
          request must eventually execute its own reconciliation.\n\n## Changes\n\n-
          Return a non-zero CLI result when waiting for reconciler output times out.\n-
          Retry an explicit reconciler task up to five times at fixed five-second\n
          \ intervals when it cannot acquire the lock.\n- Requeue the same Celery
          task ID so the waiting CLI continues following the\n  correct output stream.\n-
          Publish non-terminal retry status messages so users see the contention and\n
          \ the output inactivity deadline is refreshed.\n- Publish a non-zero terminal
          result after retry exhaustion and preserve the\n  Celery failure state.\n-
          Guard explicit reconciliation failure paths so subprocess startup, output\n
          \ handling, process timeout, and task-lock failures publish terminal output\n
          \ when possible.\n- Kill and reap `/run.sh` after its existing 60-second
          process wait expires,\n  and always release an acquired lock.\n- Use one
          execution lock key for explicit and periodic reconciler tasks.\n  Explicit
          tasks retry on contention; periodic tasks continue to coalesce by\n  skipping
          a contended run.\n\n## Scope limits\n\nTerminal output publication remains
          best-effort. If Redis itself is\nunavailable, the task cannot publish a
          terminal marker.\n\nThis change preserves the existing 60-second lock auto-release
          time. Extending\nthe lease for reconciliations that run longer than 60 seconds
          is outside this\nPR's scope.\n\n## Testing\n\n- Unit tests cover CLI output-wait
          timeout failure.\n- Unit tests cover contention retries, status publication
          failures, retry\n  exhaustion, and no-wait behavior.\n- Unit tests cover
          subprocess and task failure cleanup paths.\n- Unit tests verify explicit
          and periodic tasks use the same execution lock.\n- Full test suite, Black,
          and flake8 pass.\n"
        change_url: https://github.com/osism/python-osism/pull/2332
        commit_id: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
        patchset: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
        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: 1c755f6806044dd1b373d9c2b265db18
      buildset_refs:
      - branch: main
        change: '2332'
        change_message: "Fix silent reconciler skips on lock contention\n\n## Summary\n\nFix
          explicit inventory reconciliations that silently skip when they cannot\nacquire
          the reconciler lock, leaving `osism sync inventory` waiting for output\nthat
          will never arrive.\n\nAlso make related reconciler failure paths publish
          terminal output, return a\nnon-zero CLI result when the output wait itself
          times out, and prevent explicit\nand periodic reconciler processes from
          rewriting the inventory concurrently.\n\n## Problem\n\n`osism sync inventory`
          dispatches an explicit `reconciler.run` task and waits\nfor a terminal marker
          in that task's Redis output stream.\n\nPreviously, `reconciler.run` attempted
          to acquire its lock for 20 seconds. If\nthe lock remained held, the task
          skipped its entire body, published no terminal\nmarker, returned `None`,
          and was recorded by Celery as successful. The waiting\nCLI could not distinguish
          that silent skip from a still-running task, so it\nremained blocked until
          its configured task-output timeout.\n\nThis occurred during a deploy when
          seven reconciler tasks were dispatched in a\nshort burst. Five tasks silently
          skipped after approximately 20 seconds. The\nCLI was waiting on one of those
          tasks with `--task-timeout 1800`, so the deploy\nblocked for the full 30
          minutes before the output wait timed out and aborted\nthe deploy.\n\nSimply
          failing after the lock timeout is insufficient. The current lock holder\nmay
          have started before the caller's inventory changes existed, so the explicit\nsync
          request must eventually execute its own reconciliation.\n\n## Changes\n\n-
          Return a non-zero CLI result when waiting for reconciler output times out.\n-
          Retry an explicit reconciler task up to five times at fixed five-second\n
          \ intervals when it cannot acquire the lock.\n- Requeue the same Celery
          task ID so the waiting CLI continues following the\n  correct output stream.\n-
          Publish non-terminal retry status messages so users see the contention and\n
          \ the output inactivity deadline is refreshed.\n- Publish a non-zero terminal
          result after retry exhaustion and preserve the\n  Celery failure state.\n-
          Guard explicit reconciliation failure paths so subprocess startup, output\n
          \ handling, process timeout, and task-lock failures publish terminal output\n
          \ when possible.\n- Kill and reap `/run.sh` after its existing 60-second
          process wait expires,\n  and always release an acquired lock.\n- Use one
          execution lock key for explicit and periodic reconciler tasks.\n  Explicit
          tasks retry on contention; periodic tasks continue to coalesce by\n  skipping
          a contended run.\n\n## Scope limits\n\nTerminal output publication remains
          best-effort. If Redis itself is\nunavailable, the task cannot publish a
          terminal marker.\n\nThis change preserves the existing 60-second lock auto-release
          time. Extending\nthe lease for reconciliations that run longer than 60 seconds
          is outside this\nPR's scope.\n\n## Testing\n\n- Unit tests cover CLI output-wait
          timeout failure.\n- Unit tests cover contention retries, status publication
          failures, retry\n  exhaustion, and no-wait behavior.\n- Unit tests cover
          subprocess and task failure cleanup paths.\n- Unit tests verify explicit
          and periodic tasks use the same execution lock.\n- Full test suite, Black,
          and flake8 pass.\n"
        change_url: https://github.com/osism/python-osism/pull/2332
        commit_id: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
        patchset: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
        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: '2332'
      change_message: "Fix silent reconciler skips on lock contention\n\n## Summary\n\nFix
        explicit inventory reconciliations that silently skip when they cannot\nacquire
        the reconciler lock, leaving `osism sync inventory` waiting for output\nthat
        will never arrive.\n\nAlso make related reconciler failure paths publish terminal
        output, return a\nnon-zero CLI result when the output wait itself times out,
        and prevent explicit\nand periodic reconciler processes from rewriting the
        inventory concurrently.\n\n## Problem\n\n`osism sync inventory` dispatches
        an explicit `reconciler.run` task and waits\nfor a terminal marker in that
        task's Redis output stream.\n\nPreviously, `reconciler.run` attempted to acquire
        its lock for 20 seconds. If\nthe lock remained held, the task skipped its
        entire body, published no terminal\nmarker, returned `None`, and was recorded
        by Celery as successful. The waiting\nCLI could not distinguish that silent
        skip from a still-running task, so it\nremained blocked until its configured
        task-output timeout.\n\nThis occurred during a deploy when seven reconciler
        tasks were dispatched in a\nshort burst. Five tasks silently skipped after
        approximately 20 seconds. The\nCLI was waiting on one of those tasks with
        `--task-timeout 1800`, so the deploy\nblocked for the full 30 minutes before
        the output wait timed out and aborted\nthe deploy.\n\nSimply failing after
        the lock timeout is insufficient. The current lock holder\nmay have started
        before the caller's inventory changes existed, so the explicit\nsync request
        must eventually execute its own reconciliation.\n\n## Changes\n\n- Return
        a non-zero CLI result when waiting for reconciler output times out.\n- Retry
        an explicit reconciler task up to five times at fixed five-second\n  intervals
        when it cannot acquire the lock.\n- Requeue the same Celery task ID so the
        waiting CLI continues following the\n  correct output stream.\n- Publish non-terminal
        retry status messages so users see the contention and\n  the output inactivity
        deadline is refreshed.\n- Publish a non-zero terminal result after retry exhaustion
        and preserve the\n  Celery failure state.\n- Guard explicit reconciliation
        failure paths so subprocess startup, output\n  handling, process timeout,
        and task-lock failures publish terminal output\n  when possible.\n- Kill and
        reap `/run.sh` after its existing 60-second process wait expires,\n  and always
        release an acquired lock.\n- Use one execution lock key for explicit and periodic
        reconciler tasks.\n  Explicit tasks retry on contention; periodic tasks continue
        to coalesce by\n  skipping a contended run.\n\n## Scope limits\n\nTerminal
        output publication remains best-effort. If Redis itself is\nunavailable, the
        task cannot publish a terminal marker.\n\nThis change preserves the existing
        60-second lock auto-release time. Extending\nthe lease for reconciliations
        that run longer than 60 seconds is outside this\nPR's scope.\n\n## Testing\n\n-
        Unit tests cover CLI output-wait timeout failure.\n- Unit tests cover contention
        retries, status publication failures, retry\n  exhaustion, and no-wait behavior.\n-
        Unit tests cover subprocess and task failure cleanup paths.\n- Unit tests
        verify explicit and periodic tasks use the same execution lock.\n- Full test
        suite, Black, and flake8 pass.\n"
      change_url: https://github.com/osism/python-osism/pull/2332
      child_jobs: []
      commit_id: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
      event_id: cbad4240-63c6-11f1-988e-120a02b40584
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/1abb1f6c8624457a961485763d24df82/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/1abb1f6c8624457a961485763d24df82/work/logs
        result_data_file: /var/lib/zuul/builds/1abb1f6c8624457a961485763d24df82/work/results.json
        src_root: /var/lib/zuul/builds/1abb1f6c8624457a961485763d24df82/work/src
        work_root: /var/lib/zuul/builds/1abb1f6c8624457a961485763d24df82/work
      include_vars: []
      items:
      - branch: main
        change: '2332'
        change_message: "Fix silent reconciler skips on lock contention\n\n## Summary\n\nFix
          explicit inventory reconciliations that silently skip when they cannot\nacquire
          the reconciler lock, leaving `osism sync inventory` waiting for output\nthat
          will never arrive.\n\nAlso make related reconciler failure paths publish
          terminal output, return a\nnon-zero CLI result when the output wait itself
          times out, and prevent explicit\nand periodic reconciler processes from
          rewriting the inventory concurrently.\n\n## Problem\n\n`osism sync inventory`
          dispatches an explicit `reconciler.run` task and waits\nfor a terminal marker
          in that task's Redis output stream.\n\nPreviously, `reconciler.run` attempted
          to acquire its lock for 20 seconds. If\nthe lock remained held, the task
          skipped its entire body, published no terminal\nmarker, returned `None`,
          and was recorded by Celery as successful. The waiting\nCLI could not distinguish
          that silent skip from a still-running task, so it\nremained blocked until
          its configured task-output timeout.\n\nThis occurred during a deploy when
          seven reconciler tasks were dispatched in a\nshort burst. Five tasks silently
          skipped after approximately 20 seconds. The\nCLI was waiting on one of those
          tasks with `--task-timeout 1800`, so the deploy\nblocked for the full 30
          minutes before the output wait timed out and aborted\nthe deploy.\n\nSimply
          failing after the lock timeout is insufficient. The current lock holder\nmay
          have started before the caller's inventory changes existed, so the explicit\nsync
          request must eventually execute its own reconciliation.\n\n## Changes\n\n-
          Return a non-zero CLI result when waiting for reconciler output times out.\n-
          Retry an explicit reconciler task up to five times at fixed five-second\n
          \ intervals when it cannot acquire the lock.\n- Requeue the same Celery
          task ID so the waiting CLI continues following the\n  correct output stream.\n-
          Publish non-terminal retry status messages so users see the contention and\n
          \ the output inactivity deadline is refreshed.\n- Publish a non-zero terminal
          result after retry exhaustion and preserve the\n  Celery failure state.\n-
          Guard explicit reconciliation failure paths so subprocess startup, output\n
          \ handling, process timeout, and task-lock failures publish terminal output\n
          \ when possible.\n- Kill and reap `/run.sh` after its existing 60-second
          process wait expires,\n  and always release an acquired lock.\n- Use one
          execution lock key for explicit and periodic reconciler tasks.\n  Explicit
          tasks retry on contention; periodic tasks continue to coalesce by\n  skipping
          a contended run.\n\n## Scope limits\n\nTerminal output publication remains
          best-effort. If Redis itself is\nunavailable, the task cannot publish a
          terminal marker.\n\nThis change preserves the existing 60-second lock auto-release
          time. Extending\nthe lease for reconciliations that run longer than 60 seconds
          is outside this\nPR's scope.\n\n## Testing\n\n- Unit tests cover CLI output-wait
          timeout failure.\n- Unit tests cover contention retries, status publication
          failures, retry\n  exhaustion, and no-wait behavior.\n- Unit tests cover
          subprocess and task failure cleanup paths.\n- Unit tests verify explicit
          and periodic tasks use the same execution lock.\n- Full test suite, Black,
          and flake8 pass.\n"
        change_url: https://github.com/osism/python-osism/pull/2332
        commit_id: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
        patchset: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
        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: Rml4IHNpbGVudCByZWNvbmNpbGVyIHNraXBzIG9uIGxvY2sgY29udGVudGlvbgoKIyMgU3VtbWFyeQoKRml4IGV4cGxpY2l0IGludmVudG9yeSByZWNvbmNpbGlhdGlvbnMgdGhhdCBzaWxlbnRseSBza2lwIHdoZW4gdGhleSBjYW5ub3QKYWNxdWlyZSB0aGUgcmVjb25jaWxlciBsb2NrLCBsZWF2aW5nIGBvc2lzbSBzeW5jIGludmVudG9yeWAgd2FpdGluZyBmb3Igb3V0cHV0CnRoYXQgd2lsbCBuZXZlciBhcnJpdmUuCgpBbHNvIG1ha2UgcmVsYXRlZCByZWNvbmNpbGVyIGZhaWx1cmUgcGF0aHMgcHVibGlzaCB0ZXJtaW5hbCBvdXRwdXQsIHJldHVybiBhCm5vbi16ZXJvIENMSSByZXN1bHQgd2hlbiB0aGUgb3V0cHV0IHdhaXQgaXRzZWxmIHRpbWVzIG91dCwgYW5kIHByZXZlbnQgZXhwbGljaXQKYW5kIHBlcmlvZGljIHJlY29uY2lsZXIgcHJvY2Vzc2VzIGZyb20gcmV3cml0aW5nIHRoZSBpbnZlbnRvcnkgY29uY3VycmVudGx5LgoKIyMgUHJvYmxlbQoKYG9zaXNtIHN5bmMgaW52ZW50b3J5YCBkaXNwYXRjaGVzIGFuIGV4cGxpY2l0IGByZWNvbmNpbGVyLnJ1bmAgdGFzayBhbmQgd2FpdHMKZm9yIGEgdGVybWluYWwgbWFya2VyIGluIHRoYXQgdGFzaydzIFJlZGlzIG91dHB1dCBzdHJlYW0uCgpQcmV2aW91c2x5LCBgcmVjb25jaWxlci5ydW5gIGF0dGVtcHRlZCB0byBhY3F1aXJlIGl0cyBsb2NrIGZvciAyMCBzZWNvbmRzLiBJZgp0aGUgbG9jayByZW1haW5lZCBoZWxkLCB0aGUgdGFzayBza2lwcGVkIGl0cyBlbnRpcmUgYm9keSwgcHVibGlzaGVkIG5vIHRlcm1pbmFsCm1hcmtlciwgcmV0dXJuZWQgYE5vbmVgLCBhbmQgd2FzIHJlY29yZGVkIGJ5IENlbGVyeSBhcyBzdWNjZXNzZnVsLiBUaGUgd2FpdGluZwpDTEkgY291bGQgbm90IGRpc3Rpbmd1aXNoIHRoYXQgc2lsZW50IHNraXAgZnJvbSBhIHN0aWxsLXJ1bm5pbmcgdGFzaywgc28gaXQKcmVtYWluZWQgYmxvY2tlZCB1bnRpbCBpdHMgY29uZmlndXJlZCB0YXNrLW91dHB1dCB0aW1lb3V0LgoKVGhpcyBvY2N1cnJlZCBkdXJpbmcgYSBkZXBsb3kgd2hlbiBzZXZlbiByZWNvbmNpbGVyIHRhc2tzIHdlcmUgZGlzcGF0Y2hlZCBpbiBhCnNob3J0IGJ1cnN0LiBGaXZlIHRhc2tzIHNpbGVudGx5IHNraXBwZWQgYWZ0ZXIgYXBwcm94aW1hdGVseSAyMCBzZWNvbmRzLiBUaGUKQ0xJIHdhcyB3YWl0aW5nIG9uIG9uZSBvZiB0aG9zZSB0YXNrcyB3aXRoIGAtLXRhc2stdGltZW91dCAxODAwYCwgc28gdGhlIGRlcGxveQpibG9ja2VkIGZvciB0aGUgZnVsbCAzMCBtaW51dGVzIGJlZm9yZSB0aGUgb3V0cHV0IHdhaXQgdGltZWQgb3V0IGFuZCBhYm9ydGVkCnRoZSBkZXBsb3kuCgpTaW1wbHkgZmFpbGluZyBhZnRlciB0aGUgbG9jayB0aW1lb3V0IGlzIGluc3VmZmljaWVudC4gVGhlIGN1cnJlbnQgbG9jayBob2xkZXIKbWF5IGhhdmUgc3RhcnRlZCBiZWZvcmUgdGhlIGNhbGxlcidzIGludmVudG9yeSBjaGFuZ2VzIGV4aXN0ZWQsIHNvIHRoZSBleHBsaWNpdApzeW5jIHJlcXVlc3QgbXVzdCBldmVudHVhbGx5IGV4ZWN1dGUgaXRzIG93biByZWNvbmNpbGlhdGlvbi4KCiMjIENoYW5nZXMKCi0gUmV0dXJuIGEgbm9uLXplcm8gQ0xJIHJlc3VsdCB3aGVuIHdhaXRpbmcgZm9yIHJlY29uY2lsZXIgb3V0cHV0IHRpbWVzIG91dC4KLSBSZXRyeSBhbiBleHBsaWNpdCByZWNvbmNpbGVyIHRhc2sgdXAgdG8gZml2ZSB0aW1lcyBhdCBmaXhlZCBmaXZlLXNlY29uZAogIGludGVydmFscyB3aGVuIGl0IGNhbm5vdCBhY3F1aXJlIHRoZSBsb2NrLgotIFJlcXVldWUgdGhlIHNhbWUgQ2VsZXJ5IHRhc2sgSUQgc28gdGhlIHdhaXRpbmcgQ0xJIGNvbnRpbnVlcyBmb2xsb3dpbmcgdGhlCiAgY29ycmVjdCBvdXRwdXQgc3RyZWFtLgotIFB1Ymxpc2ggbm9uLXRlcm1pbmFsIHJldHJ5IHN0YXR1cyBtZXNzYWdlcyBzbyB1c2VycyBzZWUgdGhlIGNvbnRlbnRpb24gYW5kCiAgdGhlIG91dHB1dCBpbmFjdGl2aXR5IGRlYWRsaW5lIGlzIHJlZnJlc2hlZC4KLSBQdWJsaXNoIGEgbm9uLXplcm8gdGVybWluYWwgcmVzdWx0IGFmdGVyIHJldHJ5IGV4aGF1c3Rpb24gYW5kIHByZXNlcnZlIHRoZQogIENlbGVyeSBmYWlsdXJlIHN0YXRlLgotIEd1YXJkIGV4cGxpY2l0IHJlY29uY2lsaWF0aW9uIGZhaWx1cmUgcGF0aHMgc28gc3VicHJvY2VzcyBzdGFydHVwLCBvdXRwdXQKICBoYW5kbGluZywgcHJvY2VzcyB0aW1lb3V0LCBhbmQgdGFzay1sb2NrIGZhaWx1cmVzIHB1Ymxpc2ggdGVybWluYWwgb3V0cHV0CiAgd2hlbiBwb3NzaWJsZS4KLSBLaWxsIGFuZCByZWFwIGAvcnVuLnNoYCBhZnRlciBpdHMgZXhpc3RpbmcgNjAtc2Vjb25kIHByb2Nlc3Mgd2FpdCBleHBpcmVzLAogIGFuZCBhbHdheXMgcmVsZWFzZSBhbiBhY3F1aXJlZCBsb2NrLgotIFVzZSBvbmUgZXhlY3V0aW9uIGxvY2sga2V5IGZvciBleHBsaWNpdCBhbmQgcGVyaW9kaWMgcmVjb25jaWxlciB0YXNrcy4KICBFeHBsaWNpdCB0YXNrcyByZXRyeSBvbiBjb250ZW50aW9uOyBwZXJpb2RpYyB0YXNrcyBjb250aW51ZSB0byBjb2FsZXNjZSBieQogIHNraXBwaW5nIGEgY29udGVuZGVkIHJ1bi4KCiMjIFNjb3BlIGxpbWl0cwoKVGVybWluYWwgb3V0cHV0IHB1YmxpY2F0aW9uIHJlbWFpbnMgYmVzdC1lZmZvcnQuIElmIFJlZGlzIGl0c2VsZiBpcwp1bmF2YWlsYWJsZSwgdGhlIHRhc2sgY2Fubm90IHB1Ymxpc2ggYSB0ZXJtaW5hbCBtYXJrZXIuCgpUaGlzIGNoYW5nZSBwcmVzZXJ2ZXMgdGhlIGV4aXN0aW5nIDYwLXNlY29uZCBsb2NrIGF1dG8tcmVsZWFzZSB0aW1lLiBFeHRlbmRpbmcKdGhlIGxlYXNlIGZvciByZWNvbmNpbGlhdGlvbnMgdGhhdCBydW4gbG9uZ2VyIHRoYW4gNjAgc2Vjb25kcyBpcyBvdXRzaWRlIHRoaXMKUFIncyBzY29wZS4KCiMjIFRlc3RpbmcKCi0gVW5pdCB0ZXN0cyBjb3ZlciBDTEkgb3V0cHV0LXdhaXQgdGltZW91dCBmYWlsdXJlLgotIFVuaXQgdGVzdHMgY292ZXIgY29udGVudGlvbiByZXRyaWVzLCBzdGF0dXMgcHVibGljYXRpb24gZmFpbHVyZXMsIHJldHJ5CiAgZXhoYXVzdGlvbiwgYW5kIG5vLXdhaXQgYmVoYXZpb3IuCi0gVW5pdCB0ZXN0cyBjb3ZlciBzdWJwcm9jZXNzIGFuZCB0YXNrIGZhaWx1cmUgY2xlYW51cCBwYXRocy4KLSBVbml0IHRlc3RzIHZlcmlmeSBleHBsaWNpdCBhbmQgcGVyaW9kaWMgdGFza3MgdXNlIHRoZSBzYW1lIGV4ZWN1dGlvbiBsb2NrLgotIEZ1bGwgdGVzdCBzdWl0ZSwgQmxhY2ssIGFuZCBmbGFrZTggcGFzcy4K
      patchset: 97e2a8f7d06c8a9891ca36b51d5dba8b9466d9fd
      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: 851aed5f4d04529349701c0e6945b95543ef49db
          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: 851aed5f4d04529349701c0e6945b95543ef49db
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2332/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
