---
- job:
    name: kayobe-tox-ansible-syntax
    description: |
      Tox job that checks Ansible playbook syntax.
    parent: openstack-tox
    vars:
      tox_envlist: ansible-syntax
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/.*
      - ^molecule-requirements.txt
      - ^releasenotes/.*
      - ^setup.cfg$
      - ^zuul.d/.*

- job:
    name: kayobe-tox-ansible
    description: |
      Tox job that runs native Ansible role tests.
    parent: openstack-tox-with-sudo
    vars:
      tox_envlist: ansible
    required-projects:
      - name: openstack/requirements
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/.*
      - ^molecule-requirements.txt
      - ^releasenotes/.*
      - ^setup.cfg$
      - ^zuul.d/.*

- job:
    name: kayobe-tox-molecule
    description: |
      Tox job that runs molecule-based Ansible role tests.
    parent: openstack-tox-with-sudo
    pre-run: playbooks/kayobe-tox-molecule/pre.yml
    timeout: 3600
    required-projects:
      - openstack/requirements
    vars:
      tox_envlist: molecule
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/.*
      - ^releasenotes/.*
      - ^setup.cfg$
      - ^zuul.d/.*

- job:
    name: kayobe-base
    description: |
      Base job for all deployment jobs.
    pre-run: playbooks/kayobe-base/pre.yml
    post-run: playbooks/kayobe-base/post.yml
    attempts: 5
    required-projects:
      # Include kayobe to ensure other projects can use this job.
      - name: openstack/ansible-collection-kolla
        # TODO(mgoddard): Remove when kayobe stable/yoga exists.
        override-checkout: stable/yoga
      - name: openstack/kayobe
      - name: openstack/kayobe-config-dev
      - name: openstack/kolla
        # TODO(mgoddard): Remove when kayobe stable/yoga exists.
        override-checkout: stable/yoga
      - name: openstack/kolla-ansible
        # TODO(mgoddard): Remove when kayobe stable/yoga exists.
        override-checkout: stable/yoga
      - name: openstack/requirements
        # TODO(mgoddard): Remove when kayobe stable/yoga exists.
        override-checkout: stable/yoga
      - name: openstack/tenks
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/.*
      - ^molecule-requirements.txt
      - ^releasenotes/.*
      - ^setup.cfg$
      - ^test-requirements.txt
      - ^tools/.*$
      - ^tox.ini$
      - ^zuul.d/.*
    vars:
      # Name of the release to upgrade from for upgrade jobs.
      previous_release: xena
      logs_dir: "/tmp/logs"
      ansible_collection_kolla_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/ansible-collection-kolla'].src_dir }}"
      kayobe_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kayobe'].src_dir }}"
      kayobe_config_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kayobe-config-dev'].src_dir }}"
      kolla_ansible_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/kolla-ansible'].src_dir }}"
      previous_kayobe_src_dir: "{{ ansible_env.PWD ~ '/previous/kayobe' }}"
      previous_kayobe_config_src_dir: "{{ ansible_env.PWD ~ '/previous/kayobe-config' }}"
      requirements_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/requirements'].src_dir }}"
      tenks_src_dir: "{{ ansible_env.PWD ~ '/' ~ zuul.projects['opendev.org/openstack/tenks'].src_dir }}"
      is_upgrade: "{{ 'upgrade' in zuul.job }}"
      tls_enabled: false
      ironic_boot_mode: "bios"

- job:
    name: kayobe-overcloud-base
    parent: kayobe-base
    description: |
      Base job for testing overcloud deployment.

      Configures the primary VM as an overcloud controller.
    pre-run: playbooks/kayobe-overcloud-base/pre.yml
    run: playbooks/kayobe-overcloud-base/run.yml
    timeout: 7200

- job:
    name: kayobe-overcloud-centos8s
    parent: kayobe-overcloud-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-overcloud-centos9s
    parent: kayobe-overcloud-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-overcloud-rocky8
    parent: kayobe-overcloud-base
    nodeset: kayobe-rocky8

- job:
    name: kayobe-overcloud-rocky9
    parent: kayobe-overcloud-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-overcloud-ubuntu-focal
    parent: kayobe-overcloud-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-overcloud-ubuntu-jammy
    parent: kayobe-overcloud-base
    nodeset: kayobe-ubuntu-jammy

- job:
    name: kayobe-overcloud-tls-base
    parent: kayobe-overcloud-base
    vars:
      tls_enabled: true
      ironic_boot_mode: "uefi"

- job:
    name: kayobe-overcloud-tls-centos8s
    parent: kayobe-overcloud-tls-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-overcloud-tls-centos9s
    parent: kayobe-overcloud-tls-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-overcloud-tls-rocky9
    parent: kayobe-overcloud-tls-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-overcloud-upgrade-base
    parent: kayobe-base
    description: |
      Base job for testing overcloud upgrades.

      Configures the primary VM as an overcloud controller using the previous
      OpenStack release, and upgrades it to the current release.
    pre-run: playbooks/kayobe-overcloud-upgrade-base/pre.yml
    run: playbooks/kayobe-overcloud-upgrade-base/run.yml
    timeout: 9000

- job:
    name: kayobe-overcloud-upgrade-centos8s
    parent: kayobe-overcloud-upgrade-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-overcloud-upgrade-ubuntu-focal
    parent: kayobe-overcloud-upgrade-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-seed-base
    parent: kayobe-base
    description: |
      Base job for testing seed deployment.

      Configures the primary VM as a seed.
    pre-run: playbooks/kayobe-seed-base/pre.yml
    run: playbooks/kayobe-seed-base/run.yml
    timeout: 5400
    vars:
      build_images: false

