all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    debian-bookworm:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe9b:1b95
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 4476a5e8-6aea-4597-b38e-b09c802bb16f
        host_id: 82101243836454d7401d5893feae9e2c5df7cc291646d8a99b33b53b
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe9b:1b95
        label: debian-bookworm
        node_properties: {}
        private_ipv4: 10.128.7.204
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.192.66
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe9b:1b95
        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 yamllint explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-jobs/.zuul.yaml@main#59>'
      - '<Job yamllint explicit: None implied: None source: osism/cloud-in-a-box/.zuul.yaml@main#15>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: fb15d3a0b672432f897a76ae5b2eb8b6
      build_refs:
      - branch: main
        change: '446'
        change_message: "Retry container image pull on transient errors\n\n## What\n\nAdd
          a retry to the second `Pull container images` task in\n`environments/custom/playbook-pull-container-images.yml`.\n\n```yaml\n
          \     community.docker.docker_image:\n        name: \"{{ item }}\"\n        source:
          pull\n      loop:\n        - \"{{ ceph_docker_registry }}/{{ ceph_docker_image
          }}:{{ ceph_image_version }}\"\n        - \"{{ docker_registry_cephclient
          }}/osism/cephclient:{{ cephclient_version }}\"\n        - \"{{ docker_registry_openstackclient
          }}/osism/openstackclient:{{ openstackclient_version }}\"\n      register:
          result\n      until: result is success\n      retries: 3\n      delay: 30\n```\n\n##
          Why\n\nSame class of failure as:\n\n- osism/ansible-collection-services#2150\n-
          osism/container-image-ceph-ansible#708\n\nThe task had no retry, so a single
          transient registry error failed it and with it\nthe whole `pull-container-images`
          action \u2014 which both `deploy.sh` and\n`upgrade.sh` run (`osism apply
          -e custom pull-container-images`).\n\nThe Ceph image comes from `ceph_docker_registry`,
          which defaults to `quay.io`: a\nthird-party registry OSISM does not control
          and which returns transient 5xx\nerrors.\n\nNotably the task directly above
          it already retries \u2014 it shells out to\n`osism apply -r 2 -a pull` \u2014
          so the retry-less task was the odd one out inside its\nown playbook.\n\n##
          Why the explicit `until` form\n\nThe bare `retries:` / `delay:` form used
          elsewhere in OSISM relies on ansible-core\nfalling back to an implicit condition
          on the task not having failed when `until` is\nunset. That fallback was
          only introduced in **2.16**; in 2.15 the retry block is\ngated behind `if
          self._task.until:`, so `retries` stays 1 and a bare `retries:` is\na silent
          no-op.\n\n`osism-ansible` pins ansible-core 2.18.18 today, so the bare form
          would work here \u2014\nbut releases 6.0.0 and 6.0.1 pinned 2.15, so the
          explicit form keeps this\nindependent of the image it happens to run in,
          and consistent with #708.\n\n## Verification\n\nThis task has a `loop`,
          unlike the sibling pull sites, so the loop interaction was\nmeasured rather
          than assumed. Probe: a three-item loop where only the middle item\nfails.\n\n|
          Item | Result | Executions |\n|---|---|---|\n| first (succeeds) | ok | 1
          |\n| second (always fails) | failed after retries | 4 |\n| third (succeeds,
          runs after the failure) | ok | 1 |\n\nSo `until`/`retries` apply **per item**:
          a flaky image is retried on its own and\ndoes not cause the other images
          to be re-pulled, and a succeeding item following a\nfailed one is not affected
          by a stale register.\n\nAlso confirmed that `retries: 3` means 4 real executions
          on both 2.15.13 and\n2.16.19 by counting actual invocations \u2014 ansible
          reports `attempts: 3` for the\nsame run, which is a reporting quirk, not
          3 executions.\n\nLint, over the staged file:\n\n- `yamllint` (the repo's
          `.yamllint.yml`, via the `yamllint` Zuul job) \u2014 pass\n- `ansible-lint`
          with the custom OSISM rules \u2014 `0 failure(s), 0 warning(s) in 1\n  files
          processed`, last profile met `production`\n\n## Risk\n\nLow. On success
          the task behaves exactly as before. On failure it now takes up to\n90s longer
          per affected image before failing the action.\n\n\U0001F916 Generated with
          [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/cloud-in-a-box/pull/446
        commit_id: bd856e2a09495550d5449a6fa7d38cd9b180e14b
        patchset: bd856e2a09495550d5449a6fa7d38cd9b180e14b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cloud-in-a-box
          name: osism/cloud-in-a-box
          short_name: cloud-in-a-box
        src_dir: src/github.com/osism/cloud-in-a-box
        topic: null
      buildset: 4bf92d3efe8347ae9b5b30a3328485d0
      buildset_refs:
      - branch: main
        change: '446'
        change_message: "Retry container image pull on transient errors\n\n## What\n\nAdd
          a retry to the second `Pull container images` task in\n`environments/custom/playbook-pull-container-images.yml`.\n\n```yaml\n
          \     community.docker.docker_image:\n        name: \"{{ item }}\"\n        source:
          pull\n      loop:\n        - \"{{ ceph_docker_registry }}/{{ ceph_docker_image
          }}:{{ ceph_image_version }}\"\n        - \"{{ docker_registry_cephclient
          }}/osism/cephclient:{{ cephclient_version }}\"\n        - \"{{ docker_registry_openstackclient
          }}/osism/openstackclient:{{ openstackclient_version }}\"\n      register:
          result\n      until: result is success\n      retries: 3\n      delay: 30\n```\n\n##
          Why\n\nSame class of failure as:\n\n- osism/ansible-collection-services#2150\n-
          osism/container-image-ceph-ansible#708\n\nThe task had no retry, so a single
          transient registry error failed it and with it\nthe whole `pull-container-images`
          action \u2014 which both `deploy.sh` and\n`upgrade.sh` run (`osism apply
          -e custom pull-container-images`).\n\nThe Ceph image comes from `ceph_docker_registry`,
          which defaults to `quay.io`: a\nthird-party registry OSISM does not control
          and which returns transient 5xx\nerrors.\n\nNotably the task directly above
          it already retries \u2014 it shells out to\n`osism apply -r 2 -a pull` \u2014
          so the retry-less task was the odd one out inside its\nown playbook.\n\n##
          Why the explicit `until` form\n\nThe bare `retries:` / `delay:` form used
          elsewhere in OSISM relies on ansible-core\nfalling back to an implicit condition
          on the task not having failed when `until` is\nunset. That fallback was
          only introduced in **2.16**; in 2.15 the retry block is\ngated behind `if
          self._task.until:`, so `retries` stays 1 and a bare `retries:` is\na silent
          no-op.\n\n`osism-ansible` pins ansible-core 2.18.18 today, so the bare form
          would work here \u2014\nbut releases 6.0.0 and 6.0.1 pinned 2.15, so the
          explicit form keeps this\nindependent of the image it happens to run in,
          and consistent with #708.\n\n## Verification\n\nThis task has a `loop`,
          unlike the sibling pull sites, so the loop interaction was\nmeasured rather
          than assumed. Probe: a three-item loop where only the middle item\nfails.\n\n|
          Item | Result | Executions |\n|---|---|---|\n| first (succeeds) | ok | 1
          |\n| second (always fails) | failed after retries | 4 |\n| third (succeeds,
          runs after the failure) | ok | 1 |\n\nSo `until`/`retries` apply **per item**:
          a flaky image is retried on its own and\ndoes not cause the other images
          to be re-pulled, and a succeeding item following a\nfailed one is not affected
          by a stale register.\n\nAlso confirmed that `retries: 3` means 4 real executions
          on both 2.15.13 and\n2.16.19 by counting actual invocations \u2014 ansible
          reports `attempts: 3` for the\nsame run, which is a reporting quirk, not
          3 executions.\n\nLint, over the staged file:\n\n- `yamllint` (the repo's
          `.yamllint.yml`, via the `yamllint` Zuul job) \u2014 pass\n- `ansible-lint`
          with the custom OSISM rules \u2014 `0 failure(s), 0 warning(s) in 1\n  files
          processed`, last profile met `production`\n\n## Risk\n\nLow. On success
          the task behaves exactly as before. On failure it now takes up to\n90s longer
          per affected image before failing the action.\n\n\U0001F916 Generated with
          [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/cloud-in-a-box/pull/446
        commit_id: bd856e2a09495550d5449a6fa7d38cd9b180e14b
        patchset: bd856e2a09495550d5449a6fa7d38cd9b180e14b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cloud-in-a-box
          name: osism/cloud-in-a-box
          short_name: cloud-in-a-box
        src_dir: src/github.com/osism/cloud-in-a-box
        topic: null
      change: '446'
      change_message: "Retry container image pull on transient errors\n\n## What\n\nAdd
        a retry to the second `Pull container images` task in\n`environments/custom/playbook-pull-container-images.yml`.\n\n```yaml\n
        \     community.docker.docker_image:\n        name: \"{{ item }}\"\n        source:
        pull\n      loop:\n        - \"{{ ceph_docker_registry }}/{{ ceph_docker_image
        }}:{{ ceph_image_version }}\"\n        - \"{{ docker_registry_cephclient }}/osism/cephclient:{{
        cephclient_version }}\"\n        - \"{{ docker_registry_openstackclient }}/osism/openstackclient:{{
        openstackclient_version }}\"\n      register: result\n      until: result
        is success\n      retries: 3\n      delay: 30\n```\n\n## Why\n\nSame class
        of failure as:\n\n- osism/ansible-collection-services#2150\n- osism/container-image-ceph-ansible#708\n\nThe
        task had no retry, so a single transient registry error failed it and with
        it\nthe whole `pull-container-images` action \u2014 which both `deploy.sh`
        and\n`upgrade.sh` run (`osism apply -e custom pull-container-images`).\n\nThe
        Ceph image comes from `ceph_docker_registry`, which defaults to `quay.io`:
        a\nthird-party registry OSISM does not control and which returns transient
        5xx\nerrors.\n\nNotably the task directly above it already retries \u2014
        it shells out to\n`osism apply -r 2 -a pull` \u2014 so the retry-less task
        was the odd one out inside its\nown playbook.\n\n## Why the explicit `until`
        form\n\nThe bare `retries:` / `delay:` form used elsewhere in OSISM relies
        on ansible-core\nfalling back to an implicit condition on the task not having
        failed when `until` is\nunset. That fallback was only introduced in **2.16**;
        in 2.15 the retry block is\ngated behind `if self._task.until:`, so `retries`
        stays 1 and a bare `retries:` is\na silent no-op.\n\n`osism-ansible` pins
        ansible-core 2.18.18 today, so the bare form would work here \u2014\nbut releases
        6.0.0 and 6.0.1 pinned 2.15, so the explicit form keeps this\nindependent
        of the image it happens to run in, and consistent with #708.\n\n## Verification\n\nThis
        task has a `loop`, unlike the sibling pull sites, so the loop interaction
        was\nmeasured rather than assumed. Probe: a three-item loop where only the
        middle item\nfails.\n\n| Item | Result | Executions |\n|---|---|---|\n| first
        (succeeds) | ok | 1 |\n| second (always fails) | failed after retries | 4
        |\n| third (succeeds, runs after the failure) | ok | 1 |\n\nSo `until`/`retries`
        apply **per item**: a flaky image is retried on its own and\ndoes not cause
        the other images to be re-pulled, and a succeeding item following a\nfailed
        one is not affected by a stale register.\n\nAlso confirmed that `retries:
        3` means 4 real executions on both 2.15.13 and\n2.16.19 by counting actual
        invocations \u2014 ansible reports `attempts: 3` for the\nsame run, which
        is a reporting quirk, not 3 executions.\n\nLint, over the staged file:\n\n-
        `yamllint` (the repo's `.yamllint.yml`, via the `yamllint` Zuul job) \u2014
        pass\n- `ansible-lint` with the custom OSISM rules \u2014 `0 failure(s), 0
        warning(s) in 1\n  files processed`, last profile met `production`\n\n## Risk\n\nLow.
        On success the task behaves exactly as before. On failure it now takes up
        to\n90s longer per affected image before failing the action.\n\n\U0001F916
        Generated with [Claude Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/cloud-in-a-box/pull/446
      child_jobs: []
      commit_id: bd856e2a09495550d5449a6fa7d38cd9b180e14b
      event_id: 521aff70-8c1c-11f1-9931-84579466462b
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/fb15d3a0b672432f897a76ae5b2eb8b6/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/fb15d3a0b672432f897a76ae5b2eb8b6/work/logs
        result_data_file: /var/lib/zuul/builds/fb15d3a0b672432f897a76ae5b2eb8b6/work/results.json
        src_root: /var/lib/zuul/builds/fb15d3a0b672432f897a76ae5b2eb8b6/work/src
        work_root: /var/lib/zuul/builds/fb15d3a0b672432f897a76ae5b2eb8b6/work
      include_vars: []
      items:
      - branch: main
        change: '446'
        change_message: "Retry container image pull on transient errors\n\n## What\n\nAdd
          a retry to the second `Pull container images` task in\n`environments/custom/playbook-pull-container-images.yml`.\n\n```yaml\n
          \     community.docker.docker_image:\n        name: \"{{ item }}\"\n        source:
          pull\n      loop:\n        - \"{{ ceph_docker_registry }}/{{ ceph_docker_image
          }}:{{ ceph_image_version }}\"\n        - \"{{ docker_registry_cephclient
          }}/osism/cephclient:{{ cephclient_version }}\"\n        - \"{{ docker_registry_openstackclient
          }}/osism/openstackclient:{{ openstackclient_version }}\"\n      register:
          result\n      until: result is success\n      retries: 3\n      delay: 30\n```\n\n##
          Why\n\nSame class of failure as:\n\n- osism/ansible-collection-services#2150\n-
          osism/container-image-ceph-ansible#708\n\nThe task had no retry, so a single
          transient registry error failed it and with it\nthe whole `pull-container-images`
          action \u2014 which both `deploy.sh` and\n`upgrade.sh` run (`osism apply
          -e custom pull-container-images`).\n\nThe Ceph image comes from `ceph_docker_registry`,
          which defaults to `quay.io`: a\nthird-party registry OSISM does not control
          and which returns transient 5xx\nerrors.\n\nNotably the task directly above
          it already retries \u2014 it shells out to\n`osism apply -r 2 -a pull` \u2014
          so the retry-less task was the odd one out inside its\nown playbook.\n\n##
          Why the explicit `until` form\n\nThe bare `retries:` / `delay:` form used
          elsewhere in OSISM relies on ansible-core\nfalling back to an implicit condition
          on the task not having failed when `until` is\nunset. That fallback was
          only introduced in **2.16**; in 2.15 the retry block is\ngated behind `if
          self._task.until:`, so `retries` stays 1 and a bare `retries:` is\na silent
          no-op.\n\n`osism-ansible` pins ansible-core 2.18.18 today, so the bare form
          would work here \u2014\nbut releases 6.0.0 and 6.0.1 pinned 2.15, so the
          explicit form keeps this\nindependent of the image it happens to run in,
          and consistent with #708.\n\n## Verification\n\nThis task has a `loop`,
          unlike the sibling pull sites, so the loop interaction was\nmeasured rather
          than assumed. Probe: a three-item loop where only the middle item\nfails.\n\n|
          Item | Result | Executions |\n|---|---|---|\n| first (succeeds) | ok | 1
          |\n| second (always fails) | failed after retries | 4 |\n| third (succeeds,
          runs after the failure) | ok | 1 |\n\nSo `until`/`retries` apply **per item**:
          a flaky image is retried on its own and\ndoes not cause the other images
          to be re-pulled, and a succeeding item following a\nfailed one is not affected
          by a stale register.\n\nAlso confirmed that `retries: 3` means 4 real executions
          on both 2.15.13 and\n2.16.19 by counting actual invocations \u2014 ansible
          reports `attempts: 3` for the\nsame run, which is a reporting quirk, not
          3 executions.\n\nLint, over the staged file:\n\n- `yamllint` (the repo's
          `.yamllint.yml`, via the `yamllint` Zuul job) \u2014 pass\n- `ansible-lint`
          with the custom OSISM rules \u2014 `0 failure(s), 0 warning(s) in 1\n  files
          processed`, last profile met `production`\n\n## Risk\n\nLow. On success
          the task behaves exactly as before. On failure it now takes up to\n90s longer
          per affected image before failing the action.\n\n\U0001F916 Generated with
          [Claude Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/cloud-in-a-box/pull/446
        commit_id: bd856e2a09495550d5449a6fa7d38cd9b180e14b
        patchset: bd856e2a09495550d5449a6fa7d38cd9b180e14b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cloud-in-a-box
          name: osism/cloud-in-a-box
          short_name: cloud-in-a-box
          src_dir: src/github.com/osism/cloud-in-a-box
        topic: null
      job: yamllint
      jobtags: []
      max_attempts: 3
      message: UmV0cnkgY29udGFpbmVyIGltYWdlIHB1bGwgb24gdHJhbnNpZW50IGVycm9ycwoKIyMgV2hhdAoKQWRkIGEgcmV0cnkgdG8gdGhlIHNlY29uZCBgUHVsbCBjb250YWluZXIgaW1hZ2VzYCB0YXNrIGluCmBlbnZpcm9ubWVudHMvY3VzdG9tL3BsYXlib29rLXB1bGwtY29udGFpbmVyLWltYWdlcy55bWxgLgoKYGBgeWFtbAogICAgICBjb21tdW5pdHkuZG9ja2VyLmRvY2tlcl9pbWFnZToKICAgICAgICBuYW1lOiAie3sgaXRlbSB9fSIKICAgICAgICBzb3VyY2U6IHB1bGwKICAgICAgbG9vcDoKICAgICAgICAtICJ7eyBjZXBoX2RvY2tlcl9yZWdpc3RyeSB9fS97eyBjZXBoX2RvY2tlcl9pbWFnZSB9fTp7eyBjZXBoX2ltYWdlX3ZlcnNpb24gfX0iCiAgICAgICAgLSAie3sgZG9ja2VyX3JlZ2lzdHJ5X2NlcGhjbGllbnQgfX0vb3Npc20vY2VwaGNsaWVudDp7eyBjZXBoY2xpZW50X3ZlcnNpb24gfX0iCiAgICAgICAgLSAie3sgZG9ja2VyX3JlZ2lzdHJ5X29wZW5zdGFja2NsaWVudCB9fS9vc2lzbS9vcGVuc3RhY2tjbGllbnQ6e3sgb3BlbnN0YWNrY2xpZW50X3ZlcnNpb24gfX0iCiAgICAgIHJlZ2lzdGVyOiByZXN1bHQKICAgICAgdW50aWw6IHJlc3VsdCBpcyBzdWNjZXNzCiAgICAgIHJldHJpZXM6IDMKICAgICAgZGVsYXk6IDMwCmBgYAoKIyMgV2h5CgpTYW1lIGNsYXNzIG9mIGZhaWx1cmUgYXM6CgotIG9zaXNtL2Fuc2libGUtY29sbGVjdGlvbi1zZXJ2aWNlcyMyMTUwCi0gb3Npc20vY29udGFpbmVyLWltYWdlLWNlcGgtYW5zaWJsZSM3MDgKClRoZSB0YXNrIGhhZCBubyByZXRyeSwgc28gYSBzaW5nbGUgdHJhbnNpZW50IHJlZ2lzdHJ5IGVycm9yIGZhaWxlZCBpdCBhbmQgd2l0aCBpdAp0aGUgd2hvbGUgYHB1bGwtY29udGFpbmVyLWltYWdlc2AgYWN0aW9uIOKAlCB3aGljaCBib3RoIGBkZXBsb3kuc2hgIGFuZApgdXBncmFkZS5zaGAgcnVuIChgb3Npc20gYXBwbHkgLWUgY3VzdG9tIHB1bGwtY29udGFpbmVyLWltYWdlc2ApLgoKVGhlIENlcGggaW1hZ2UgY29tZXMgZnJvbSBgY2VwaF9kb2NrZXJfcmVnaXN0cnlgLCB3aGljaCBkZWZhdWx0cyB0byBgcXVheS5pb2A6IGEKdGhpcmQtcGFydHkgcmVnaXN0cnkgT1NJU00gZG9lcyBub3QgY29udHJvbCBhbmQgd2hpY2ggcmV0dXJucyB0cmFuc2llbnQgNXh4CmVycm9ycy4KCk5vdGFibHkgdGhlIHRhc2sgZGlyZWN0bHkgYWJvdmUgaXQgYWxyZWFkeSByZXRyaWVzIOKAlCBpdCBzaGVsbHMgb3V0IHRvCmBvc2lzbSBhcHBseSAtciAyIC1hIHB1bGxgIOKAlCBzbyB0aGUgcmV0cnktbGVzcyB0YXNrIHdhcyB0aGUgb2RkIG9uZSBvdXQgaW5zaWRlIGl0cwpvd24gcGxheWJvb2suCgojIyBXaHkgdGhlIGV4cGxpY2l0IGB1bnRpbGAgZm9ybQoKVGhlIGJhcmUgYHJldHJpZXM6YCAvIGBkZWxheTpgIGZvcm0gdXNlZCBlbHNld2hlcmUgaW4gT1NJU00gcmVsaWVzIG9uIGFuc2libGUtY29yZQpmYWxsaW5nIGJhY2sgdG8gYW4gaW1wbGljaXQgY29uZGl0aW9uIG9uIHRoZSB0YXNrIG5vdCBoYXZpbmcgZmFpbGVkIHdoZW4gYHVudGlsYCBpcwp1bnNldC4gVGhhdCBmYWxsYmFjayB3YXMgb25seSBpbnRyb2R1Y2VkIGluICoqMi4xNioqOyBpbiAyLjE1IHRoZSByZXRyeSBibG9jayBpcwpnYXRlZCBiZWhpbmQgYGlmIHNlbGYuX3Rhc2sudW50aWw6YCwgc28gYHJldHJpZXNgIHN0YXlzIDEgYW5kIGEgYmFyZSBgcmV0cmllczpgIGlzCmEgc2lsZW50IG5vLW9wLgoKYG9zaXNtLWFuc2libGVgIHBpbnMgYW5zaWJsZS1jb3JlIDIuMTguMTggdG9kYXksIHNvIHRoZSBiYXJlIGZvcm0gd291bGQgd29yayBoZXJlIOKAlApidXQgcmVsZWFzZXMgNi4wLjAgYW5kIDYuMC4xIHBpbm5lZCAyLjE1LCBzbyB0aGUgZXhwbGljaXQgZm9ybSBrZWVwcyB0aGlzCmluZGVwZW5kZW50IG9mIHRoZSBpbWFnZSBpdCBoYXBwZW5zIHRvIHJ1biBpbiwgYW5kIGNvbnNpc3RlbnQgd2l0aCAjNzA4LgoKIyMgVmVyaWZpY2F0aW9uCgpUaGlzIHRhc2sgaGFzIGEgYGxvb3BgLCB1bmxpa2UgdGhlIHNpYmxpbmcgcHVsbCBzaXRlcywgc28gdGhlIGxvb3AgaW50ZXJhY3Rpb24gd2FzCm1lYXN1cmVkIHJhdGhlciB0aGFuIGFzc3VtZWQuIFByb2JlOiBhIHRocmVlLWl0ZW0gbG9vcCB3aGVyZSBvbmx5IHRoZSBtaWRkbGUgaXRlbQpmYWlscy4KCnwgSXRlbSB8IFJlc3VsdCB8IEV4ZWN1dGlvbnMgfAp8LS0tfC0tLXwtLS18CnwgZmlyc3QgKHN1Y2NlZWRzKSB8IG9rIHwgMSB8Cnwgc2Vjb25kIChhbHdheXMgZmFpbHMpIHwgZmFpbGVkIGFmdGVyIHJldHJpZXMgfCA0IHwKfCB0aGlyZCAoc3VjY2VlZHMsIHJ1bnMgYWZ0ZXIgdGhlIGZhaWx1cmUpIHwgb2sgfCAxIHwKClNvIGB1bnRpbGAvYHJldHJpZXNgIGFwcGx5ICoqcGVyIGl0ZW0qKjogYSBmbGFreSBpbWFnZSBpcyByZXRyaWVkIG9uIGl0cyBvd24gYW5kCmRvZXMgbm90IGNhdXNlIHRoZSBvdGhlciBpbWFnZXMgdG8gYmUgcmUtcHVsbGVkLCBhbmQgYSBzdWNjZWVkaW5nIGl0ZW0gZm9sbG93aW5nIGEKZmFpbGVkIG9uZSBpcyBub3QgYWZmZWN0ZWQgYnkgYSBzdGFsZSByZWdpc3Rlci4KCkFsc28gY29uZmlybWVkIHRoYXQgYHJldHJpZXM6IDNgIG1lYW5zIDQgcmVhbCBleGVjdXRpb25zIG9uIGJvdGggMi4xNS4xMyBhbmQKMi4xNi4xOSBieSBjb3VudGluZyBhY3R1YWwgaW52b2NhdGlvbnMg4oCUIGFuc2libGUgcmVwb3J0cyBgYXR0ZW1wdHM6IDNgIGZvciB0aGUKc2FtZSBydW4sIHdoaWNoIGlzIGEgcmVwb3J0aW5nIHF1aXJrLCBub3QgMyBleGVjdXRpb25zLgoKTGludCwgb3ZlciB0aGUgc3RhZ2VkIGZpbGU6CgotIGB5YW1sbGludGAgKHRoZSByZXBvJ3MgYC55YW1sbGludC55bWxgLCB2aWEgdGhlIGB5YW1sbGludGAgWnV1bCBqb2IpIOKAlCBwYXNzCi0gYGFuc2libGUtbGludGAgd2l0aCB0aGUgY3VzdG9tIE9TSVNNIHJ1bGVzIOKAlCBgMCBmYWlsdXJlKHMpLCAwIHdhcm5pbmcocykgaW4gMQogIGZpbGVzIHByb2Nlc3NlZGAsIGxhc3QgcHJvZmlsZSBtZXQgYHByb2R1Y3Rpb25gCgojIyBSaXNrCgpMb3cuIE9uIHN1Y2Nlc3MgdGhlIHRhc2sgYmVoYXZlcyBleGFjdGx5IGFzIGJlZm9yZS4gT24gZmFpbHVyZSBpdCBub3cgdGFrZXMgdXAgdG8KOTBzIGxvbmdlciBwZXIgYWZmZWN0ZWQgaW1hZ2UgYmVmb3JlIGZhaWxpbmcgdGhlIGFjdGlvbi4KCvCfpJYgR2VuZXJhdGVkIHdpdGggW0NsYXVkZSBDb2RlXShodHRwczovL2NsYXVkZS5jb20vY2xhdWRlLWNvZGUpCg==
      patchset: bd856e2a09495550d5449a6fa7d38cd9b180e14b
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: dcb06ea8a3ad422cc9d98b376216617b2daa6a02
          untrusted/project_0/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: dcb06ea8a3ad422cc9d98b376216617b2daa6a02
          untrusted/project_1/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          untrusted/project_2/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
        playbooks:
        - path: untrusted/project_0/github.com/osism/zuul-jobs/playbooks/yamllint/run.yaml
          roles:
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_0/zuul-config
            link_target: untrusted/project_1/github.com/osism/zuul-config
            role_path: ansible/playbook_0/role_0/zuul-config/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/openinfra-zuul-jobs
            link_target: untrusted/project_2/github.com/osism/openinfra-zuul-jobs
            role_path: ansible/playbook_0/role_1/openinfra-zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/osism/zuul-jobs
            role_path: ansible/playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: 1800
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/osism/cloud-in-a-box
        name: osism/cloud-in-a-box
        short_name: cloud-in-a-box
        src_dir: src/github.com/osism/cloud-in-a-box
      projects:
        github.com/osism/cloud-in-a-box:
          canonical_hostname: github.com
          canonical_name: github.com/osism/cloud-in-a-box
          checkout: main
          checkout_description: zuul branch
          commit: 7cfeeda43676e34c0b4b6c06a7d274fdddc09ace
          name: osism/cloud-in-a-box
          required: false
          short_name: cloud-in-a-box
          src_dir: src/github.com/osism/cloud-in-a-box
      ref: refs/pull/446/head
      resources: {}
      tenant: osism
      timeout: 1800
      topic: null
      voting: true
