all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe3d:23b0
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      docker_image: frontend
      docker_namespace: osism
      docker_registry: osism.harbor.regio.digital
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 60ad9209-33ce-4978-8bb4-0b4e7be0e075
        host_id: 0d3d02185f810c959252bd1d303ec55040bf5bb0b401cceef814c3a7
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe3d:23b0
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.0.110
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.44
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe3d:23b0
        region: null
        slot: null
      repository: osism/osism
  vars:
    docker_image: frontend
    docker_namespace: osism
    docker_registry: osism.harbor.regio.digital
    repository: osism/osism
    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-frontend-build explicit: None implied:
        {MatchAny:{ImpliedBranchMatcher:main}} source: osism/python-osism/.zuul.yaml@main#87>'
      - '<Job container-image-python-osism-frontend-build explicit: None implied:
        None source: osism/python-osism/.zuul.yaml@main#138>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 892887c7a3954a5397f93ece22193125
      build_refs:
      - branch: main
        change: '2389'
        change_message: "Add 'osism reset facts' command to clear the Ansible fact
          cache\n\n## Summary\n\nAdds `osism reset facts`, a command that clears the
          Ansible fact cache so\noperators can drop stale or incorrect facts during
          troubleshooting. The\nfact cache lives in Redis under `ansible_facts<host>`
          keys (read by\n`osism get facts`, `osism/api.py`, and `check_ansible_facts`);
          until now\nthere was no command to clear it.\n\n- By default the command
          flushes the **entire** cache.\n- `-l/--limit <pattern>` restricts the reset
          to selected hosts or groups,\n  resolving the pattern through `ansible-inventory
          --list --limit`.\n- It only clears the cache \u2014 it does **not** start
          a fact-gathering run and\n  asks for **no** confirmation. The cache rebuilds
          on the next Ansible run\n  that gathers facts.\n\nCloses #2388\n\n## Changes
          (in commit order)\n\n1. **`Add 'osism reset facts' command to clear the
          fact cache`**\n   - New `osism/commands/reset.py` with `class Facts(Command)`:\n
          \    - No limit \u2192 SCAN `ansible_facts*` and batch-delete every key\n
          \      (mirrors the scan loop in `osism/utils/__init__.py:check_ansible_facts`).\n
          \    - `-l/--limit` \u2192 expand the host/group pattern via `ansible-inventory`\n
          \      and delete only the matching `ansible_facts<host>` keys\n       (mirrors
          the limit\u2192inventory idiom in `osism/commands/report.py`).\n     - Redis
          key deletion reuses the `utils.redis.delete(...)` idiom from\n       `osism/commands/vault.py`.\n
          \  - Registers the entry point `reset facts = osism.commands.reset:Facts`\n
          \    in `setup.cfg` (no `reset` namespace existed before; no collision).\n\n2.
          **`Add unit tests for 'osism reset facts'`**\n   - New `tests/unit/commands/test_reset.py`
          covering flush-all,\n     empty-cache no-op, Redis error, `--limit` host
          expansion, and the\n     inventory-load failure and timeout paths.\n\n##
          Notes for reviewers\n\n- **Command name** (`reset facts`) is a design choice
          the issue did not\n  fix. It avoids overloading `sync facts` (which *does*
          gather) and there\n  is no existing `reset` namespace. Renaming is a one-line
          `setup.cfg`\n  change if you prefer e.g. `facts reset`.\n- **Redis cache
          only.** A second, file-based fact cache at\n  `/cache/facts/<host>` is read
          only by `osism/api.py:search_inventory`.\n  This command clears the canonical
          Redis cache that the operator-facing\n  CLI uses; clearing the API's file
          cache is out of scope absent a\n  confirmed need.\n- The external CLI reference
          (osism.tech) lives in a separate repo and is\n  not updated here; the in-repo
          doc surface is the command docstring and\n  `--limit` help text rendered
          by `osism reset facts --help`.\n\n## Local verification\n\n- `flake8 osism/commands/reset.py
          tests/unit/commands/test_reset.py` \u2014 pass\n- Unit suite (`pytest tests/unit`)
          runs in CI/Zuul per project convention.\n\n---\n\n_Drafted by [planwerk-review](https://github.com/planwerk/planwerk-review)
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/python-osism/pull/2389
        commit_id: f6c5ace149da80d281d04c83c1a7e7128af19c8f
        patchset: f6c5ace149da80d281d04c83c1a7e7128af19c8f
        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: 01079e8e3088441da3d04f4ecc9e8050
      buildset_refs:
      - branch: main
        change: '2389'
        change_message: "Add 'osism reset facts' command to clear the Ansible fact
          cache\n\n## Summary\n\nAdds `osism reset facts`, a command that clears the
          Ansible fact cache so\noperators can drop stale or incorrect facts during
          troubleshooting. The\nfact cache lives in Redis under `ansible_facts<host>`
          keys (read by\n`osism get facts`, `osism/api.py`, and `check_ansible_facts`);
          until now\nthere was no command to clear it.\n\n- By default the command
          flushes the **entire** cache.\n- `-l/--limit <pattern>` restricts the reset
          to selected hosts or groups,\n  resolving the pattern through `ansible-inventory
          --list --limit`.\n- It only clears the cache \u2014 it does **not** start
          a fact-gathering run and\n  asks for **no** confirmation. The cache rebuilds
          on the next Ansible run\n  that gathers facts.\n\nCloses #2388\n\n## Changes
          (in commit order)\n\n1. **`Add 'osism reset facts' command to clear the
          fact cache`**\n   - New `osism/commands/reset.py` with `class Facts(Command)`:\n
          \    - No limit \u2192 SCAN `ansible_facts*` and batch-delete every key\n
          \      (mirrors the scan loop in `osism/utils/__init__.py:check_ansible_facts`).\n
          \    - `-l/--limit` \u2192 expand the host/group pattern via `ansible-inventory`\n
          \      and delete only the matching `ansible_facts<host>` keys\n       (mirrors
          the limit\u2192inventory idiom in `osism/commands/report.py`).\n     - Redis
          key deletion reuses the `utils.redis.delete(...)` idiom from\n       `osism/commands/vault.py`.\n
          \  - Registers the entry point `reset facts = osism.commands.reset:Facts`\n
          \    in `setup.cfg` (no `reset` namespace existed before; no collision).\n\n2.
          **`Add unit tests for 'osism reset facts'`**\n   - New `tests/unit/commands/test_reset.py`
          covering flush-all,\n     empty-cache no-op, Redis error, `--limit` host
          expansion, and the\n     inventory-load failure and timeout paths.\n\n##
          Notes for reviewers\n\n- **Command name** (`reset facts`) is a design choice
          the issue did not\n  fix. It avoids overloading `sync facts` (which *does*
          gather) and there\n  is no existing `reset` namespace. Renaming is a one-line
          `setup.cfg`\n  change if you prefer e.g. `facts reset`.\n- **Redis cache
          only.** A second, file-based fact cache at\n  `/cache/facts/<host>` is read
          only by `osism/api.py:search_inventory`.\n  This command clears the canonical
          Redis cache that the operator-facing\n  CLI uses; clearing the API's file
          cache is out of scope absent a\n  confirmed need.\n- The external CLI reference
          (osism.tech) lives in a separate repo and is\n  not updated here; the in-repo
          doc surface is the command docstring and\n  `--limit` help text rendered
          by `osism reset facts --help`.\n\n## Local verification\n\n- `flake8 osism/commands/reset.py
          tests/unit/commands/test_reset.py` \u2014 pass\n- Unit suite (`pytest tests/unit`)
          runs in CI/Zuul per project convention.\n\n---\n\n_Drafted by [planwerk-review](https://github.com/planwerk/planwerk-review)
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/python-osism/pull/2389
        commit_id: f6c5ace149da80d281d04c83c1a7e7128af19c8f
        patchset: f6c5ace149da80d281d04c83c1a7e7128af19c8f
        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: '2389'
      change_message: "Add 'osism reset facts' command to clear the Ansible fact cache\n\n##
        Summary\n\nAdds `osism reset facts`, a command that clears the Ansible fact
        cache so\noperators can drop stale or incorrect facts during troubleshooting.
        The\nfact cache lives in Redis under `ansible_facts<host>` keys (read by\n`osism
        get facts`, `osism/api.py`, and `check_ansible_facts`); until now\nthere was
        no command to clear it.\n\n- By default the command flushes the **entire**
        cache.\n- `-l/--limit <pattern>` restricts the reset to selected hosts or
        groups,\n  resolving the pattern through `ansible-inventory --list --limit`.\n-
        It only clears the cache \u2014 it does **not** start a fact-gathering run
        and\n  asks for **no** confirmation. The cache rebuilds on the next Ansible
        run\n  that gathers facts.\n\nCloses #2388\n\n## Changes (in commit order)\n\n1.
        **`Add 'osism reset facts' command to clear the fact cache`**\n   - New `osism/commands/reset.py`
        with `class Facts(Command)`:\n     - No limit \u2192 SCAN `ansible_facts*`
        and batch-delete every key\n       (mirrors the scan loop in `osism/utils/__init__.py:check_ansible_facts`).\n
        \    - `-l/--limit` \u2192 expand the host/group pattern via `ansible-inventory`\n
        \      and delete only the matching `ansible_facts<host>` keys\n       (mirrors
        the limit\u2192inventory idiom in `osism/commands/report.py`).\n     - Redis
        key deletion reuses the `utils.redis.delete(...)` idiom from\n       `osism/commands/vault.py`.\n
        \  - Registers the entry point `reset facts = osism.commands.reset:Facts`\n
        \    in `setup.cfg` (no `reset` namespace existed before; no collision).\n\n2.
        **`Add unit tests for 'osism reset facts'`**\n   - New `tests/unit/commands/test_reset.py`
        covering flush-all,\n     empty-cache no-op, Redis error, `--limit` host expansion,
        and the\n     inventory-load failure and timeout paths.\n\n## Notes for reviewers\n\n-
        **Command name** (`reset facts`) is a design choice the issue did not\n  fix.
        It avoids overloading `sync facts` (which *does* gather) and there\n  is no
        existing `reset` namespace. Renaming is a one-line `setup.cfg`\n  change if
        you prefer e.g. `facts reset`.\n- **Redis cache only.** A second, file-based
        fact cache at\n  `/cache/facts/<host>` is read only by `osism/api.py:search_inventory`.\n
        \ This command clears the canonical Redis cache that the operator-facing\n
        \ CLI uses; clearing the API's file cache is out of scope absent a\n  confirmed
        need.\n- The external CLI reference (osism.tech) lives in a separate repo
        and is\n  not updated here; the in-repo doc surface is the command docstring
        and\n  `--limit` help text rendered by `osism reset facts --help`.\n\n## Local
        verification\n\n- `flake8 osism/commands/reset.py tests/unit/commands/test_reset.py`
        \u2014 pass\n- Unit suite (`pytest tests/unit`) runs in CI/Zuul per project
        convention.\n\n---\n\n_Drafted by [planwerk-review](https://github.com/planwerk/planwerk-review)
        with Claude:claude-opus-4-8_\n"
      change_url: https://github.com/osism/python-osism/pull/2389
      child_jobs: []
      commit_id: f6c5ace149da80d281d04c83c1a7e7128af19c8f
      event_id: 99dd1190-6a61-11f1-9d5a-bff4424f9510
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/892887c7a3954a5397f93ece22193125/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/892887c7a3954a5397f93ece22193125/work/logs
        result_data_file: /var/lib/zuul/builds/892887c7a3954a5397f93ece22193125/work/results.json
        src_root: /var/lib/zuul/builds/892887c7a3954a5397f93ece22193125/work/src
        work_root: /var/lib/zuul/builds/892887c7a3954a5397f93ece22193125/work
      include_vars: []
      items:
      - branch: main
        change: '2389'
        change_message: "Add 'osism reset facts' command to clear the Ansible fact
          cache\n\n## Summary\n\nAdds `osism reset facts`, a command that clears the
          Ansible fact cache so\noperators can drop stale or incorrect facts during
          troubleshooting. The\nfact cache lives in Redis under `ansible_facts<host>`
          keys (read by\n`osism get facts`, `osism/api.py`, and `check_ansible_facts`);
          until now\nthere was no command to clear it.\n\n- By default the command
          flushes the **entire** cache.\n- `-l/--limit <pattern>` restricts the reset
          to selected hosts or groups,\n  resolving the pattern through `ansible-inventory
          --list --limit`.\n- It only clears the cache \u2014 it does **not** start
          a fact-gathering run and\n  asks for **no** confirmation. The cache rebuilds
          on the next Ansible run\n  that gathers facts.\n\nCloses #2388\n\n## Changes
          (in commit order)\n\n1. **`Add 'osism reset facts' command to clear the
          fact cache`**\n   - New `osism/commands/reset.py` with `class Facts(Command)`:\n
          \    - No limit \u2192 SCAN `ansible_facts*` and batch-delete every key\n
          \      (mirrors the scan loop in `osism/utils/__init__.py:check_ansible_facts`).\n
          \    - `-l/--limit` \u2192 expand the host/group pattern via `ansible-inventory`\n
          \      and delete only the matching `ansible_facts<host>` keys\n       (mirrors
          the limit\u2192inventory idiom in `osism/commands/report.py`).\n     - Redis
          key deletion reuses the `utils.redis.delete(...)` idiom from\n       `osism/commands/vault.py`.\n
          \  - Registers the entry point `reset facts = osism.commands.reset:Facts`\n
          \    in `setup.cfg` (no `reset` namespace existed before; no collision).\n\n2.
          **`Add unit tests for 'osism reset facts'`**\n   - New `tests/unit/commands/test_reset.py`
          covering flush-all,\n     empty-cache no-op, Redis error, `--limit` host
          expansion, and the\n     inventory-load failure and timeout paths.\n\n##
          Notes for reviewers\n\n- **Command name** (`reset facts`) is a design choice
          the issue did not\n  fix. It avoids overloading `sync facts` (which *does*
          gather) and there\n  is no existing `reset` namespace. Renaming is a one-line
          `setup.cfg`\n  change if you prefer e.g. `facts reset`.\n- **Redis cache
          only.** A second, file-based fact cache at\n  `/cache/facts/<host>` is read
          only by `osism/api.py:search_inventory`.\n  This command clears the canonical
          Redis cache that the operator-facing\n  CLI uses; clearing the API's file
          cache is out of scope absent a\n  confirmed need.\n- The external CLI reference
          (osism.tech) lives in a separate repo and is\n  not updated here; the in-repo
          doc surface is the command docstring and\n  `--limit` help text rendered
          by `osism reset facts --help`.\n\n## Local verification\n\n- `flake8 osism/commands/reset.py
          tests/unit/commands/test_reset.py` \u2014 pass\n- Unit suite (`pytest tests/unit`)
          runs in CI/Zuul per project convention.\n\n---\n\n_Drafted by [planwerk-review](https://github.com/planwerk/planwerk-review)
          with Claude:claude-opus-4-8_\n"
        change_url: https://github.com/osism/python-osism/pull/2389
        commit_id: f6c5ace149da80d281d04c83c1a7e7128af19c8f
        patchset: f6c5ace149da80d281d04c83c1a7e7128af19c8f
        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-frontend-build
      jobtags: []
      max_attempts: 3
      message: QWRkICdvc2lzbSByZXNldCBmYWN0cycgY29tbWFuZCB0byBjbGVhciB0aGUgQW5zaWJsZSBmYWN0IGNhY2hlCgojIyBTdW1tYXJ5CgpBZGRzIGBvc2lzbSByZXNldCBmYWN0c2AsIGEgY29tbWFuZCB0aGF0IGNsZWFycyB0aGUgQW5zaWJsZSBmYWN0IGNhY2hlIHNvCm9wZXJhdG9ycyBjYW4gZHJvcCBzdGFsZSBvciBpbmNvcnJlY3QgZmFjdHMgZHVyaW5nIHRyb3VibGVzaG9vdGluZy4gVGhlCmZhY3QgY2FjaGUgbGl2ZXMgaW4gUmVkaXMgdW5kZXIgYGFuc2libGVfZmFjdHM8aG9zdD5gIGtleXMgKHJlYWQgYnkKYG9zaXNtIGdldCBmYWN0c2AsIGBvc2lzbS9hcGkucHlgLCBhbmQgYGNoZWNrX2Fuc2libGVfZmFjdHNgKTsgdW50aWwgbm93CnRoZXJlIHdhcyBubyBjb21tYW5kIHRvIGNsZWFyIGl0LgoKLSBCeSBkZWZhdWx0IHRoZSBjb21tYW5kIGZsdXNoZXMgdGhlICoqZW50aXJlKiogY2FjaGUuCi0gYC1sLy0tbGltaXQgPHBhdHRlcm4+YCByZXN0cmljdHMgdGhlIHJlc2V0IHRvIHNlbGVjdGVkIGhvc3RzIG9yIGdyb3VwcywKICByZXNvbHZpbmcgdGhlIHBhdHRlcm4gdGhyb3VnaCBgYW5zaWJsZS1pbnZlbnRvcnkgLS1saXN0IC0tbGltaXRgLgotIEl0IG9ubHkgY2xlYXJzIHRoZSBjYWNoZSDigJQgaXQgZG9lcyAqKm5vdCoqIHN0YXJ0IGEgZmFjdC1nYXRoZXJpbmcgcnVuIGFuZAogIGFza3MgZm9yICoqbm8qKiBjb25maXJtYXRpb24uIFRoZSBjYWNoZSByZWJ1aWxkcyBvbiB0aGUgbmV4dCBBbnNpYmxlIHJ1bgogIHRoYXQgZ2F0aGVycyBmYWN0cy4KCkNsb3NlcyAjMjM4OAoKIyMgQ2hhbmdlcyAoaW4gY29tbWl0IG9yZGVyKQoKMS4gKipgQWRkICdvc2lzbSByZXNldCBmYWN0cycgY29tbWFuZCB0byBjbGVhciB0aGUgZmFjdCBjYWNoZWAqKgogICAtIE5ldyBgb3Npc20vY29tbWFuZHMvcmVzZXQucHlgIHdpdGggYGNsYXNzIEZhY3RzKENvbW1hbmQpYDoKICAgICAtIE5vIGxpbWl0IOKGkiBTQ0FOIGBhbnNpYmxlX2ZhY3RzKmAgYW5kIGJhdGNoLWRlbGV0ZSBldmVyeSBrZXkKICAgICAgIChtaXJyb3JzIHRoZSBzY2FuIGxvb3AgaW4gYG9zaXNtL3V0aWxzL19faW5pdF9fLnB5OmNoZWNrX2Fuc2libGVfZmFjdHNgKS4KICAgICAtIGAtbC8tLWxpbWl0YCDihpIgZXhwYW5kIHRoZSBob3N0L2dyb3VwIHBhdHRlcm4gdmlhIGBhbnNpYmxlLWludmVudG9yeWAKICAgICAgIGFuZCBkZWxldGUgb25seSB0aGUgbWF0Y2hpbmcgYGFuc2libGVfZmFjdHM8aG9zdD5gIGtleXMKICAgICAgIChtaXJyb3JzIHRoZSBsaW1pdOKGkmludmVudG9yeSBpZGlvbSBpbiBgb3Npc20vY29tbWFuZHMvcmVwb3J0LnB5YCkuCiAgICAgLSBSZWRpcyBrZXkgZGVsZXRpb24gcmV1c2VzIHRoZSBgdXRpbHMucmVkaXMuZGVsZXRlKC4uLilgIGlkaW9tIGZyb20KICAgICAgIGBvc2lzbS9jb21tYW5kcy92YXVsdC5weWAuCiAgIC0gUmVnaXN0ZXJzIHRoZSBlbnRyeSBwb2ludCBgcmVzZXQgZmFjdHMgPSBvc2lzbS5jb21tYW5kcy5yZXNldDpGYWN0c2AKICAgICBpbiBgc2V0dXAuY2ZnYCAobm8gYHJlc2V0YCBuYW1lc3BhY2UgZXhpc3RlZCBiZWZvcmU7IG5vIGNvbGxpc2lvbikuCgoyLiAqKmBBZGQgdW5pdCB0ZXN0cyBmb3IgJ29zaXNtIHJlc2V0IGZhY3RzJ2AqKgogICAtIE5ldyBgdGVzdHMvdW5pdC9jb21tYW5kcy90ZXN0X3Jlc2V0LnB5YCBjb3ZlcmluZyBmbHVzaC1hbGwsCiAgICAgZW1wdHktY2FjaGUgbm8tb3AsIFJlZGlzIGVycm9yLCBgLS1saW1pdGAgaG9zdCBleHBhbnNpb24sIGFuZCB0aGUKICAgICBpbnZlbnRvcnktbG9hZCBmYWlsdXJlIGFuZCB0aW1lb3V0IHBhdGhzLgoKIyMgTm90ZXMgZm9yIHJldmlld2VycwoKLSAqKkNvbW1hbmQgbmFtZSoqIChgcmVzZXQgZmFjdHNgKSBpcyBhIGRlc2lnbiBjaG9pY2UgdGhlIGlzc3VlIGRpZCBub3QKICBmaXguIEl0IGF2b2lkcyBvdmVybG9hZGluZyBgc3luYyBmYWN0c2AgKHdoaWNoICpkb2VzKiBnYXRoZXIpIGFuZCB0aGVyZQogIGlzIG5vIGV4aXN0aW5nIGByZXNldGAgbmFtZXNwYWNlLiBSZW5hbWluZyBpcyBhIG9uZS1saW5lIGBzZXR1cC5jZmdgCiAgY2hhbmdlIGlmIHlvdSBwcmVmZXIgZS5nLiBgZmFjdHMgcmVzZXRgLgotICoqUmVkaXMgY2FjaGUgb25seS4qKiBBIHNlY29uZCwgZmlsZS1iYXNlZCBmYWN0IGNhY2hlIGF0CiAgYC9jYWNoZS9mYWN0cy88aG9zdD5gIGlzIHJlYWQgb25seSBieSBgb3Npc20vYXBpLnB5OnNlYXJjaF9pbnZlbnRvcnlgLgogIFRoaXMgY29tbWFuZCBjbGVhcnMgdGhlIGNhbm9uaWNhbCBSZWRpcyBjYWNoZSB0aGF0IHRoZSBvcGVyYXRvci1mYWNpbmcKICBDTEkgdXNlczsgY2xlYXJpbmcgdGhlIEFQSSdzIGZpbGUgY2FjaGUgaXMgb3V0IG9mIHNjb3BlIGFic2VudCBhCiAgY29uZmlybWVkIG5lZWQuCi0gVGhlIGV4dGVybmFsIENMSSByZWZlcmVuY2UgKG9zaXNtLnRlY2gpIGxpdmVzIGluIGEgc2VwYXJhdGUgcmVwbyBhbmQgaXMKICBub3QgdXBkYXRlZCBoZXJlOyB0aGUgaW4tcmVwbyBkb2Mgc3VyZmFjZSBpcyB0aGUgY29tbWFuZCBkb2NzdHJpbmcgYW5kCiAgYC0tbGltaXRgIGhlbHAgdGV4dCByZW5kZXJlZCBieSBgb3Npc20gcmVzZXQgZmFjdHMgLS1oZWxwYC4KCiMjIExvY2FsIHZlcmlmaWNhdGlvbgoKLSBgZmxha2U4IG9zaXNtL2NvbW1hbmRzL3Jlc2V0LnB5IHRlc3RzL3VuaXQvY29tbWFuZHMvdGVzdF9yZXNldC5weWAg4oCUIHBhc3MKLSBVbml0IHN1aXRlIChgcHl0ZXN0IHRlc3RzL3VuaXRgKSBydW5zIGluIENJL1p1dWwgcGVyIHByb2plY3QgY29udmVudGlvbi4KCi0tLQoKX0RyYWZ0ZWQgYnkgW3BsYW53ZXJrLXJldmlld10oaHR0cHM6Ly9naXRodWIuY29tL3BsYW53ZXJrL3BsYW53ZXJrLXJldmlldykgd2l0aCBDbGF1ZGU6Y2xhdWRlLW9wdXMtNC04Xwo=
      patchset: f6c5ace149da80d281d04c83c1a7e7128af19c8f
      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: da5591679922f18f6f66dff9783e3ab8c04ea2e6
          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/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: 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: da5591679922f18f6f66dff9783e3ab8c04ea2e6
          name: osism/python-osism
          required: false
          short_name: python-osism
          src_dir: src/github.com/osism/python-osism
      ref: refs/pull/2389/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
