# Stable wallaby / xena / yoga branch jobs to test the trunk version of
# manila-tempest-plugin against those released stable branches of manila

- job:
    name: manila-tempest-plugin-generic-scenario-stable
    description: |
      Test the scenario test cases on the generic driver multibackend
      (DHSS=True) with NFS and CIFS
    parent: manila-tempest-plugin-generic-scenario-base
    branches: &manila_tempest_image_pinned_branches ^(stable/(yoga|xena|wallaby)).*$
    vars: &manila_tempest_image_pinned_vars
      devstack_localrc:
        # NOTE(carloss): Pinning manila service image to a Focal version,
        # since on Zed we moved to Ubuntu Jammy (22), and it requires more
        # VM resources.
        MANILA_SERVICE_IMAGE_URL: https://tarballs.opendev.org/openstack/manila-image-elements/images/manila-service-image-1.3.0-76-ga216835.qcow2
        MANILA_SERVICE_IMAGE_NAME: manila-service-image-1.3.0-76-ga216835

- job:
    name: manila-tempest-plugin-generic-stable
    description: |
      Test the scenario test cases on the generic driver multibackend
      (DHSS=True) with NFS and CIFS
    parent: manila-tempest-plugin-generic-base
    branches: *manila_tempest_image_pinned_branches
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-lvm-stable
    # NOTE(carloss): we are aware that focal is the current default, but
    # in order to avoid breakages when devstack-minimal switches to a newer
    # branch, we are pinning focal here.
    nodeset: openstack-single-node-focal
    description: |
      Test LVM multibackend (DHSS=False) in a 4+6 (dual-stack) devstack
      environment with IPv6 control plane endpoints.
    branches: *manila_tempest_image_pinned_branches
    parent: manila-tempest-plugin-lvm-base
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-cephfs-native-stable
    description: Test CephFS Native (DHSS=False)
    parent: manila-tempest-plugin-cephfs-native-base
    branches: *manila_tempest_image_pinned_branches
    vars:
      devstack_localrc:
        # NOTE(gouthamr): The following need to use the latest images, however, there's a bug
        # with cephfs on Ubuntu 20.04 LTS: https://tracker.ceph.com/issues/47236
        # the latest image is built as https://tarballs.opendev.org/openstack/manila-image-elements/images/manila-service-image-cephfs-master.qcow2
        MANILA_SERVICE_IMAGE_URL: https://tarballs.opendev.org/openstack/manila-image-elements/images/manila-service-image-cephfs-1.3.0-58-g2859569.qcow2
        MANILA_SERVICE_IMAGE_NAME: manila-service-image-cephfs-1.3.0-58-g2859569

- job:
    name: manila-tempest-plugin-cephfs-nfs-stable
    description: Test CephFS NFS (DHSS=False)
    parent: manila-tempest-plugin-cephfs-nfs-base
    branches: *manila_tempest_image_pinned_branches
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-zfsonlinux-stable
    description: Test ZFSOnLinux multibackend (DHSS=False) with postgresql db
    parent: manila-tempest-plugin-zfsonlinux-base
    branches: *manila_tempest_image_pinned_branches
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-lvm-fips-stable
    parent: manila-tempest-plugin-lvm-fips-base
    branches: ^(stable/(yoga|xena|wallaby)).*$
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-lvm-yoga
    parent: manila-tempest-plugin-lvm-base
    nodeset: openstack-single-node-focal
    override-checkout: stable/yoga
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-lvm-xena
    parent: manila-tempest-plugin-lvm-base
    nodeset: openstack-single-node-focal
    override-checkout: stable/xena
    vars: *manila_tempest_image_pinned_vars

- job:
    name: manila-tempest-plugin-lvm-wallaby
    parent: manila-tempest-plugin-lvm-base
    nodeset: openstack-single-node-focal
    override-checkout: stable/wallaby
    vars: *manila_tempest_image_pinned_vars

- project-template:
    name: manila-tempest-plugin-jobs-using-service-image-stable
    description: |
      Runs jobs that will also perform scenario tests in the stable branches
      older than Yoga.
    check:
      jobs:
        - manila-tempest-plugin-lvm-stable
        - manila-tempest-plugin-generic-scenario-stable:
            voting: false
        - manila-tempest-plugin-generic-stable:
            voting: false
        - manila-tempest-plugin-cephfs-native-stable:
            voting: false
        - manila-tempest-plugin-cephfs-nfs-stable:
            voting: false
        - manila-tempest-plugin-zfsonlinux-stable:
            voting: false
    gate:
      jobs:
        - manila-tempest-plugin-lvm-stable
