all:
  children:
    cephs:
      hosts:
        instance: null
    computes:
      hosts:
        instance: null
    controllers:
      hosts:
        instance: null
    zuul_unreachable:
      hosts: {}
  hosts:
    instance:
      ansible_connection: ssh
      ansible_host: 162.253.55.34
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      atmosphere_image_prefix: harbor.atmosphere.dev/
      nodepool:
        az: yul2
        cloud: public
        external_id: 449fde07-5408-48eb-9308-08f22b32c7eb
        host_id: a01cb4e3d8698a10b6af7a23bf700f5af12859fba177738e8fa3822e
        interface_ip: 162.253.55.34
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 162.253.55.34
        private_ipv6: null
        provider: yul1
        public_ipv4: 162.253.55.34
        public_ipv6: 2604:e100:1:0:f816:3eff:fe6d:d3ee
        region: ca-ymq-1
        slot: null
      zuul_node:
        az: yul2
        cloud: public
        external_id: 449fde07-5408-48eb-9308-08f22b32c7eb
        host_id: a01cb4e3d8698a10b6af7a23bf700f5af12859fba177738e8fa3822e
        interface_ip: 162.253.55.34
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 162.253.55.34
        private_ipv6: null
        provider: yul1
        public_ipv4: 162.253.55.34
        public_ipv6: 2604:e100:1:0:f816:3eff:fe6d:d3ee
        region: ca-ymq-1
        slot: null
        uuid: null
  vars:
    atmosphere_image_prefix: harbor.atmosphere.dev/
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#1>'
      - '<Job atmosphere-release-manifest explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/atmosphere-zuul-jobs/zuul.d/jobs.yaml@main#1>'
      - '<Job atmosphere-release-manifest explicit: None implied: None source: vexxhost/atmosphere-zuul-jobs/zuul.d/project-templates.yaml@main#1>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: a7caaeb9cafa485f93155df3c0db4628
      build_refs:
      - branch: main
        change: '4232'
        change_message: 'feat(ironic): enable locked-down bare metal graphical consoles


          Bare metal nodes get the same browser-based graphical console that VMs have,
          enabled by default whenever the Ironic role is deployed. This folds the
          former stack (#4233, #4236, #4239) into one PR.


          When a console is opened, ironic-conductor uses Ironic''s Kubernetes console
          provider to start a short-lived Pod running the console image, which signs
          in to the BMC''s web console (Dell iDRAC, HPE iLO, Supermicro) and serves
          it over VNC. Users open consoles for bare metal instances through Nova (`openstack
          console url show --novnc`), using the existing public `nova-novncproxy`.
          `ironic-novncproxy` runs as an internal service only, so no new Ingress,
          hostname or DNS record is needed.


          ## What it deploys


          - `ironic-novncproxy` Deployment and Service (internal), serving the noVNC
          files shipped in the Ironic image

          - the `openstack-ironic-vnc` namespace as a chart resource, plus a Role/RoleBinding
          so ironic-conductor can create and delete console Pods and Secrets only
          there

          - `kubectl` for the Kubernetes provider comes from the Ironic image (vexxhost/docker-ironic#1631
          on main, #1632 on stable/2026.1)

          - `[vnc]` config with the console image from the image catalog, and `redfish-graphical`
          added to the enabled console interfaces

          - ingress NetworkPolicy so only `ironic-novncproxy` and `nova-novncproxy`
          reach the console Pods on 5900


          ## Console Pod lockdown


          - namespace enforces the `restricted` Pod Security Standard

          - scheduled on control plane nodes (`openstack-control-plane=enabled`),
          like the rest of the chart

          - runs as uid 42424, `runAsNonRoot`, no privilege escalation, all capabilities
          dropped, `RuntimeDefault` seccomp

          - no service account token

          - the console NetworkPolicy allows egress only to kube-dns and TCP 80/443,
          so the Pods can reach the BMC but not the Kubernetes API, kubelet, etcd,
          databases, RabbitMQ or internal OpenStack APIs


          There are no role variables for the feature. The console manifests default
          to on in the chart and render only when `[vnc] enabled` is set, so the role
          only sets the `[vnc]` options. The chart''s values are still reachable through
          `ironic_helm_values`.


          ## Still to do before merge


          - pin `ironic_console` in `roles/defaults/vars/main.yml` once `ghcr.io/vexxhost/ironic-console`
          (vexxhost/docker-ironic-console) publishes its first build

          - test on a lab node with a Redfish BMC; Zuul does not deploy Ironic


          ## Requirements


          Ironic and Nova 2026.1 or later (Kubernetes console provider and Nova''s
          Ironic VNC driver). Nova''s `nova-compute-ironic` stays opt-in through `nova_helm_values.manifests.statefulset_compute_ironic`;
          Nova now waits 120 seconds for a bare metal console, matching Ironic''s
          console Pod start timeout.


          Docs: `doc/source/admin/baremetal/` (deploying Ironic in the index, consoles
          in `console.rst`).

          '
        change_url: https://github.com/vexxhost/atmosphere/pull/4232
        commit_id: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
        patchset: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          name: vexxhost/atmosphere
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
        src_dir: src/github.com/vexxhost/atmosphere
        topic: null
      buildset: 19ee6298d7ea45fa8fac80a0d4ed4731
      buildset_refs:
      - branch: main
        change: '4232'
        change_message: 'feat(ironic): enable locked-down bare metal graphical consoles


          Bare metal nodes get the same browser-based graphical console that VMs have,
          enabled by default whenever the Ironic role is deployed. This folds the
          former stack (#4233, #4236, #4239) into one PR.


          When a console is opened, ironic-conductor uses Ironic''s Kubernetes console
          provider to start a short-lived Pod running the console image, which signs
          in to the BMC''s web console (Dell iDRAC, HPE iLO, Supermicro) and serves
          it over VNC. Users open consoles for bare metal instances through Nova (`openstack
          console url show --novnc`), using the existing public `nova-novncproxy`.
          `ironic-novncproxy` runs as an internal service only, so no new Ingress,
          hostname or DNS record is needed.


          ## What it deploys


          - `ironic-novncproxy` Deployment and Service (internal), serving the noVNC
          files shipped in the Ironic image

          - the `openstack-ironic-vnc` namespace as a chart resource, plus a Role/RoleBinding
          so ironic-conductor can create and delete console Pods and Secrets only
          there

          - `kubectl` for the Kubernetes provider comes from the Ironic image (vexxhost/docker-ironic#1631
          on main, #1632 on stable/2026.1)

          - `[vnc]` config with the console image from the image catalog, and `redfish-graphical`
          added to the enabled console interfaces

          - ingress NetworkPolicy so only `ironic-novncproxy` and `nova-novncproxy`
          reach the console Pods on 5900


          ## Console Pod lockdown


          - namespace enforces the `restricted` Pod Security Standard

          - scheduled on control plane nodes (`openstack-control-plane=enabled`),
          like the rest of the chart

          - runs as uid 42424, `runAsNonRoot`, no privilege escalation, all capabilities
          dropped, `RuntimeDefault` seccomp

          - no service account token

          - the console NetworkPolicy allows egress only to kube-dns and TCP 80/443,
          so the Pods can reach the BMC but not the Kubernetes API, kubelet, etcd,
          databases, RabbitMQ or internal OpenStack APIs


          There are no role variables for the feature. The console manifests default
          to on in the chart and render only when `[vnc] enabled` is set, so the role
          only sets the `[vnc]` options. The chart''s values are still reachable through
          `ironic_helm_values`.


          ## Still to do before merge


          - pin `ironic_console` in `roles/defaults/vars/main.yml` once `ghcr.io/vexxhost/ironic-console`
          (vexxhost/docker-ironic-console) publishes its first build

          - test on a lab node with a Redfish BMC; Zuul does not deploy Ironic


          ## Requirements


          Ironic and Nova 2026.1 or later (Kubernetes console provider and Nova''s
          Ironic VNC driver). Nova''s `nova-compute-ironic` stays opt-in through `nova_helm_values.manifests.statefulset_compute_ironic`;
          Nova now waits 120 seconds for a bare metal console, matching Ironic''s
          console Pod start timeout.


          Docs: `doc/source/admin/baremetal/` (deploying Ironic in the index, consoles
          in `console.rst`).

          '
        change_url: https://github.com/vexxhost/atmosphere/pull/4232
        commit_id: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
        patchset: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          name: vexxhost/atmosphere
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
        src_dir: src/github.com/vexxhost/atmosphere
        topic: null
      change: '4232'
      change_message: 'feat(ironic): enable locked-down bare metal graphical consoles


        Bare metal nodes get the same browser-based graphical console that VMs have,
        enabled by default whenever the Ironic role is deployed. This folds the former
        stack (#4233, #4236, #4239) into one PR.


        When a console is opened, ironic-conductor uses Ironic''s Kubernetes console
        provider to start a short-lived Pod running the console image, which signs
        in to the BMC''s web console (Dell iDRAC, HPE iLO, Supermicro) and serves
        it over VNC. Users open consoles for bare metal instances through Nova (`openstack
        console url show --novnc`), using the existing public `nova-novncproxy`. `ironic-novncproxy`
        runs as an internal service only, so no new Ingress, hostname or DNS record
        is needed.


        ## What it deploys


        - `ironic-novncproxy` Deployment and Service (internal), serving the noVNC
        files shipped in the Ironic image

        - the `openstack-ironic-vnc` namespace as a chart resource, plus a Role/RoleBinding
        so ironic-conductor can create and delete console Pods and Secrets only there

        - `kubectl` for the Kubernetes provider comes from the Ironic image (vexxhost/docker-ironic#1631
        on main, #1632 on stable/2026.1)

        - `[vnc]` config with the console image from the image catalog, and `redfish-graphical`
        added to the enabled console interfaces

        - ingress NetworkPolicy so only `ironic-novncproxy` and `nova-novncproxy`
        reach the console Pods on 5900


        ## Console Pod lockdown


        - namespace enforces the `restricted` Pod Security Standard

        - scheduled on control plane nodes (`openstack-control-plane=enabled`), like
        the rest of the chart

        - runs as uid 42424, `runAsNonRoot`, no privilege escalation, all capabilities
        dropped, `RuntimeDefault` seccomp

        - no service account token

        - the console NetworkPolicy allows egress only to kube-dns and TCP 80/443,
        so the Pods can reach the BMC but not the Kubernetes API, kubelet, etcd, databases,
        RabbitMQ or internal OpenStack APIs


        There are no role variables for the feature. The console manifests default
        to on in the chart and render only when `[vnc] enabled` is set, so the role
        only sets the `[vnc]` options. The chart''s values are still reachable through
        `ironic_helm_values`.


        ## Still to do before merge


        - pin `ironic_console` in `roles/defaults/vars/main.yml` once `ghcr.io/vexxhost/ironic-console`
        (vexxhost/docker-ironic-console) publishes its first build

        - test on a lab node with a Redfish BMC; Zuul does not deploy Ironic


        ## Requirements


        Ironic and Nova 2026.1 or later (Kubernetes console provider and Nova''s Ironic
        VNC driver). Nova''s `nova-compute-ironic` stays opt-in through `nova_helm_values.manifests.statefulset_compute_ironic`;
        Nova now waits 120 seconds for a bare metal console, matching Ironic''s console
        Pod start timeout.


        Docs: `doc/source/admin/baremetal/` (deploying Ironic in the index, consoles
        in `console.rst`).

        '
      change_url: https://github.com/vexxhost/atmosphere/pull/4232
      child_jobs:
      - atmosphere-molecule-aio-openvswitch
      - atmosphere-molecule-aio-ovn
      - atmosphere-molecule-csi-local-path-provisioner
      - atmosphere-molecule-csi-rbd
      - atmosphere-molecule-keycloak
      commit_id: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
      event_id: 56405230-d154-11f1-8614-92f2fe7d11a9
      executor:
        hostname: 2d72f0692154
        inventory_file: /var/lib/zuul/builds/a7caaeb9cafa485f93155df3c0db4628/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/a7caaeb9cafa485f93155df3c0db4628/work/logs
        result_data_file: /var/lib/zuul/builds/a7caaeb9cafa485f93155df3c0db4628/work/results.json
        src_root: /var/lib/zuul/builds/a7caaeb9cafa485f93155df3c0db4628/work/src
        work_root: /var/lib/zuul/builds/a7caaeb9cafa485f93155df3c0db4628/work
      include_vars: []
      items:
      - branch: main
        change: '4232'
        change_message: 'feat(ironic): enable locked-down bare metal graphical consoles


          Bare metal nodes get the same browser-based graphical console that VMs have,
          enabled by default whenever the Ironic role is deployed. This folds the
          former stack (#4233, #4236, #4239) into one PR.


          When a console is opened, ironic-conductor uses Ironic''s Kubernetes console
          provider to start a short-lived Pod running the console image, which signs
          in to the BMC''s web console (Dell iDRAC, HPE iLO, Supermicro) and serves
          it over VNC. Users open consoles for bare metal instances through Nova (`openstack
          console url show --novnc`), using the existing public `nova-novncproxy`.
          `ironic-novncproxy` runs as an internal service only, so no new Ingress,
          hostname or DNS record is needed.


          ## What it deploys


          - `ironic-novncproxy` Deployment and Service (internal), serving the noVNC
          files shipped in the Ironic image

          - the `openstack-ironic-vnc` namespace as a chart resource, plus a Role/RoleBinding
          so ironic-conductor can create and delete console Pods and Secrets only
          there

          - `kubectl` for the Kubernetes provider comes from the Ironic image (vexxhost/docker-ironic#1631
          on main, #1632 on stable/2026.1)

          - `[vnc]` config with the console image from the image catalog, and `redfish-graphical`
          added to the enabled console interfaces

          - ingress NetworkPolicy so only `ironic-novncproxy` and `nova-novncproxy`
          reach the console Pods on 5900


          ## Console Pod lockdown


          - namespace enforces the `restricted` Pod Security Standard

          - scheduled on control plane nodes (`openstack-control-plane=enabled`),
          like the rest of the chart

          - runs as uid 42424, `runAsNonRoot`, no privilege escalation, all capabilities
          dropped, `RuntimeDefault` seccomp

          - no service account token

          - the console NetworkPolicy allows egress only to kube-dns and TCP 80/443,
          so the Pods can reach the BMC but not the Kubernetes API, kubelet, etcd,
          databases, RabbitMQ or internal OpenStack APIs


          There are no role variables for the feature. The console manifests default
          to on in the chart and render only when `[vnc] enabled` is set, so the role
          only sets the `[vnc]` options. The chart''s values are still reachable through
          `ironic_helm_values`.


          ## Still to do before merge


          - pin `ironic_console` in `roles/defaults/vars/main.yml` once `ghcr.io/vexxhost/ironic-console`
          (vexxhost/docker-ironic-console) publishes its first build

          - test on a lab node with a Redfish BMC; Zuul does not deploy Ironic


          ## Requirements


          Ironic and Nova 2026.1 or later (Kubernetes console provider and Nova''s
          Ironic VNC driver). Nova''s `nova-compute-ironic` stays opt-in through `nova_helm_values.manifests.statefulset_compute_ironic`;
          Nova now waits 120 seconds for a bare metal console, matching Ironic''s
          console Pod start timeout.


          Docs: `doc/source/admin/baremetal/` (deploying Ironic in the index, consoles
          in `console.rst`).

          '
        change_url: https://github.com/vexxhost/atmosphere/pull/4232
        commit_id: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
        patchset: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          name: vexxhost/atmosphere
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
        topic: null
      job: atmosphere-release-manifest
      jobtags: []
      max_attempts: 3
      message: ZmVhdChpcm9uaWMpOiBlbmFibGUgbG9ja2VkLWRvd24gYmFyZSBtZXRhbCBncmFwaGljYWwgY29uc29sZXMKCkJhcmUgbWV0YWwgbm9kZXMgZ2V0IHRoZSBzYW1lIGJyb3dzZXItYmFzZWQgZ3JhcGhpY2FsIGNvbnNvbGUgdGhhdCBWTXMgaGF2ZSwgZW5hYmxlZCBieSBkZWZhdWx0IHdoZW5ldmVyIHRoZSBJcm9uaWMgcm9sZSBpcyBkZXBsb3llZC4gVGhpcyBmb2xkcyB0aGUgZm9ybWVyIHN0YWNrICgjNDIzMywgIzQyMzYsICM0MjM5KSBpbnRvIG9uZSBQUi4KCldoZW4gYSBjb25zb2xlIGlzIG9wZW5lZCwgaXJvbmljLWNvbmR1Y3RvciB1c2VzIElyb25pYydzIEt1YmVybmV0ZXMgY29uc29sZSBwcm92aWRlciB0byBzdGFydCBhIHNob3J0LWxpdmVkIFBvZCBydW5uaW5nIHRoZSBjb25zb2xlIGltYWdlLCB3aGljaCBzaWducyBpbiB0byB0aGUgQk1DJ3Mgd2ViIGNvbnNvbGUgKERlbGwgaURSQUMsIEhQRSBpTE8sIFN1cGVybWljcm8pIGFuZCBzZXJ2ZXMgaXQgb3ZlciBWTkMuIFVzZXJzIG9wZW4gY29uc29sZXMgZm9yIGJhcmUgbWV0YWwgaW5zdGFuY2VzIHRocm91Z2ggTm92YSAoYG9wZW5zdGFjayBjb25zb2xlIHVybCBzaG93IC0tbm92bmNgKSwgdXNpbmcgdGhlIGV4aXN0aW5nIHB1YmxpYyBgbm92YS1ub3ZuY3Byb3h5YC4gYGlyb25pYy1ub3ZuY3Byb3h5YCBydW5zIGFzIGFuIGludGVybmFsIHNlcnZpY2Ugb25seSwgc28gbm8gbmV3IEluZ3Jlc3MsIGhvc3RuYW1lIG9yIEROUyByZWNvcmQgaXMgbmVlZGVkLgoKIyMgV2hhdCBpdCBkZXBsb3lzCgotIGBpcm9uaWMtbm92bmNwcm94eWAgRGVwbG95bWVudCBhbmQgU2VydmljZSAoaW50ZXJuYWwpLCBzZXJ2aW5nIHRoZSBub1ZOQyBmaWxlcyBzaGlwcGVkIGluIHRoZSBJcm9uaWMgaW1hZ2UKLSB0aGUgYG9wZW5zdGFjay1pcm9uaWMtdm5jYCBuYW1lc3BhY2UgYXMgYSBjaGFydCByZXNvdXJjZSwgcGx1cyBhIFJvbGUvUm9sZUJpbmRpbmcgc28gaXJvbmljLWNvbmR1Y3RvciBjYW4gY3JlYXRlIGFuZCBkZWxldGUgY29uc29sZSBQb2RzIGFuZCBTZWNyZXRzIG9ubHkgdGhlcmUKLSBga3ViZWN0bGAgZm9yIHRoZSBLdWJlcm5ldGVzIHByb3ZpZGVyIGNvbWVzIGZyb20gdGhlIElyb25pYyBpbWFnZSAodmV4eGhvc3QvZG9ja2VyLWlyb25pYyMxNjMxIG9uIG1haW4sICMxNjMyIG9uIHN0YWJsZS8yMDI2LjEpCi0gYFt2bmNdYCBjb25maWcgd2l0aCB0aGUgY29uc29sZSBpbWFnZSBmcm9tIHRoZSBpbWFnZSBjYXRhbG9nLCBhbmQgYHJlZGZpc2gtZ3JhcGhpY2FsYCBhZGRlZCB0byB0aGUgZW5hYmxlZCBjb25zb2xlIGludGVyZmFjZXMKLSBpbmdyZXNzIE5ldHdvcmtQb2xpY3kgc28gb25seSBgaXJvbmljLW5vdm5jcHJveHlgIGFuZCBgbm92YS1ub3ZuY3Byb3h5YCByZWFjaCB0aGUgY29uc29sZSBQb2RzIG9uIDU5MDAKCiMjIENvbnNvbGUgUG9kIGxvY2tkb3duCgotIG5hbWVzcGFjZSBlbmZvcmNlcyB0aGUgYHJlc3RyaWN0ZWRgIFBvZCBTZWN1cml0eSBTdGFuZGFyZAotIHNjaGVkdWxlZCBvbiBjb250cm9sIHBsYW5lIG5vZGVzIChgb3BlbnN0YWNrLWNvbnRyb2wtcGxhbmU9ZW5hYmxlZGApLCBsaWtlIHRoZSByZXN0IG9mIHRoZSBjaGFydAotIHJ1bnMgYXMgdWlkIDQyNDI0LCBgcnVuQXNOb25Sb290YCwgbm8gcHJpdmlsZWdlIGVzY2FsYXRpb24sIGFsbCBjYXBhYmlsaXRpZXMgZHJvcHBlZCwgYFJ1bnRpbWVEZWZhdWx0YCBzZWNjb21wCi0gbm8gc2VydmljZSBhY2NvdW50IHRva2VuCi0gdGhlIGNvbnNvbGUgTmV0d29ya1BvbGljeSBhbGxvd3MgZWdyZXNzIG9ubHkgdG8ga3ViZS1kbnMgYW5kIFRDUCA4MC80NDMsIHNvIHRoZSBQb2RzIGNhbiByZWFjaCB0aGUgQk1DIGJ1dCBub3QgdGhlIEt1YmVybmV0ZXMgQVBJLCBrdWJlbGV0LCBldGNkLCBkYXRhYmFzZXMsIFJhYmJpdE1RIG9yIGludGVybmFsIE9wZW5TdGFjayBBUElzCgpUaGVyZSBhcmUgbm8gcm9sZSB2YXJpYWJsZXMgZm9yIHRoZSBmZWF0dXJlLiBUaGUgY29uc29sZSBtYW5pZmVzdHMgZGVmYXVsdCB0byBvbiBpbiB0aGUgY2hhcnQgYW5kIHJlbmRlciBvbmx5IHdoZW4gYFt2bmNdIGVuYWJsZWRgIGlzIHNldCwgc28gdGhlIHJvbGUgb25seSBzZXRzIHRoZSBgW3ZuY11gIG9wdGlvbnMuIFRoZSBjaGFydCdzIHZhbHVlcyBhcmUgc3RpbGwgcmVhY2hhYmxlIHRocm91Z2ggYGlyb25pY19oZWxtX3ZhbHVlc2AuCgojIyBTdGlsbCB0byBkbyBiZWZvcmUgbWVyZ2UKCi0gcGluIGBpcm9uaWNfY29uc29sZWAgaW4gYHJvbGVzL2RlZmF1bHRzL3ZhcnMvbWFpbi55bWxgIG9uY2UgYGdoY3IuaW8vdmV4eGhvc3QvaXJvbmljLWNvbnNvbGVgICh2ZXh4aG9zdC9kb2NrZXItaXJvbmljLWNvbnNvbGUpIHB1Ymxpc2hlcyBpdHMgZmlyc3QgYnVpbGQKLSB0ZXN0IG9uIGEgbGFiIG5vZGUgd2l0aCBhIFJlZGZpc2ggQk1DOyBadXVsIGRvZXMgbm90IGRlcGxveSBJcm9uaWMKCiMjIFJlcXVpcmVtZW50cwoKSXJvbmljIGFuZCBOb3ZhIDIwMjYuMSBvciBsYXRlciAoS3ViZXJuZXRlcyBjb25zb2xlIHByb3ZpZGVyIGFuZCBOb3ZhJ3MgSXJvbmljIFZOQyBkcml2ZXIpLiBOb3ZhJ3MgYG5vdmEtY29tcHV0ZS1pcm9uaWNgIHN0YXlzIG9wdC1pbiB0aHJvdWdoIGBub3ZhX2hlbG1fdmFsdWVzLm1hbmlmZXN0cy5zdGF0ZWZ1bHNldF9jb21wdXRlX2lyb25pY2A7IE5vdmEgbm93IHdhaXRzIDEyMCBzZWNvbmRzIGZvciBhIGJhcmUgbWV0YWwgY29uc29sZSwgbWF0Y2hpbmcgSXJvbmljJ3MgY29uc29sZSBQb2Qgc3RhcnQgdGltZW91dC4KCkRvY3M6IGBkb2Mvc291cmNlL2FkbWluL2JhcmVtZXRhbC9gIChkZXBsb3lpbmcgSXJvbmljIGluIHRoZSBpbmRleCwgY29uc29sZXMgaW4gYGNvbnNvbGUucnN0YCkuCg==
      patchset: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
      pipeline: check
      playbook_context:
        playbook_projects:
          trusted/project_0/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          trusted/project_1/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: be52461cd48abccbf95b13a58b2551ac673d8ad7
          trusted/project_2/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: 4fd48825891421af0774bdd500fee36e111d80a6
          untrusted/project_0/github.com/vexxhost/atmosphere-zuul-jobs:
            canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
            checkout: main
            commit: 4ee8667d55d1aa6230b954e7dc0574946f8c4373
          untrusted/project_1/github.com/vexxhost/zuul-config:
            canonical_name: github.com/vexxhost/zuul-config
            checkout: main
            commit: 298983cd1253e6833abdb49d87d912527e0e6597
          untrusted/project_2/opendev.org/zuul/zuul-jobs:
            canonical_name: opendev.org/zuul/zuul-jobs
            checkout: master
            commit: be52461cd48abccbf95b13a58b2551ac673d8ad7
          untrusted/project_3/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: 4fd48825891421af0774bdd500fee36e111d80a6
        playbooks:
        - path: untrusted/project_0/github.com/vexxhost/atmosphere-zuul-jobs/playbooks/release-manifest/run.yaml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/atmosphere-zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/atmosphere-zuul-jobs
            role_path: ansible/playbook_0/role_0/atmosphere-zuul-jobs/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_2/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_2/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/vexxhost/zuul-jobs
            role_path: ansible/playbook_0/role_3/zuul-jobs/roles
        post_playbooks:
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/post_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_0/role_2/zuul-jobs/roles
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/post-logs.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/post_playbook_1/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_1/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_1/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_1/role_2/zuul-jobs/roles
        pre_playbooks:
        - path: trusted/project_0/github.com/vexxhost/zuul-config/playbooks/base/pre.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/pre_playbook_0/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_0/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_0/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_0/role_2/zuul-jobs/roles
      post_review: false
      post_timeout: null
      pre_timeout: null
      project:
        canonical_hostname: github.com
        canonical_name: github.com/vexxhost/atmosphere
        name: vexxhost/atmosphere
        short_name: atmosphere
        src_dir: src/github.com/vexxhost/atmosphere
      projects:
        github.com/vexxhost/atmosphere:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere
          checkout: main
          checkout_description: zuul branch
          commit: 3fe31c9a2bdb75dbc6fab24b23a0cbab0538237b
          name: vexxhost/atmosphere
          required: false
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
      ref: refs/pull/4232/head
      resources: {}
      tenant: oss
      timeout: 1800
      topic: null
      voting: true
