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.55
      ansible_port: 22
      ansible_python_interpreter: auto
      ansible_user: zuul
      atmosphere_image_prefix: harbor.atmosphere.dev/
      nodepool:
        az: yul2
        cloud: public
        external_id: faf895ac-b2f0-43f4-943f-aeb57069a47c
        host_id: 37e81cee0a506baf7361396a1e34dba16b963700582224f7eddff306
        interface_ip: 162.253.55.55
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 162.253.55.55
        private_ipv6: null
        provider: yul1
        public_ipv4: 162.253.55.55
        public_ipv6: 2604:e100:1:0:f816:3eff:fe0f:b92a
        region: ca-ymq-1
        slot: null
      zuul_node:
        az: yul2
        cloud: public
        external_id: faf895ac-b2f0-43f4-943f-aeb57069a47c
        host_id: 37e81cee0a506baf7361396a1e34dba16b963700582224f7eddff306
        interface_ip: 162.253.55.55
        label: ubuntu-jammy
        node_properties: {}
        private_ipv4: 162.253.55.55
        private_ipv6: null
        provider: yul1
        public_ipv4: 162.253.55.55
        public_ipv6: 2604:e100:1:0:f816:3eff:fe0f:b92a
        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: stable/2023.2
      build: f17501ca25e64c32a4a9053fb6f26740
      build_refs:
      - branch: stable/2023.2
        change: '4425'
        change_message: '[Backport stable/2023.2] feat: publish release manifests
          and deploy from them


          # Description

          Backport of #4420 to `stable/2023.2`.


          Depends-On: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7

          '
        change_url: https://github.com/vexxhost/atmosphere/pull/4425
        commit_id: 19ce690538b6e286e57133ebd9cb6a55612c21f1
        patchset: 19ce690538b6e286e57133ebd9cb6a55612c21f1
        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: 2fa334eda570414d9d17fd5afce65fd3
      buildset_refs:
      - branch: stable/2023.2
        change: '4425'
        change_message: '[Backport stable/2023.2] feat: publish release manifests
          and deploy from them


          # Description

          Backport of #4420 to `stable/2023.2`.


          Depends-On: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7

          '
        change_url: https://github.com/vexxhost/atmosphere/pull/4425
        commit_id: 19ce690538b6e286e57133ebd9cb6a55612c21f1
        patchset: 19ce690538b6e286e57133ebd9cb6a55612c21f1
        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: '4425'
      change_message: '[Backport stable/2023.2] feat: publish release manifests and
        deploy from them


        # Description

        Backport of #4420 to `stable/2023.2`.


        Depends-On: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7

        '
      change_url: https://github.com/vexxhost/atmosphere/pull/4425
      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: 19ce690538b6e286e57133ebd9cb6a55612c21f1
      event_id: cb309a00-ca15-11f1-96e1-a1d4fbd07dec
      executor:
        hostname: 2d72f0692154
        inventory_file: /var/lib/zuul/builds/f17501ca25e64c32a4a9053fb6f26740/ansible/inventory.yaml
        log_root: /var/lib/zuul/builds/f17501ca25e64c32a4a9053fb6f26740/work/logs
        result_data_file: /var/lib/zuul/builds/f17501ca25e64c32a4a9053fb6f26740/work/results.json
        src_root: /var/lib/zuul/builds/f17501ca25e64c32a4a9053fb6f26740/work/src
        work_root: /var/lib/zuul/builds/f17501ca25e64c32a4a9053fb6f26740/work
      include_vars: []
      items:
      - branch: main
        change: '3'
        change_message: 'feat(pre-commit): create hook environments with uv


          The `pre-commit` job now runs pre-commit with the [pre-commit-uv](https://github.com/tox-dev/pre-commit-uv)
          plugin, so hook environments are created with `uv`.


          The main reason is the latest `ansible-lint` hook: it sets `language_version:
          python3.14`, and our Ubuntu 24.04 nodes only have Python 3.12, so repositories
          have to override the hook''s Python version. With pre-commit-uv, `uv` downloads
          the Python a hook asks for when the node doesn''t have it. `setup-uv` installs
          only the `uv` binary with no configuration, so `uv`''s default (download
          managed Pythons when needed) applies. Cold hook installs are also faster:
          about 20s instead of 29s for ansible-lint.


          Tested locally with `UV_NO_CONFIG=1` (uv defaults, as on the nodes) and
          a cold pre-commit cache:


          - vexxhost/atmosphere-zuul-jobs#7 without the Python 3.12 override: passes,
          ansible-lint v26.10.1 runs in a Python 3.14 environment downloaded by uv.

          - vexxhost/ansible-collection-ceph (ansible-lint v25.6.1) passes unchanged.


          This repository has no checks of its own; vexxhost/atmosphere-zuul-jobs#7
          tests this change through `Depends-On`.

          '
        change_url: https://github.com/vexxhost/zuul-jobs/pull/3
        commit_id: 9848de64840bf296f0bd8039c6a425174ceaee91
        patchset: 9848de64840bf296f0bd8039c6a425174ceaee91
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/zuul-jobs
          name: vexxhost/zuul-jobs
          short_name: zuul-jobs
          src_dir: src/github.com/vexxhost/zuul-jobs
        topic: null
      - branch: main
        change: '7'
        change_message: 'feat(molecule): deploy from one release manifest per buildset


          The molecule jobs deploy whatever tags `roles/defaults/vars/main.yml` points
          at when each job runs, while releases ship digest-pinned images. With vexxhost/atmosphere#4420,
          Atmosphere publishes a digest-pinned release manifest per commit; this makes
          CI generate that manifest once per buildset and deploy exactly it, through
          the same registry path customers use.


          - **`atmosphere-release-manifest` job** (`atmosphere-build-manifest` role):
          builds `atmosphere-release` from the change under test, generates the manifest
          (resolving tags through `harbor.atmosphere.dev/` to avoid upstream rate
          limits; the manifest records the original references) and returns the manifest
          and the binary as Zuul artifacts, with the digest of the artifact that pushing
          the manifest produces.

          - **Molecule jobs** depend on it. Their pre-run uses the new `atmosphere-use-manifest`
          role: it starts a CNCF Distribution registry on the node (pinned, checksum-verified)
          with TLS from a throwaway CA and password authentication (user created with
          `community.general.htpasswd`), pushes the manifest, and fails unless the
          pushed artifact has the digest the build job reported. Atmosphere then reads
          it by reference (`atmosphere_release_manifest`, `atmosphere_release_manifest_ca_file`,
          and a mirror rule that keeps `atmosphere_image_prefix` away from that registry).

          - Every job therefore deploys the same manifest, and after merge `atmosphere-release
          publish` finds this buildset''s manifest through the Zuul API and publishes
          it unchanged.


          **Linting:** every change to this repository now runs the existing `pre-commit`
          job with the latest `ansible-lint` (v26.10.1, with ansible-core 2.21; passes
          the `production` profile) and whitespace checks from `pre-commit-hooks`
          v6.0.0, the same setup as the Ansible collection repositories. The hook
          asks for Python 3.14, which the nodes don''t have; vexxhost/zuul-jobs#3
          makes the `pre-commit` job use pre-commit-uv, so `uv` provides it and no
          override is needed. `.ansible-lint` mocks the roles and `zuul_return` that
          only exist in Zuul and skips `role-name`, since Zuul roles use hyphens;
          `requirements.yml` lets ansible-lint install `community.general` to validate
          module arguments. This replaces the `noop` job.


          This calls `cmd/atmosphere-release` on every branch these jobs run against,
          so it must merge **after** vexxhost/atmosphere#4420 and its backports.


          Tested through `Depends-On` from vexxhost/atmosphere#4420 and by the role
          tests in #8.


          Depends-On: https://github.com/vexxhost/zuul-jobs/pull/3

          '
        change_url: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7
        commit_id: fe46543b39a569a2360919be71612a4f28966bd6
        patchset: fe46543b39a569a2360919be71612a4f28966bd6
        project:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
          name: vexxhost/atmosphere-zuul-jobs
          short_name: atmosphere-zuul-jobs
          src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        topic: null
      - branch: stable/2023.2
        change: '4425'
        change_message: '[Backport stable/2023.2] feat: publish release manifests
          and deploy from them


          # Description

          Backport of #4420 to `stable/2023.2`.


          Depends-On: https://github.com/vexxhost/atmosphere-zuul-jobs/pull/7

          '
        change_url: https://github.com/vexxhost/atmosphere/pull/4425
        commit_id: 19ce690538b6e286e57133ebd9cb6a55612c21f1
        patchset: 19ce690538b6e286e57133ebd9cb6a55612c21f1
        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: W0JhY2twb3J0IHN0YWJsZS8yMDIzLjJdIGZlYXQ6IHB1Ymxpc2ggcmVsZWFzZSBtYW5pZmVzdHMgYW5kIGRlcGxveSBmcm9tIHRoZW0KCiMgRGVzY3JpcHRpb24KQmFja3BvcnQgb2YgIzQ0MjAgdG8gYHN0YWJsZS8yMDIzLjJgLgoKRGVwZW5kcy1PbjogaHR0cHM6Ly9naXRodWIuY29tL3ZleHhob3N0L2F0bW9zcGhlcmUtenV1bC1qb2JzL3B1bGwvNwo=
      patchset: 19ce690538b6e286e57133ebd9cb6a55612c21f1
      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: c286bf94224b5660b8e49e9a058289e61062a9a0
          untrusted/project_0/github.com/vexxhost/atmosphere-zuul-jobs:
            canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
            checkout: main
            commit: fe46543b39a569a2360919be71612a4f28966bd6
          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: 9848de64840bf296f0bd8039c6a425174ceaee91
        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: project default 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: project default 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: project default 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: project default 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: stable/2023.2
          checkout_description: zuul branch
          commit: 19ce690538b6e286e57133ebd9cb6a55612c21f1
          name: vexxhost/atmosphere
          required: false
          short_name: atmosphere
          src_dir: src/github.com/vexxhost/atmosphere
        github.com/vexxhost/atmosphere-zuul-jobs:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/atmosphere-zuul-jobs
          checkout: main
          checkout_description: project default branch
          commit: fe46543b39a569a2360919be71612a4f28966bd6
          name: vexxhost/atmosphere-zuul-jobs
          required: false
          short_name: atmosphere-zuul-jobs
          src_dir: src/github.com/vexxhost/atmosphere-zuul-jobs
        github.com/vexxhost/zuul-jobs:
          canonical_hostname: github.com
          canonical_name: github.com/vexxhost/zuul-jobs
          checkout: main
          checkout_description: project default branch
          commit: 9848de64840bf296f0bd8039c6a425174ceaee91
          name: vexxhost/zuul-jobs
          required: false
          short_name: zuul-jobs
          src_dir: src/github.com/vexxhost/zuul-jobs
      ref: refs/pull/4425/head
      resources: {}
      tenant: oss
      timeout: 1800
      topic: null
      voting: true
