---

- project-template:
    name: devstack-tobiko
    description: |
      DevStack jobs intended to gate Tobiko project changes
    check: &CHECK
      jobs:
        - devstack-tobiko
        - devstack-tobiko-multinode
    gate: &GATE
      jobs:
        - devstack-tobiko
    periodic: *CHECK


# --- STANDALONE -------------------------------------------------------------

- job:
    abstract: false
    name: devstack-tobiko
    parent: devstack-tobiko-minimal
    voting: true
    description: |
      Base Devstack Tobiko Plugin job.

      This job provides the base for both the single and multi-node
      test setup. To run a multi-node test inherit from devstack-tobiko
      job and set the nodeset to a multi-node one.
    required-projects:
      - openstack/neutron
    roles:
      - zuul: x/tobiko
    timeout: 10800
    vars:
      configure_swap_size: 8192
      devstack_localrc:
        LIBVIRT_TYPE: kvm
        LIBVIRT_CPU_MODE: host-passthrough
        GLANCE_ENABLE_QUOTAS: false
        NETWORK_API_EXTENSIONS: >-
          address-scope,agent,allowed-address-pairs,auto-allocated-topology,
          availability_zone,binding,default-subnetpools,
          dns-domain-ports,dns-integration,dvr,empty-string-filtering,
          ext-gw-mode,external-net,extra_dhcp_opt,extraroute,filter-validation,
          fip-port-details,flavors,ip-substring-filtering,l3-flavors,l3-ha,
          logging,metering,multi-provider,net-mtu,
          net-mtu-writable,network-ip-availability,network_availability_zone,
          pagination,port-security,project-id,provider,qos,
          qos-bw-minimum-ingress,qos-fip,quotas,quota_details,rbac-policies,
          router,router_availability_zone,security-group,
          port-mac-address-regenerate,port-security-groups-filtering,
          segment,service-type,sorting,standard-attr-description,
          standard-attr-revisions,standard-attr-segment,
          standard-attr-timestamp,standard-attr-tag,subnet_allocation,
          trunk,trunk-details,uplink-status-propagation
        TOBIKO_NEUTRON_IPV4_DNS_NAMESERVERS:
          "{{ ipv4_dns_nameservers | join(',') }}"
        TOBIKO_NEUTRON_IPV6_DNS_NAMESERVERS:
          "{{ ipv6_dns_nameservers | join(',') }}"
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron.git
      devstack_services:
        heat: true
        h-api: true
        h-api-cfn: true
        h-eng: true
        n-cpu: true
        # NOTE(slaweq): we need to enable it as "legacy" service because for
        # Fedora job it has to be disabled. If it would be disabled as
        # "neutron-dns: false" then it devstack would consider that
        # neutron-legacy isn't used and would not load proper files
        q-dns: true
        # see bug #1860753 (https://bugs.launchpad.net/devstack/+bug/1860753)
        neutron-qos: true
        neutron-segments: true
        neutron-trunk: true
        neutron-uplink-status-propagation: true
        # NOTE(slaweq): Swift can't run with python3 currently
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
        # NOTE(slaweq): without Swift, c-bak cannot run (in the Gate at least)
        c-bak: false
      ipv4_dns_nameservers:
        - 1.0.0.1
        - 8.8.8.8
      ipv6_dns_nameservers: []
      test_workflow: faults
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/
      - ^infrared_plugin/
      - ^playbooks/vagrant
      - ^releasenotes/
      - ^report/
      - ^tobiko/tests/functional/
      - ^tobiko/tests/unit/
      - ^Vagrantfile


# --- MULTINODE --------------------------------------------------------------

- job:
    name: devstack-tobiko-multinode
    parent: devstack-tobiko
    nodeset: devstack-tobiko-multinode
    voting: false
    description: Base DevStack Tobiko job with multinode.
    pre-run: playbooks/multinode-setup.yaml
    vars:
      topology: multinode
      devstack_localrc:
        ENABLE_FILE_INJECTION: true
        MULTI_HOST: 1
        # NOTE(slaweq): remove those lines when switching to the default
        # (ML2/OVN) backend in Neutron
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
        # https://bugs.launchpad.net/neutron/+bug/2031415
        GLOBAL_VENV: false
      devstack_local_conf:
        post-config:
          /$NEUTRON_CORE_PLUGIN_CONF:
            AGENT:
              tunnel_types: gre,vxlan
      devstack_services:
        n-cpu: false
        neutron-qos: true
        neutron-trunk: false
        # Disable OVN services
        # It's temporary workaround until test
        # OvnControllerTest::test_restart_ovn_controller test
        # will be fixed in multinode job running on the OVN backend
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Neutron services
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
    group-vars:
      subnode:
        devstack_localrc:
          # NOTE(slaweq): remove those lines when switching to the default
          # (ML2/OVN) backend in Neutron
          Q_AGENT: openvswitch
        devstack_local_conf:
          post-config:
            /$NEUTRON_CORE_PLUGIN_CONF:
              AGENT:
                tunnel_types: gre,vxlan
        devstack_services:
          c-vol: true
          dstat: true
          heat: false
          h-api: false
          h-api-cfn: false
          h-eng: false
          n-api-meta: true
          placement-client: true
          n-cpu: true
          # Disable OVN services
          # It's temporary workaround until test
          # OvnControllerTest::test_restart_ovn_controller test
          # will be fixed in multinode job running on the OVN backend
          ovn-controller: false
          ovn-northd: false
          ovs-vswitchd: false
          ovsdb-server: false
          q-ovn-metadata-agent: false
          # Neutron services
          q-agt: true
          q-l3: true
          q-meta: true
          neutron-qos: true
          neutron-trunk: false
          # see bug #1860753 (https://bugs.launchpad.net/devstack/+bug/1860753)
          memory_tracker: false
          tls-proxy: false