all:
  children:
    cephs:
      hosts:
        instance: null
    computes:
      hosts:
        instance: null
    controllers:
      hosts:
        instance: null
    zuul_unreachable:
      hosts: {}
  hosts:
    instance:
      ansible_connection: ssh
      ansible_host: 199.204.45.222
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      atmosphere_deploy_tags: kubernetes,csi,cert-manager,cluster-issuer,ingress-nginx,rabbitmq-cluster-operator,percona-xtradb-cluster-operator,percona-xtradb-cluster,valkey,memcached,keycloak,kube-prometheus-stack,keystone,horizon
      atmosphere_image_prefix: harbor.atmosphere.dev/
      ceph_conf_overrides:
      - option: mon allow pool size one
        section: global
        value: true
      - option: osd crush chooseleaf type
        section: global
        value: 0
      - option: auth allow insecure global id reclaim
        section: mon
        value: false
      ceph_csi_rbd_helm_values:
        provisioner:
          replicaCount: 1
      ceph_fsid: 4837cbf8-4f90-4300-b3f6-726c9b9f89b4
      ceph_osd_devices:
      - /dev/ceph-{{ inventory_hostname_short }}-osd0/data
      - /dev/ceph-{{ inventory_hostname_short }}-osd1/data
      - /dev/ceph-{{ inventory_hostname_short }}-osd2/data
      ceph_public_network: '{{ ansible_facts[''default_ipv4''][''network''] + ''/''
        + (ansible_facts[''default_ipv4''][''prefix''] | string) }}'
      cilium_helm_values:
        operator:
          replicas: 1
      cluster_issuer_type: self-signed
      csi_driver: local-path-provisioner
      ingress_nginx_helm_values:
        controller:
          config:
            worker-processes: 2
      keystone_helm_values:
        pod:
          replicas:
            api: 1
      kube_vip_address: 172.17.0.100
      kube_vip_interface: '{{ ansible_facts[''default_ipv4''].interface }}'
      kubernetes_hostname: '{{ ansible_facts[''default_ipv4''].address }}'
      molecule_environment:
        ATMOSPHERE_MOLECULE_INVENTORY: '{{ ansible_user_dir }}/{{ zuul.project.src_dir
          }}/inventory.yaml'
        ATMOSPHERE_ZUUL_INVENTORY: '{{ ansible_user_dir }}/{{ zuul.project.src_dir
          }}/inventory.yaml'
      molecule_scenario: keycloak
      nodepool:
        az: nova
        cloud: public
        external_id: ac8724d0-a99c-49a6-852c-55a4da382728
        host_id: 413ad91e6120ae81306de27e59dcefd40ab96f06b8665fea7030ef8f
        interface_ip: 199.204.45.222
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 199.204.45.222
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.204.45.222
        public_ipv6: 2604:e100:1:0:f816:3eff:fe10:b9be
        region: ca-ymq-1
        slot: null
      percona_xtradb_cluster_spec:
        allowUnsafeConfigurations: true
        haproxy:
          size: 1
        pxc:
          size: 1
      zuul_node:
        az: nova
        cloud: public
        external_id: ac8724d0-a99c-49a6-852c-55a4da382728
        host_id: 413ad91e6120ae81306de27e59dcefd40ab96f06b8665fea7030ef8f
        interface_ip: 199.204.45.222
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 199.204.45.222
        private_ipv6: null
        provider: yul1
        public_ipv4: 199.204.45.222
        public_ipv6: 2604:e100:1:0:f816:3eff:fe10:b9be
        region: ca-ymq-1
        slot: null
        uuid: null
  vars:
    atmosphere_deploy_tags: kubernetes,csi,cert-manager,cluster-issuer,ingress-nginx,rabbitmq-cluster-operator,percona-xtradb-cluster-operator,percona-xtradb-cluster,valkey,memcached,keycloak,kube-prometheus-stack,keystone,horizon
    atmosphere_image_prefix: harbor.atmosphere.dev/
    ceph_conf_overrides:
    - option: mon allow pool size one
      section: global
      value: true
    - option: osd crush chooseleaf type
      section: global
      value: 0
    - option: auth allow insecure global id reclaim
      section: mon
      value: false
    ceph_csi_rbd_helm_values:
      provisioner:
        replicaCount: 1
    ceph_fsid: 4837cbf8-4f90-4300-b3f6-726c9b9f89b4
    ceph_osd_devices:
    - /dev/ceph-{{ inventory_hostname_short }}-osd0/data
    - /dev/ceph-{{ inventory_hostname_short }}-osd1/data
    - /dev/ceph-{{ inventory_hostname_short }}-osd2/data
    ceph_public_network: '{{ ansible_facts[''default_ipv4''][''network''] + ''/''
      + (ansible_facts[''default_ipv4''][''prefix''] | string) }}'
    cilium_helm_values:
      operator:
        replicas: 1
    cluster_issuer_type: self-signed
    csi_driver: local-path-provisioner
    ingress_nginx_helm_values:
      controller:
        config:
          worker-processes: 2
    keystone_helm_values:
      pod:
        replicas:
          api: 1
    kube_vip_address: 172.17.0.100
    kube_vip_interface: '{{ ansible_facts[''default_ipv4''].interface }}'
    kubernetes_hostname: '{{ ansible_facts[''default_ipv4''].address }}'
    molecule_environment:
      ATMOSPHERE_MOLECULE_INVENTORY: '{{ ansible_user_dir }}/{{ zuul.project.src_dir
        }}/inventory.yaml'
      ATMOSPHERE_ZUUL_INVENTORY: '{{ ansible_user_dir }}/{{ zuul.project.src_dir }}/inventory.yaml'
    molecule_scenario: keycloak
    percona_xtradb_cluster_spec:
      allowUnsafeConfigurations: true
      haproxy:
        size: 1
      pxc:
        size: 1
    zuul:
      _inheritance_path:
      - '<Job base explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-config/zuul.d/jobs.yaml@main#1>'
      - '<Job molecule explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/zuul-jobs/zuul.d/ansible-jobs.yaml@main#1>'
      - '<Job atmosphere-molecule explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/atmosphere/.zuul.yaml@main#24>'
      - '<Job atmosphere-molecule-keycloak explicit: None implied: {MatchAny:{ImpliedBranchMatcher:main}}
        source: vexxhost/atmosphere/.zuul.yaml@main#122>'
      - '<Job atmosphere-molecule-keycloak explicit: None implied: None source: vexxhost/atmosphere/.zuul.yaml@main#148>'
      ansible_version: '9'
      attempts: 1
      branch: main
      build: 369bdb2e1ead4a4ead4cdf9b928f6587
      build_refs:
      - branch: main
        change: '3842'
        change_message: "fix(molecule): restore local AIO execution with parallel
          orchestrator\n\n## Summary\n\nRedoes the work from #3809 on top of #3818's
          parallel deployment orchestrator. Local molecule AIO builds now use the
          Go-based parallel orchestrator, matching CI behavior.\n\n## Changes\n\n###
          Molecule AIO\n- Move AIO variables from `.zuul.yaml` to `molecule/aio/group_vars/all/molecule.yml`
          (single source of truth)\n- Update `molecule.yml` to provisioner-based schema
          for local/v26 compatibility\n- Update `converge.yml` to detect Zuul vs local,
          generate local inventory, and run the parallel Go orchestrator in both environments\n-
          Add `prepare.yml` steps to copy AIO overrides and OSD devices to workspace\n-
          Add `stestr` fallback in `verify.yml` for local runs without `.venv`\n\n###
          Zuul\n- Add `ATMOSPHERE_ZUUL_INVENTORY` to `molecule_environment` in parent
          job\n- Pass `ATMOSPHERE_NETWORK_BACKEND` via both Zuul job vars and `molecule_environment`\n-
          Remove 170+ lines of AIO helm override vars from `.zuul.yaml`\n\n### Other\n-
          Bump `molecule` to `26.4.0` and `ansible-compat` to `26.3.0` in `tox.ini`\n-
          Update `molecule/csi/molecule.yml` inventory path\n- Add keycloak scenario
          symlinks for shared group/host vars\n\n## How it works\n\n**Zuul flow**
          (unchanged from #3818):\n1. `pre.yml` copies Zuul inventory, runs `molecule
          prepare`\n2. `converge.yml` (run directly by Zuul): builds Go binary, activates
          `.venv`, runs `atmosphere deploy --inventory ./inventory.yaml`\n3. `run.yml`
          configures networking, runs `molecule verify`\n\n**Local flow** (new):\n1.
          `tox -e molecule-aio-openvswitch` \u2192 `molecule test -s aio`\n2. `prepare.yml`:
          generates workspace at project root, copies AIO group_vars there\n3. `converge.yml`:
          builds Go binary, creates local `inventory.yaml` (localhost), runs `atmosphere
          deploy` using molecule/tox PATH\n4. `verify.yml`: falls back to `stestr`
          from PATH\n\nDepends on #3818"
        change_url: https://github.com/vexxhost/atmosphere/pull/3842
        commit_id: ebb968fbfd2fbb8d8ff595045bc67900a665a891
        patchset: ebb968fbfd2fbb8d8ff595045bc67900a665a891
        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: 5b793ee6ada5402ea7504e5a3183c713
      buildset_refs:
      - branch: main
        change: '3842'
        change_message: "fix(molecule): restore local AIO execution with parallel
          orchestrator\n\n## Summary\n\nRedoes the work from #3809 on top of #3818's
          parallel deployment orchestrator. Local molecule AIO builds now use the
          Go-based parallel orchestrator, matching CI behavior.\n\n## Changes\n\n###
          Molecule AIO\n- Move AIO variables from `.zuul.yaml` to `molecule/aio/group_vars/all/molecule.yml`
          (single source of truth)\n- Update `molecule.yml` to provisioner-based schema
          for local/v26 compatibility\n- Update `converge.yml` to detect Zuul vs local,
          generate local inventory, and run the parallel Go orchestrator in both environments\n-
          Add `prepare.yml` steps to copy AIO overrides and OSD devices to workspace\n-
          Add `stestr` fallback in `verify.yml` for local runs without `.venv`\n\n###
          Zuul\n- Add `ATMOSPHERE_ZUUL_INVENTORY` to `molecule_environment` in parent
          job\n- Pass `ATMOSPHERE_NETWORK_BACKEND` via both Zuul job vars and `molecule_environment`\n-
          Remove 170+ lines of AIO helm override vars from `.zuul.yaml`\n\n### Other\n-
          Bump `molecule` to `26.4.0` and `ansible-compat` to `26.3.0` in `tox.ini`\n-
          Update `molecule/csi/molecule.yml` inventory path\n- Add keycloak scenario
          symlinks for shared group/host vars\n\n## How it works\n\n**Zuul flow**
          (unchanged from #3818):\n1. `pre.yml` copies Zuul inventory, runs `molecule
          prepare`\n2. `converge.yml` (run directly by Zuul): builds Go binary, activates
          `.venv`, runs `atmosphere deploy --inventory ./inventory.yaml`\n3. `run.yml`
          configures networking, runs `molecule verify`\n\n**Local flow** (new):\n1.
          `tox -e molecule-aio-openvswitch` \u2192 `molecule test -s aio`\n2. `prepare.yml`:
          generates workspace at project root, copies AIO group_vars there\n3. `converge.yml`:
          builds Go binary, creates local `inventory.yaml` (localhost), runs `atmosphere
          deploy` using molecule/tox PATH\n4. `verify.yml`: falls back to `stestr`
          from PATH\n\nDepends on #3818"
        change_url: https://github.com/vexxhost/atmosphere/pull/3842
        commit_id: ebb968fbfd2fbb8d8ff595045bc67900a665a891
        patchset: ebb968fbfd2fbb8d8ff595045bc67900a665a891
        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: '3842'
      change_message: "fix(molecule): restore local AIO execution with parallel orchestrator\n\n##
        Summary\n\nRedoes the work from #3809 on top of #3818's parallel deployment
        orchestrator. Local molecule AIO builds now use the Go-based parallel orchestrator,
        matching CI behavior.\n\n## Changes\n\n### Molecule AIO\n- Move AIO variables
        from `.zuul.yaml` to `molecule/aio/group_vars/all/molecule.yml` (single source
        of truth)\n- Update `molecule.yml` to provisioner-based schema for local/v26
        compatibility\n- Update `converge.yml` to detect Zuul vs local, generate local
        inventory, and run the parallel Go orchestrator in both environments\n- Add
        `prepare.yml` steps to copy AIO overrides and OSD devices to workspace\n-
        Add `stestr` fallback in `verify.yml` for local runs without `.venv`\n\n###
        Zuul\n- Add `ATMOSPHERE_ZUUL_INVENTORY` to `molecule_environment` in parent
        job\n- Pass `ATMOSPHERE_NETWORK_BACKEND` via both Zuul job vars and `molecule_environment`\n-
        Remove 170+ lines of AIO helm override vars from `.zuul.yaml`\n\n### Other\n-
        Bump `molecule` to `26.4.0` and `ansible-compat` to `26.3.0` in `tox.ini`\n-
        Update `molecule/csi/molecule.yml` inventory path\n- Add keycloak scenario
        symlinks for shared group/host vars\n\n## How it works\n\n**Zuul flow** (unchanged
        from #3818):\n1. `pre.yml` copies Zuul inventory, runs `molecule prepare`\n2.
        `converge.yml` (run directly by Zuul): builds Go binary, activates `.venv`,
        runs `atmosphere deploy --inventory ./inventory.yaml`\n3. `run.yml` configures
        networking, runs `molecule verify`\n\n**Local flow** (new):\n1. `tox -e molecule-aio-openvswitch`
        \u2192 `molecule test -s aio`\n2. `prepare.yml`: generates workspace at project
        root, copies AIO group_vars there\n3. `converge.yml`: builds Go binary, creates
        local `inventory.yaml` (localhost), runs `atmosphere deploy` using molecule/tox
        PATH\n4. `verify.yml`: falls back to `stestr` from PATH\n\nDepends on #3818"
      change_url: https://github.com/vexxhost/atmosphere/pull/3842
      child_jobs: []
      commit_id: ebb968fbfd2fbb8d8ff595045bc67900a665a891
      event_id: c577fd60-3a3c-11f1-99ac-a67cd4f7f032
      executor:
        hostname: 0a8996d2b663
        inventory_file: /var/lib/zuul/builds/369bdb2e1ead4a4ead4cdf9b928f6587/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/369bdb2e1ead4a4ead4cdf9b928f6587/work/logs
        result_data_file: /var/lib/zuul/builds/369bdb2e1ead4a4ead4cdf9b928f6587/work/results.json
        src_root: /var/lib/zuul/builds/369bdb2e1ead4a4ead4cdf9b928f6587/work/src
        work_root: /var/lib/zuul/builds/369bdb2e1ead4a4ead4cdf9b928f6587/work
      include_vars: []
      items:
      - branch: main
        change: '3842'
        change_message: "fix(molecule): restore local AIO execution with parallel
          orchestrator\n\n## Summary\n\nRedoes the work from #3809 on top of #3818's
          parallel deployment orchestrator. Local molecule AIO builds now use the
          Go-based parallel orchestrator, matching CI behavior.\n\n## Changes\n\n###
          Molecule AIO\n- Move AIO variables from `.zuul.yaml` to `molecule/aio/group_vars/all/molecule.yml`
          (single source of truth)\n- Update `molecule.yml` to provisioner-based schema
          for local/v26 compatibility\n- Update `converge.yml` to detect Zuul vs local,
          generate local inventory, and run the parallel Go orchestrator in both environments\n-
          Add `prepare.yml` steps to copy AIO overrides and OSD devices to workspace\n-
          Add `stestr` fallback in `verify.yml` for local runs without `.venv`\n\n###
          Zuul\n- Add `ATMOSPHERE_ZUUL_INVENTORY` to `molecule_environment` in parent
          job\n- Pass `ATMOSPHERE_NETWORK_BACKEND` via both Zuul job vars and `molecule_environment`\n-
          Remove 170+ lines of AIO helm override vars from `.zuul.yaml`\n\n### Other\n-
          Bump `molecule` to `26.4.0` and `ansible-compat` to `26.3.0` in `tox.ini`\n-
          Update `molecule/csi/molecule.yml` inventory path\n- Add keycloak scenario
          symlinks for shared group/host vars\n\n## How it works\n\n**Zuul flow**
          (unchanged from #3818):\n1. `pre.yml` copies Zuul inventory, runs `molecule
          prepare`\n2. `converge.yml` (run directly by Zuul): builds Go binary, activates
          `.venv`, runs `atmosphere deploy --inventory ./inventory.yaml`\n3. `run.yml`
          configures networking, runs `molecule verify`\n\n**Local flow** (new):\n1.
          `tox -e molecule-aio-openvswitch` \u2192 `molecule test -s aio`\n2. `prepare.yml`:
          generates workspace at project root, copies AIO group_vars there\n3. `converge.yml`:
          builds Go binary, creates local `inventory.yaml` (localhost), runs `atmosphere
          deploy` using molecule/tox PATH\n4. `verify.yml`: falls back to `stestr`
          from PATH\n\nDepends on #3818"
        change_url: https://github.com/vexxhost/atmosphere/pull/3842
        commit_id: ebb968fbfd2fbb8d8ff595045bc67900a665a891
        patchset: ebb968fbfd2fbb8d8ff595045bc67900a665a891
        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-molecule-keycloak
      jobtags: []
      max_attempts: 3
      message: Zml4KG1vbGVjdWxlKTogcmVzdG9yZSBsb2NhbCBBSU8gZXhlY3V0aW9uIHdpdGggcGFyYWxsZWwgb3JjaGVzdHJhdG9yCgojIyBTdW1tYXJ5CgpSZWRvZXMgdGhlIHdvcmsgZnJvbSAjMzgwOSBvbiB0b3Agb2YgIzM4MTgncyBwYXJhbGxlbCBkZXBsb3ltZW50IG9yY2hlc3RyYXRvci4gTG9jYWwgbW9sZWN1bGUgQUlPIGJ1aWxkcyBub3cgdXNlIHRoZSBHby1iYXNlZCBwYXJhbGxlbCBvcmNoZXN0cmF0b3IsIG1hdGNoaW5nIENJIGJlaGF2aW9yLgoKIyMgQ2hhbmdlcwoKIyMjIE1vbGVjdWxlIEFJTwotIE1vdmUgQUlPIHZhcmlhYmxlcyBmcm9tIGAuenV1bC55YW1sYCB0byBgbW9sZWN1bGUvYWlvL2dyb3VwX3ZhcnMvYWxsL21vbGVjdWxlLnltbGAgKHNpbmdsZSBzb3VyY2Ugb2YgdHJ1dGgpCi0gVXBkYXRlIGBtb2xlY3VsZS55bWxgIHRvIHByb3Zpc2lvbmVyLWJhc2VkIHNjaGVtYSBmb3IgbG9jYWwvdjI2IGNvbXBhdGliaWxpdHkKLSBVcGRhdGUgYGNvbnZlcmdlLnltbGAgdG8gZGV0ZWN0IFp1dWwgdnMgbG9jYWwsIGdlbmVyYXRlIGxvY2FsIGludmVudG9yeSwgYW5kIHJ1biB0aGUgcGFyYWxsZWwgR28gb3JjaGVzdHJhdG9yIGluIGJvdGggZW52aXJvbm1lbnRzCi0gQWRkIGBwcmVwYXJlLnltbGAgc3RlcHMgdG8gY29weSBBSU8gb3ZlcnJpZGVzIGFuZCBPU0QgZGV2aWNlcyB0byB3b3Jrc3BhY2UKLSBBZGQgYHN0ZXN0cmAgZmFsbGJhY2sgaW4gYHZlcmlmeS55bWxgIGZvciBsb2NhbCBydW5zIHdpdGhvdXQgYC52ZW52YAoKIyMjIFp1dWwKLSBBZGQgYEFUTU9TUEhFUkVfWlVVTF9JTlZFTlRPUllgIHRvIGBtb2xlY3VsZV9lbnZpcm9ubWVudGAgaW4gcGFyZW50IGpvYgotIFBhc3MgYEFUTU9TUEhFUkVfTkVUV09SS19CQUNLRU5EYCB2aWEgYm90aCBadXVsIGpvYiB2YXJzIGFuZCBgbW9sZWN1bGVfZW52aXJvbm1lbnRgCi0gUmVtb3ZlIDE3MCsgbGluZXMgb2YgQUlPIGhlbG0gb3ZlcnJpZGUgdmFycyBmcm9tIGAuenV1bC55YW1sYAoKIyMjIE90aGVyCi0gQnVtcCBgbW9sZWN1bGVgIHRvIGAyNi40LjBgIGFuZCBgYW5zaWJsZS1jb21wYXRgIHRvIGAyNi4zLjBgIGluIGB0b3guaW5pYAotIFVwZGF0ZSBgbW9sZWN1bGUvY3NpL21vbGVjdWxlLnltbGAgaW52ZW50b3J5IHBhdGgKLSBBZGQga2V5Y2xvYWsgc2NlbmFyaW8gc3ltbGlua3MgZm9yIHNoYXJlZCBncm91cC9ob3N0IHZhcnMKCiMjIEhvdyBpdCB3b3JrcwoKKipadXVsIGZsb3cqKiAodW5jaGFuZ2VkIGZyb20gIzM4MTgpOgoxLiBgcHJlLnltbGAgY29waWVzIFp1dWwgaW52ZW50b3J5LCBydW5zIGBtb2xlY3VsZSBwcmVwYXJlYAoyLiBgY29udmVyZ2UueW1sYCAocnVuIGRpcmVjdGx5IGJ5IFp1dWwpOiBidWlsZHMgR28gYmluYXJ5LCBhY3RpdmF0ZXMgYC52ZW52YCwgcnVucyBgYXRtb3NwaGVyZSBkZXBsb3kgLS1pbnZlbnRvcnkgLi9pbnZlbnRvcnkueWFtbGAKMy4gYHJ1bi55bWxgIGNvbmZpZ3VyZXMgbmV0d29ya2luZywgcnVucyBgbW9sZWN1bGUgdmVyaWZ5YAoKKipMb2NhbCBmbG93KiogKG5ldyk6CjEuIGB0b3ggLWUgbW9sZWN1bGUtYWlvLW9wZW52c3dpdGNoYCDihpIgYG1vbGVjdWxlIHRlc3QgLXMgYWlvYAoyLiBgcHJlcGFyZS55bWxgOiBnZW5lcmF0ZXMgd29ya3NwYWNlIGF0IHByb2plY3Qgcm9vdCwgY29waWVzIEFJTyBncm91cF92YXJzIHRoZXJlCjMuIGBjb252ZXJnZS55bWxgOiBidWlsZHMgR28gYmluYXJ5LCBjcmVhdGVzIGxvY2FsIGBpbnZlbnRvcnkueWFtbGAgKGxvY2FsaG9zdCksIHJ1bnMgYGF0bW9zcGhlcmUgZGVwbG95YCB1c2luZyBtb2xlY3VsZS90b3ggUEFUSAo0LiBgdmVyaWZ5LnltbGA6IGZhbGxzIGJhY2sgdG8gYHN0ZXN0cmAgZnJvbSBQQVRICgpEZXBlbmRzIG9uICMzODE4
      patchset: ebb968fbfd2fbb8d8ff595045bc67900a665a891
      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: fc4af6d44718d2e648cf6396f3e96bb46a55117a
          trusted/project_2/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: a6e68243e02ef030ce5e75f8b67630880c475f33
          untrusted/project_0/github.com/vexxhost/zuul-jobs:
            canonical_name: github.com/vexxhost/zuul-jobs
            checkout: main
            commit: a6e68243e02ef030ce5e75f8b67630880c475f33
          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: fc4af6d44718d2e648cf6396f3e96bb46a55117a
          untrusted/project_3/github.com/vexxhost/atmosphere:
            canonical_name: github.com/vexxhost/atmosphere
            checkout: main
            commit: ebb968fbfd2fbb8d8ff595045bc67900a665a891
          untrusted/project_4/opendev.org/openstack/openstack-helm:
            canonical_name: opendev.org/openstack/openstack-helm
            checkout: master
            commit: c665eedfa3ae1b76a7e8438fffcb62aefaa30a46
        playbooks:
        - path: untrusted/project_3/github.com/vexxhost/atmosphere/molecule/keycloak/converge.yml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_0/role_0/atmosphere
            link_target: untrusted/project_3/github.com/vexxhost/atmosphere
            role_path: ansible/playbook_0/role_0/atmosphere/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_1/openstack-helm
            link_target: untrusted/project_4/opendev.org/openstack/openstack-helm
            role_path: ansible/playbook_0/role_1/openstack-helm/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_0/role_3/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_0/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/playbook_0/role_4/zuul-jobs/roles
        - path: untrusted/project_3/github.com/vexxhost/atmosphere/test-playbooks/molecule/run.yml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/playbook_1/role_0/atmosphere
            link_target: untrusted/project_3/github.com/vexxhost/atmosphere
            role_path: ansible/playbook_1/role_0/atmosphere/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_1/role_1/openstack-helm
            link_target: untrusted/project_4/opendev.org/openstack/openstack-helm
            role_path: ansible/playbook_1/role_1/openstack-helm/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/playbook_1/role_3/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/playbook_1/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/playbook_1/role_4/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/playbook_1/role_4/zuul-jobs/roles
        post_playbooks:
        - path: untrusted/project_3/github.com/vexxhost/atmosphere/test-playbooks/molecule/post.yml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/post_playbook_0/role_0/atmosphere
            link_target: untrusted/project_3/github.com/vexxhost/atmosphere
            role_path: ansible/post_playbook_0/role_0/atmosphere/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/post_playbook_0/role_1/openstack-helm
            link_target: untrusted/project_4/opendev.org/openstack/openstack-helm
            role_path: ansible/post_playbook_0/role_1/openstack-helm/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/post_playbook_0/role_3/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_0/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_0/role_4/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_0/role_4/zuul-jobs/roles
        - 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_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
        - 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_2/role_1/zuul-jobs
            link_target: trusted/project_1/opendev.org/zuul/zuul-jobs
            role_path: ansible/post_playbook_2/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/post_playbook_2/role_2/zuul-jobs
            link_target: trusted/project_2/github.com/vexxhost/zuul-jobs
            role_path: ansible/post_playbook_2/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
        - path: untrusted/project_0/github.com/vexxhost/zuul-jobs/playbooks/molecule/pre.yaml
          roles:
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/pre_playbook_1/role_1/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_1/role_1/zuul-jobs/roles
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_1/role_2/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_1/role_2/zuul-jobs/roles
        - path: untrusted/project_3/github.com/vexxhost/atmosphere/test-playbooks/molecule/pre.yml
          roles:
          - checkout: main
            checkout_description: playbook branch
            link_name: ansible/pre_playbook_2/role_0/atmosphere
            link_target: untrusted/project_3/github.com/vexxhost/atmosphere
            role_path: ansible/pre_playbook_2/role_0/atmosphere/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/pre_playbook_2/role_1/openstack-helm
            link_target: untrusted/project_4/opendev.org/openstack/openstack-helm
            role_path: ansible/pre_playbook_2/role_1/openstack-helm/roles
          - checkout: master
            checkout_description: project default branch
            link_name: ansible/pre_playbook_2/role_3/zuul-jobs
            link_target: untrusted/project_2/opendev.org/zuul/zuul-jobs
            role_path: ansible/pre_playbook_2/role_3/zuul-jobs/roles
          - checkout: main
            checkout_description: zuul branch
            link_name: ansible/pre_playbook_2/role_4/zuul-jobs
            link_target: untrusted/project_0/github.com/vexxhost/zuul-jobs
            role_path: ansible/pre_playbook_2/role_4/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: ebb968fbfd2fbb8d8ff595045bc67900a665a891
          name: vexxhost/atmosphere
          required: false
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
      ref: refs/pull/3842/head
      resources: {}
      tenant: oss
      timeout: 1800
      topic: null
      voting: true