- job:
    name: kayobe-seed-centos8s
    parent: kayobe-seed-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-seed-centos9s
    parent: kayobe-seed-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-seed-rocky8
    parent: kayobe-seed-base
    nodeset: kayobe-rocky8


- job:
    name: kayobe-seed-rocky9
    parent: kayobe-seed-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-seed-ubuntu-focal
    parent: kayobe-seed-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-seed-ubuntu-jammy
    parent: kayobe-seed-base
    nodeset: kayobe-ubuntu-jammy

- job:
    name: kayobe-seed-images-base
    parent: kayobe-seed-base
    description: |
      Base job for testing seed image builds.

      Configures the primary VM as a seed.
    voting: false
    vars:
      build_images: true

- job:
    name: kayobe-seed-images-centos8s
    parent: kayobe-seed-images-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-seed-images-centos9s
    parent: kayobe-seed-images-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-seed-images-rocky8
    parent: kayobe-seed-images-base
    nodeset: kayobe-rocky8

- job:
    name: kayobe-seed-images-rocky9
    parent: kayobe-seed-images-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-seed-images-ubuntu-focal
    parent: kayobe-seed-images-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-seed-images-ubuntu-jammy
    parent: kayobe-seed-images-base
    nodeset: kayobe-ubuntu-jammy

- job:
    name: kayobe-overcloud-host-configure-base
    parent: kayobe-overcloud-base
    description: |
      Base job for testing overcloud host configure.

      Configures the primary VM as an overcloud controller.
    pre-run: playbooks/kayobe-overcloud-host-configure-base/pre.yml
    run: playbooks/kayobe-overcloud-host-configure-base/run.yml
    timeout: 7200

- job:
    name: kayobe-overcloud-host-configure-centos8s
    parent: kayobe-overcloud-host-configure-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-overcloud-host-configure-centos9s
    parent: kayobe-overcloud-host-configure-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-overcloud-host-configure-rocky8
    parent: kayobe-overcloud-host-configure-base
    nodeset: kayobe-rocky8

- job:
    name: kayobe-overcloud-host-configure-rocky9
    parent: kayobe-overcloud-host-configure-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-overcloud-host-configure-ubuntu-focal
    parent: kayobe-overcloud-host-configure-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-overcloud-host-configure-ubuntu-jammy
    parent: kayobe-overcloud-host-configure-base
    nodeset: kayobe-ubuntu-jammy

- job:
    name: kayobe-seed-upgrade-base
    parent: kayobe-base
    description: |
      Base job for testing seed upgrades.

      Configures the primary VM as a seed using the previous OpenStack release,
      and upgrades it to the current release.
    pre-run: playbooks/kayobe-seed-upgrade-base/pre.yml
    run: playbooks/kayobe-seed-upgrade-base/run.yml
    timeout: 5400

- job:
    name: kayobe-seed-upgrade-centos8s
    parent: kayobe-seed-upgrade-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-seed-upgrade-ubuntu-focal
    parent: kayobe-seed-upgrade-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-seed-vm-base
    parent: kayobe-base
    description: |
      Base job for testing seed VM provisioning.

      Configures the primary VM as a libvirt hypervisor, and provisions a seed
      as a VM.
    pre-run: playbooks/kayobe-seed-vm-base/pre.yml
    run: playbooks/kayobe-seed-vm-base/run.yml
    timeout: 5400

- job:
    name: kayobe-seed-vm-centos8s
    parent: kayobe-seed-vm-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-seed-vm-centos9s
    parent: kayobe-seed-vm-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-seed-vm-rocky8
    parent: kayobe-seed-vm-base
    nodeset: kayobe-rocky8

- job:
    name: kayobe-seed-vm-rocky9
    parent: kayobe-seed-vm-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-seed-vm-ubuntu-focal
    parent: kayobe-seed-vm-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-seed-vm-ubuntu-jammy
    parent: kayobe-seed-vm-base
    nodeset: kayobe-ubuntu-jammy

- job:
    name: kayobe-infra-vm-base
    parent: kayobe-base
    description: |
      Base job for testing infra VM provisioning.

      Configures the primary VM as a libvirt hypervisor, and provisions an
      infra VM.
    pre-run: playbooks/kayobe-infra-vm-base/pre.yml
    run: playbooks/kayobe-infra-vm-base/run.yml
    timeout: 5400

- job:
    name: kayobe-infra-vm-centos8s
    parent: kayobe-infra-vm-base
    nodeset: kayobe-centos8s

- job:
    name: kayobe-infra-vm-centos9s
    parent: kayobe-infra-vm-base
    nodeset: kayobe-centos9s
    voting: false

- job:
    name: kayobe-infra-vm-rocky8
    parent: kayobe-infra-vm-base
    nodeset: kayobe-rocky8

- job:
    name: kayobe-infra-vm-rocky9
    parent: kayobe-infra-vm-base
    nodeset: kayobe-rocky9

- job:
    name: kayobe-infra-vm-ubuntu-focal
    parent: kayobe-infra-vm-base
    nodeset: kayobe-ubuntu-focal

- job:
    name: kayobe-infra-vm-ubuntu-jammy
    parent: kayobe-infra-vm-base
    nodeset: kayobe-ubuntu-jammy
