all:
  children:
    zuul_unreachable:
      hosts: {}
  hosts:
    ubuntu-noble-large:
      ansible_connection: ssh
      ansible_host: 2a13:1a81:8000:3124:f816:3eff:fe4d:29d6
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      dib_element: metalbox
      image_format: raw
      nodepool:
        az: nova
        cloud: regiocloud-a-ci
        external_id: 83767620-458b-4b67-aa72-e0a9ad4512aa
        host_id: 5afd8fc909abddfe2ce3a956a91bbe56629648b7209fd0acfa541862
        interface_ip: 2a13:1a81:8000:3124:f816:3eff:fe4d:29d6
        label: ubuntu-noble-large
        node_properties: {}
        private_ipv4: 10.128.0.108
        private_ipv6: null
        provider: regiocloud-a
        public_ipv4: 81.163.193.198
        public_ipv6: 2a13:1a81:8000:3124:f816:3eff:fe4d:29d6
        region: null
        slot: null
      upload_image: false
  vars:
    dib_element: metalbox
    image_format: raw
    upload_image: false
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/zuul-config/zuul.d/jobs.yaml@main#2>'
      - '<Job abstract-openstack-ironic-images-build explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/openstack-ironic-images/.zuul.yaml@main#56>'
      - '<Job openstack-ironic-images-build-metalbox explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: osism/openstack-ironic-images/.zuul.yaml@main#104>'
      - '<Job openstack-ironic-images-build-metalbox explicit: None implied: None
        source: osism/openstack-ironic-images/.zuul.yaml@main#306>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: d010a04485df47b3a0cc9d8501fa6fb2
      build_refs:
      - branch: main
        change: '216'
        change_message: "metalbox: retry corrupt registry.tar.bz2 download\n\n## Problem\n\nThe
          `metalbox` element downloads the ~3.9 GB registry volume archive\n`registry.tar.bz2`
          from object storage and lists it with `tar tjf`\n(`elements/metalbox/install.d/40-install`).
          The download was unguarded \u2014\nwhatever `wget` wrote was used as-is.
          When the downloaded copy is corrupt, the\nbuild aborts ~30 minutes in at
          the catalog step:\n\n```\nbzip2: Data integrity error when decompressing.\ntar:
          Unexpected EOF in archive\ntar: Error is not recoverable: exiting now\n```\n\n##
          This is recurring, not a one-off\n\nThe same failure has hit `openstack-ironic-images-publish-metalbox`\n(periodic-daily)
          at least three times over three months:\n\n- 2026-07-21 \u2014 https://logs.services.osism.tech/930/osism/93098085451e423f8703294693d7a46f/\n-
          2026-06-21 \u2014 https://logs.services.osism.tech/c0f/osism/c0f6daebd9584d768757c5c4880bfe65/\n-
          2026-04-28 \u2014 https://logs.services.osism.tech/062/osism/062f6d29a1694220b29efc686f2281f3/\n\nEach
          shows the identical `bzip2: Data integrity error` / `tar: Unexpected EOF`\nin
          the `Run build script` task.\n\n## Root cause\n\nDownload-path corruption,
          **not** a bad published artifact. For the 2026-07-21\noccurrence the stored
          object was verified intact when fetched independently:\nits bytes matched
          the uploader's stored `x-amz-meta-md5chksum`, and `bzip2 -t`\npassed cleanly
          over all blocks. The object's `Last-Modified` was unchanged\nacross CI's
          fetch and that later verification.\n\nCI received a **full-length but corrupt**
          copy: the object-storage endpoint\ndropped the connection mid-stream and
          returned a `504` on the preceding tries,\nthen delivered a full-length body
          that `wget` reported as a successful save.\nNothing verified the archive
          before use, so a transient object-storage fault\nwasted the entire build.
          (Where exactly the bytes corrupted \u2014 server response\ngeneration, an
          intermediary, or transient delivery \u2014 is not pinned down; the\nfix
          does not depend on which.)\n\n## Fix\n\nWrap the download in a retry loop
          that verifies each copy before use. The\nexisting `tar tjf` catalog listing
          **doubles as the integrity gate**: `tar -j`\nfully decompresses the stream,
          so a corrupt/truncated archive fails the\npipeline (non-zero under `pipefail`)
          and triggers a clean re-download instead\nof poisoning the build. Net decompression
          stays at one pass \u2014 the catalog was\nalready decompressing the whole
          archive.\n\n- Each attempt starts from a removed file (`rm -f`), so nothing
          layers onto a\n  previous partial.\n- `wget --tries=3 --timeout=120` rides
          out transient connection drops while\n  fetching a complete body; the integrity
          gate decides good-vs-corrupt.\n- After 4 failed attempts the build fails
          with an explicit message instead of\n  a cryptic `tar` error.\n\nThe `build.yml`
          freshness check is intentionally untouched \u2014 it verifies\nrecency,
          not integrity, and already has its own retry loop.\n\n## Testing\n\nThe
          build-time path can't be unit-tested against the real 3.9 GB fetch, so the\nloop
          logic was exercised locally with a mock `wget` against good and\ndeliberately-truncated
          `.bz2` fixtures:\n\n- corrupt \u2192 corrupt \u2192 good: retries twice,
          prints the catalog once, exits 0\n- always corrupt: exits 1 after 4 attempts\n-
          good immediately: catalog once, no retry\n- `wget` fails (dropped) twice
          \u2192 good: exits 0\n- `wget` fails 4\xD7: exits 1\n\n`bash -n` and `shellcheck`
          are clean on the changed block.\n\n---\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/openstack-ironic-images/pull/216
        commit_id: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
        patchset: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-ironic-images
          name: osism/openstack-ironic-images
          short_name: openstack-ironic-images
        src_dir: src/github.com/osism/openstack-ironic-images
        topic: null
      buildset: 7406277db20b4665bb5d27e66b6b01be
      buildset_refs:
      - branch: main
        change: '216'
        change_message: "metalbox: retry corrupt registry.tar.bz2 download\n\n## Problem\n\nThe
          `metalbox` element downloads the ~3.9 GB registry volume archive\n`registry.tar.bz2`
          from object storage and lists it with `tar tjf`\n(`elements/metalbox/install.d/40-install`).
          The download was unguarded \u2014\nwhatever `wget` wrote was used as-is.
          When the downloaded copy is corrupt, the\nbuild aborts ~30 minutes in at
          the catalog step:\n\n```\nbzip2: Data integrity error when decompressing.\ntar:
          Unexpected EOF in archive\ntar: Error is not recoverable: exiting now\n```\n\n##
          This is recurring, not a one-off\n\nThe same failure has hit `openstack-ironic-images-publish-metalbox`\n(periodic-daily)
          at least three times over three months:\n\n- 2026-07-21 \u2014 https://logs.services.osism.tech/930/osism/93098085451e423f8703294693d7a46f/\n-
          2026-06-21 \u2014 https://logs.services.osism.tech/c0f/osism/c0f6daebd9584d768757c5c4880bfe65/\n-
          2026-04-28 \u2014 https://logs.services.osism.tech/062/osism/062f6d29a1694220b29efc686f2281f3/\n\nEach
          shows the identical `bzip2: Data integrity error` / `tar: Unexpected EOF`\nin
          the `Run build script` task.\n\n## Root cause\n\nDownload-path corruption,
          **not** a bad published artifact. For the 2026-07-21\noccurrence the stored
          object was verified intact when fetched independently:\nits bytes matched
          the uploader's stored `x-amz-meta-md5chksum`, and `bzip2 -t`\npassed cleanly
          over all blocks. The object's `Last-Modified` was unchanged\nacross CI's
          fetch and that later verification.\n\nCI received a **full-length but corrupt**
          copy: the object-storage endpoint\ndropped the connection mid-stream and
          returned a `504` on the preceding tries,\nthen delivered a full-length body
          that `wget` reported as a successful save.\nNothing verified the archive
          before use, so a transient object-storage fault\nwasted the entire build.
          (Where exactly the bytes corrupted \u2014 server response\ngeneration, an
          intermediary, or transient delivery \u2014 is not pinned down; the\nfix
          does not depend on which.)\n\n## Fix\n\nWrap the download in a retry loop
          that verifies each copy before use. The\nexisting `tar tjf` catalog listing
          **doubles as the integrity gate**: `tar -j`\nfully decompresses the stream,
          so a corrupt/truncated archive fails the\npipeline (non-zero under `pipefail`)
          and triggers a clean re-download instead\nof poisoning the build. Net decompression
          stays at one pass \u2014 the catalog was\nalready decompressing the whole
          archive.\n\n- Each attempt starts from a removed file (`rm -f`), so nothing
          layers onto a\n  previous partial.\n- `wget --tries=3 --timeout=120` rides
          out transient connection drops while\n  fetching a complete body; the integrity
          gate decides good-vs-corrupt.\n- After 4 failed attempts the build fails
          with an explicit message instead of\n  a cryptic `tar` error.\n\nThe `build.yml`
          freshness check is intentionally untouched \u2014 it verifies\nrecency,
          not integrity, and already has its own retry loop.\n\n## Testing\n\nThe
          build-time path can't be unit-tested against the real 3.9 GB fetch, so the\nloop
          logic was exercised locally with a mock `wget` against good and\ndeliberately-truncated
          `.bz2` fixtures:\n\n- corrupt \u2192 corrupt \u2192 good: retries twice,
          prints the catalog once, exits 0\n- always corrupt: exits 1 after 4 attempts\n-
          good immediately: catalog once, no retry\n- `wget` fails (dropped) twice
          \u2192 good: exits 0\n- `wget` fails 4\xD7: exits 1\n\n`bash -n` and `shellcheck`
          are clean on the changed block.\n\n---\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/openstack-ironic-images/pull/216
        commit_id: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
        patchset: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-ironic-images
          name: osism/openstack-ironic-images
          short_name: openstack-ironic-images
        src_dir: src/github.com/osism/openstack-ironic-images
        topic: null
      change: '216'
      change_message: "metalbox: retry corrupt registry.tar.bz2 download\n\n## Problem\n\nThe
        `metalbox` element downloads the ~3.9 GB registry volume archive\n`registry.tar.bz2`
        from object storage and lists it with `tar tjf`\n(`elements/metalbox/install.d/40-install`).
        The download was unguarded \u2014\nwhatever `wget` wrote was used as-is. When
        the downloaded copy is corrupt, the\nbuild aborts ~30 minutes in at the catalog
        step:\n\n```\nbzip2: Data integrity error when decompressing.\ntar: Unexpected
        EOF in archive\ntar: Error is not recoverable: exiting now\n```\n\n## This
        is recurring, not a one-off\n\nThe same failure has hit `openstack-ironic-images-publish-metalbox`\n(periodic-daily)
        at least three times over three months:\n\n- 2026-07-21 \u2014 https://logs.services.osism.tech/930/osism/93098085451e423f8703294693d7a46f/\n-
        2026-06-21 \u2014 https://logs.services.osism.tech/c0f/osism/c0f6daebd9584d768757c5c4880bfe65/\n-
        2026-04-28 \u2014 https://logs.services.osism.tech/062/osism/062f6d29a1694220b29efc686f2281f3/\n\nEach
        shows the identical `bzip2: Data integrity error` / `tar: Unexpected EOF`\nin
        the `Run build script` task.\n\n## Root cause\n\nDownload-path corruption,
        **not** a bad published artifact. For the 2026-07-21\noccurrence the stored
        object was verified intact when fetched independently:\nits bytes matched
        the uploader's stored `x-amz-meta-md5chksum`, and `bzip2 -t`\npassed cleanly
        over all blocks. The object's `Last-Modified` was unchanged\nacross CI's fetch
        and that later verification.\n\nCI received a **full-length but corrupt**
        copy: the object-storage endpoint\ndropped the connection mid-stream and returned
        a `504` on the preceding tries,\nthen delivered a full-length body that `wget`
        reported as a successful save.\nNothing verified the archive before use, so
        a transient object-storage fault\nwasted the entire build. (Where exactly
        the bytes corrupted \u2014 server response\ngeneration, an intermediary, or
        transient delivery \u2014 is not pinned down; the\nfix does not depend on
        which.)\n\n## Fix\n\nWrap the download in a retry loop that verifies each
        copy before use. The\nexisting `tar tjf` catalog listing **doubles as the
        integrity gate**: `tar -j`\nfully decompresses the stream, so a corrupt/truncated
        archive fails the\npipeline (non-zero under `pipefail`) and triggers a clean
        re-download instead\nof poisoning the build. Net decompression stays at one
        pass \u2014 the catalog was\nalready decompressing the whole archive.\n\n-
        Each attempt starts from a removed file (`rm -f`), so nothing layers onto
        a\n  previous partial.\n- `wget --tries=3 --timeout=120` rides out transient
        connection drops while\n  fetching a complete body; the integrity gate decides
        good-vs-corrupt.\n- After 4 failed attempts the build fails with an explicit
        message instead of\n  a cryptic `tar` error.\n\nThe `build.yml` freshness
        check is intentionally untouched \u2014 it verifies\nrecency, not integrity,
        and already has its own retry loop.\n\n## Testing\n\nThe build-time path can't
        be unit-tested against the real 3.9 GB fetch, so the\nloop logic was exercised
        locally with a mock `wget` against good and\ndeliberately-truncated `.bz2`
        fixtures:\n\n- corrupt \u2192 corrupt \u2192 good: retries twice, prints the
        catalog once, exits 0\n- always corrupt: exits 1 after 4 attempts\n- good
        immediately: catalog once, no retry\n- `wget` fails (dropped) twice \u2192
        good: exits 0\n- `wget` fails 4\xD7: exits 1\n\n`bash -n` and `shellcheck`
        are clean on the changed block.\n\n---\n\U0001F916 Generated with [Claude
        Code](https://claude.com/claude-code)\n"
      change_url: https://github.com/osism/openstack-ironic-images/pull/216
      child_jobs: []
      commit_id: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
      event_id: a48f4920-84ef-11f1-997d-0a3d98094bdb
      executor:
        hostname: 521e9411259a
        inventory_file: /var/lib/zuul/builds/d010a04485df47b3a0cc9d8501fa6fb2/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/d010a04485df47b3a0cc9d8501fa6fb2/work/logs
        result_data_file: /var/lib/zuul/builds/d010a04485df47b3a0cc9d8501fa6fb2/work/results.json
        src_root: /var/lib/zuul/builds/d010a04485df47b3a0cc9d8501fa6fb2/work/src
        work_root: /var/lib/zuul/builds/d010a04485df47b3a0cc9d8501fa6fb2/work
      include_vars: []
      items:
      - branch: main
        change: '216'
        change_message: "metalbox: retry corrupt registry.tar.bz2 download\n\n## Problem\n\nThe
          `metalbox` element downloads the ~3.9 GB registry volume archive\n`registry.tar.bz2`
          from object storage and lists it with `tar tjf`\n(`elements/metalbox/install.d/40-install`).
          The download was unguarded \u2014\nwhatever `wget` wrote was used as-is.
          When the downloaded copy is corrupt, the\nbuild aborts ~30 minutes in at
          the catalog step:\n\n```\nbzip2: Data integrity error when decompressing.\ntar:
          Unexpected EOF in archive\ntar: Error is not recoverable: exiting now\n```\n\n##
          This is recurring, not a one-off\n\nThe same failure has hit `openstack-ironic-images-publish-metalbox`\n(periodic-daily)
          at least three times over three months:\n\n- 2026-07-21 \u2014 https://logs.services.osism.tech/930/osism/93098085451e423f8703294693d7a46f/\n-
          2026-06-21 \u2014 https://logs.services.osism.tech/c0f/osism/c0f6daebd9584d768757c5c4880bfe65/\n-
          2026-04-28 \u2014 https://logs.services.osism.tech/062/osism/062f6d29a1694220b29efc686f2281f3/\n\nEach
          shows the identical `bzip2: Data integrity error` / `tar: Unexpected EOF`\nin
          the `Run build script` task.\n\n## Root cause\n\nDownload-path corruption,
          **not** a bad published artifact. For the 2026-07-21\noccurrence the stored
          object was verified intact when fetched independently:\nits bytes matched
          the uploader's stored `x-amz-meta-md5chksum`, and `bzip2 -t`\npassed cleanly
          over all blocks. The object's `Last-Modified` was unchanged\nacross CI's
          fetch and that later verification.\n\nCI received a **full-length but corrupt**
          copy: the object-storage endpoint\ndropped the connection mid-stream and
          returned a `504` on the preceding tries,\nthen delivered a full-length body
          that `wget` reported as a successful save.\nNothing verified the archive
          before use, so a transient object-storage fault\nwasted the entire build.
          (Where exactly the bytes corrupted \u2014 server response\ngeneration, an
          intermediary, or transient delivery \u2014 is not pinned down; the\nfix
          does not depend on which.)\n\n## Fix\n\nWrap the download in a retry loop
          that verifies each copy before use. The\nexisting `tar tjf` catalog listing
          **doubles as the integrity gate**: `tar -j`\nfully decompresses the stream,
          so a corrupt/truncated archive fails the\npipeline (non-zero under `pipefail`)
          and triggers a clean re-download instead\nof poisoning the build. Net decompression
          stays at one pass \u2014 the catalog was\nalready decompressing the whole
          archive.\n\n- Each attempt starts from a removed file (`rm -f`), so nothing
          layers onto a\n  previous partial.\n- `wget --tries=3 --timeout=120` rides
          out transient connection drops while\n  fetching a complete body; the integrity
          gate decides good-vs-corrupt.\n- After 4 failed attempts the build fails
          with an explicit message instead of\n  a cryptic `tar` error.\n\nThe `build.yml`
          freshness check is intentionally untouched \u2014 it verifies\nrecency,
          not integrity, and already has its own retry loop.\n\n## Testing\n\nThe
          build-time path can't be unit-tested against the real 3.9 GB fetch, so the\nloop
          logic was exercised locally with a mock `wget` against good and\ndeliberately-truncated
          `.bz2` fixtures:\n\n- corrupt \u2192 corrupt \u2192 good: retries twice,
          prints the catalog once, exits 0\n- always corrupt: exits 1 after 4 attempts\n-
          good immediately: catalog once, no retry\n- `wget` fails (dropped) twice
          \u2192 good: exits 0\n- `wget` fails 4\xD7: exits 1\n\n`bash -n` and `shellcheck`
          are clean on the changed block.\n\n---\n\U0001F916 Generated with [Claude
          Code](https://claude.com/claude-code)\n"
        change_url: https://github.com/osism/openstack-ironic-images/pull/216
        commit_id: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
        patchset: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
        project:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-ironic-images
          name: osism/openstack-ironic-images
          short_name: openstack-ironic-images
          src_dir: src/github.com/osism/openstack-ironic-images
        topic: null
      job: openstack-ironic-images-build-metalbox
      jobtags: []
      max_attempts: 3
      message: bWV0YWxib3g6IHJldHJ5IGNvcnJ1cHQgcmVnaXN0cnkudGFyLmJ6MiBkb3dubG9hZAoKIyMgUHJvYmxlbQoKVGhlIGBtZXRhbGJveGAgZWxlbWVudCBkb3dubG9hZHMgdGhlIH4zLjkgR0IgcmVnaXN0cnkgdm9sdW1lIGFyY2hpdmUKYHJlZ2lzdHJ5LnRhci5iejJgIGZyb20gb2JqZWN0IHN0b3JhZ2UgYW5kIGxpc3RzIGl0IHdpdGggYHRhciB0amZgCihgZWxlbWVudHMvbWV0YWxib3gvaW5zdGFsbC5kLzQwLWluc3RhbGxgKS4gVGhlIGRvd25sb2FkIHdhcyB1bmd1YXJkZWQg4oCUCndoYXRldmVyIGB3Z2V0YCB3cm90ZSB3YXMgdXNlZCBhcy1pcy4gV2hlbiB0aGUgZG93bmxvYWRlZCBjb3B5IGlzIGNvcnJ1cHQsIHRoZQpidWlsZCBhYm9ydHMgfjMwIG1pbnV0ZXMgaW4gYXQgdGhlIGNhdGFsb2cgc3RlcDoKCmBgYApiemlwMjogRGF0YSBpbnRlZ3JpdHkgZXJyb3Igd2hlbiBkZWNvbXByZXNzaW5nLgp0YXI6IFVuZXhwZWN0ZWQgRU9GIGluIGFyY2hpdmUKdGFyOiBFcnJvciBpcyBub3QgcmVjb3ZlcmFibGU6IGV4aXRpbmcgbm93CmBgYAoKIyMgVGhpcyBpcyByZWN1cnJpbmcsIG5vdCBhIG9uZS1vZmYKClRoZSBzYW1lIGZhaWx1cmUgaGFzIGhpdCBgb3BlbnN0YWNrLWlyb25pYy1pbWFnZXMtcHVibGlzaC1tZXRhbGJveGAKKHBlcmlvZGljLWRhaWx5KSBhdCBsZWFzdCB0aHJlZSB0aW1lcyBvdmVyIHRocmVlIG1vbnRoczoKCi0gMjAyNi0wNy0yMSDigJQgaHR0cHM6Ly9sb2dzLnNlcnZpY2VzLm9zaXNtLnRlY2gvOTMwL29zaXNtLzkzMDk4MDg1NDUxZTQyM2Y4NzAzMjk0NjkzZDdhNDZmLwotIDIwMjYtMDYtMjEg4oCUIGh0dHBzOi8vbG9ncy5zZXJ2aWNlcy5vc2lzbS50ZWNoL2MwZi9vc2lzbS9jMGY2ZGFlYmQ5NTg0ZDc2ODc1N2M1YzQ4ODBiZmU2NS8KLSAyMDI2LTA0LTI4IOKAlCBodHRwczovL2xvZ3Muc2VydmljZXMub3Npc20udGVjaC8wNjIvb3Npc20vMDYyZjZkMjlhMTY5NDIyMGIyOWVmYzY4NmYyMjgxZjMvCgpFYWNoIHNob3dzIHRoZSBpZGVudGljYWwgYGJ6aXAyOiBEYXRhIGludGVncml0eSBlcnJvcmAgLyBgdGFyOiBVbmV4cGVjdGVkIEVPRmAKaW4gdGhlIGBSdW4gYnVpbGQgc2NyaXB0YCB0YXNrLgoKIyMgUm9vdCBjYXVzZQoKRG93bmxvYWQtcGF0aCBjb3JydXB0aW9uLCAqKm5vdCoqIGEgYmFkIHB1Ymxpc2hlZCBhcnRpZmFjdC4gRm9yIHRoZSAyMDI2LTA3LTIxCm9jY3VycmVuY2UgdGhlIHN0b3JlZCBvYmplY3Qgd2FzIHZlcmlmaWVkIGludGFjdCB3aGVuIGZldGNoZWQgaW5kZXBlbmRlbnRseToKaXRzIGJ5dGVzIG1hdGNoZWQgdGhlIHVwbG9hZGVyJ3Mgc3RvcmVkIGB4LWFtei1tZXRhLW1kNWNoa3N1bWAsIGFuZCBgYnppcDIgLXRgCnBhc3NlZCBjbGVhbmx5IG92ZXIgYWxsIGJsb2Nrcy4gVGhlIG9iamVjdCdzIGBMYXN0LU1vZGlmaWVkYCB3YXMgdW5jaGFuZ2VkCmFjcm9zcyBDSSdzIGZldGNoIGFuZCB0aGF0IGxhdGVyIHZlcmlmaWNhdGlvbi4KCkNJIHJlY2VpdmVkIGEgKipmdWxsLWxlbmd0aCBidXQgY29ycnVwdCoqIGNvcHk6IHRoZSBvYmplY3Qtc3RvcmFnZSBlbmRwb2ludApkcm9wcGVkIHRoZSBjb25uZWN0aW9uIG1pZC1zdHJlYW0gYW5kIHJldHVybmVkIGEgYDUwNGAgb24gdGhlIHByZWNlZGluZyB0cmllcywKdGhlbiBkZWxpdmVyZWQgYSBmdWxsLWxlbmd0aCBib2R5IHRoYXQgYHdnZXRgIHJlcG9ydGVkIGFzIGEgc3VjY2Vzc2Z1bCBzYXZlLgpOb3RoaW5nIHZlcmlmaWVkIHRoZSBhcmNoaXZlIGJlZm9yZSB1c2UsIHNvIGEgdHJhbnNpZW50IG9iamVjdC1zdG9yYWdlIGZhdWx0Cndhc3RlZCB0aGUgZW50aXJlIGJ1aWxkLiAoV2hlcmUgZXhhY3RseSB0aGUgYnl0ZXMgY29ycnVwdGVkIOKAlCBzZXJ2ZXIgcmVzcG9uc2UKZ2VuZXJhdGlvbiwgYW4gaW50ZXJtZWRpYXJ5LCBvciB0cmFuc2llbnQgZGVsaXZlcnkg4oCUIGlzIG5vdCBwaW5uZWQgZG93bjsgdGhlCmZpeCBkb2VzIG5vdCBkZXBlbmQgb24gd2hpY2guKQoKIyMgRml4CgpXcmFwIHRoZSBkb3dubG9hZCBpbiBhIHJldHJ5IGxvb3AgdGhhdCB2ZXJpZmllcyBlYWNoIGNvcHkgYmVmb3JlIHVzZS4gVGhlCmV4aXN0aW5nIGB0YXIgdGpmYCBjYXRhbG9nIGxpc3RpbmcgKipkb3VibGVzIGFzIHRoZSBpbnRlZ3JpdHkgZ2F0ZSoqOiBgdGFyIC1qYApmdWxseSBkZWNvbXByZXNzZXMgdGhlIHN0cmVhbSwgc28gYSBjb3JydXB0L3RydW5jYXRlZCBhcmNoaXZlIGZhaWxzIHRoZQpwaXBlbGluZSAobm9uLXplcm8gdW5kZXIgYHBpcGVmYWlsYCkgYW5kIHRyaWdnZXJzIGEgY2xlYW4gcmUtZG93bmxvYWQgaW5zdGVhZApvZiBwb2lzb25pbmcgdGhlIGJ1aWxkLiBOZXQgZGVjb21wcmVzc2lvbiBzdGF5cyBhdCBvbmUgcGFzcyDigJQgdGhlIGNhdGFsb2cgd2FzCmFscmVhZHkgZGVjb21wcmVzc2luZyB0aGUgd2hvbGUgYXJjaGl2ZS4KCi0gRWFjaCBhdHRlbXB0IHN0YXJ0cyBmcm9tIGEgcmVtb3ZlZCBmaWxlIChgcm0gLWZgKSwgc28gbm90aGluZyBsYXllcnMgb250byBhCiAgcHJldmlvdXMgcGFydGlhbC4KLSBgd2dldCAtLXRyaWVzPTMgLS10aW1lb3V0PTEyMGAgcmlkZXMgb3V0IHRyYW5zaWVudCBjb25uZWN0aW9uIGRyb3BzIHdoaWxlCiAgZmV0Y2hpbmcgYSBjb21wbGV0ZSBib2R5OyB0aGUgaW50ZWdyaXR5IGdhdGUgZGVjaWRlcyBnb29kLXZzLWNvcnJ1cHQuCi0gQWZ0ZXIgNCBmYWlsZWQgYXR0ZW1wdHMgdGhlIGJ1aWxkIGZhaWxzIHdpdGggYW4gZXhwbGljaXQgbWVzc2FnZSBpbnN0ZWFkIG9mCiAgYSBjcnlwdGljIGB0YXJgIGVycm9yLgoKVGhlIGBidWlsZC55bWxgIGZyZXNobmVzcyBjaGVjayBpcyBpbnRlbnRpb25hbGx5IHVudG91Y2hlZCDigJQgaXQgdmVyaWZpZXMKcmVjZW5jeSwgbm90IGludGVncml0eSwgYW5kIGFscmVhZHkgaGFzIGl0cyBvd24gcmV0cnkgbG9vcC4KCiMjIFRlc3RpbmcKClRoZSBidWlsZC10aW1lIHBhdGggY2FuJ3QgYmUgdW5pdC10ZXN0ZWQgYWdhaW5zdCB0aGUgcmVhbCAzLjkgR0IgZmV0Y2gsIHNvIHRoZQpsb29wIGxvZ2ljIHdhcyBleGVyY2lzZWQgbG9jYWxseSB3aXRoIGEgbW9jayBgd2dldGAgYWdhaW5zdCBnb29kIGFuZApkZWxpYmVyYXRlbHktdHJ1bmNhdGVkIGAuYnoyYCBmaXh0dXJlczoKCi0gY29ycnVwdCDihpIgY29ycnVwdCDihpIgZ29vZDogcmV0cmllcyB0d2ljZSwgcHJpbnRzIHRoZSBjYXRhbG9nIG9uY2UsIGV4aXRzIDAKLSBhbHdheXMgY29ycnVwdDogZXhpdHMgMSBhZnRlciA0IGF0dGVtcHRzCi0gZ29vZCBpbW1lZGlhdGVseTogY2F0YWxvZyBvbmNlLCBubyByZXRyeQotIGB3Z2V0YCBmYWlscyAoZHJvcHBlZCkgdHdpY2Ug4oaSIGdvb2Q6IGV4aXRzIDAKLSBgd2dldGAgZmFpbHMgNMOXOiBleGl0cyAxCgpgYmFzaCAtbmAgYW5kIGBzaGVsbGNoZWNrYCBhcmUgY2xlYW4gb24gdGhlIGNoYW5nZWQgYmxvY2suCgotLS0K8J+kliBHZW5lcmF0ZWQgd2l0aCBbQ2xhdWRlIENvZGVdKGh0dHBzOi8vY2xhdWRlLmNvbS9jbGF1ZGUtY29kZSkK
      patchset: 6f731189083cb30c78360c7b0cc3ba313e5b9cd9
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/osism/zuul-config:
            canonical_name: github.com/osism/zuul-config
            checkout: main
            commit: 71b711c422c10c242a8f785dc6d41ed9d12e9cd3
          trusted/project_1/github.com/osism/openinfra-zuul-jobs:
            canonical_name: github.com/osism/openinfra-zuul-jobs
            checkout: master
            commit: 242732586e2cba04d04867d3e302888c766bc231
          trusted/project_2/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
          untrusted/project_0/github.com/osism/openstack-ironic-images:
            canonical_name: github.com/osism/openstack-ironic-images
            checkout: main
            commit: 2e407386155bb8dbaf4a0aae30d2357c6a067fdd
          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
          untrusted/project_3/github.com/osism/zuul-jobs:
            canonical_name: github.com/osism/zuul-jobs
            checkout: main
            commit: 1d71e58c93442038e695a5d883d57a603182c7ae
        playbooks:
        - path: untrusted/project_0/github.com/osism/openstack-ironic-images/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/openstack-ironic-images
        name: osism/openstack-ironic-images
        short_name: openstack-ironic-images
        src_dir: src/github.com/osism/openstack-ironic-images
      projects:
        github.com/osism/openstack-ironic-images:
          canonical_hostname: github.com
          canonical_name: github.com/osism/openstack-ironic-images
          checkout: main
          checkout_description: zuul branch
          commit: 2e407386155bb8dbaf4a0aae30d2357c6a067fdd
          name: osism/openstack-ironic-images
          required: false
          short_name: openstack-ironic-images
          src_dir: src/github.com/osism/openstack-ironic-images
      ref: refs/pull/216/head
      resources: {}
      tenant: osism
      timeout: 7200
      topic: null
      voting: true
