---

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


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

- job:
    name: devstack-tobiko-ovs
    parent: devstack-tobiko
    description: |
      Base Tobiko devstack job to be used with ML2/OVS.
    voting: true
    vars: &OVS_VARS
      # TODO(fressi): restore name servers list as soon external connectivity
      # is fixed
      ipv4_dns_nameservers: []
      devstack_localrc:
        NETWORK_API_EXTENSIONS: >-
          address-scope,agent,allowed-address-pairs,auto-allocated-topology,
          availability_zone,binding,default-subnetpools,dhcp_agent_scheduler,
          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,
          l3_agent_scheduler,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
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch

      devstack_services:
        # Disable OVN services
        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-log: true
        q-meta: true
        q-metering: true
        q-port-forwarding: true
        q-qos: true
        neutron-segments: true
        neutron-trunk: false
        br-ex-tcpdump: true
        br-int-flows: true
        c-bak: false
        dstat: false
        etcd: false
        placement-api: true
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
        tls-proxy: true
      devstack_plugins:
        neutron: "https://opendev.org/openstack/neutron"


- job:
    name: devstack-tobiko-ovs-dvr
    parent: devstack-tobiko-ovs
    description: |
      Base Tobiko devstack job to be used with ML2/OVS and DVR
    voting: true
    vars:
      l3_agent_mode: dvr
      devstack_local_conf:
        post_config:
          $NEUTRON_CONF:
            DEFAULT:
              router_distributed: true
          $NEUTRON_DHCP_CONF:
            DEFAULT:
              dhcp_delete_namespaces: true
          $NEUTRON_L3_CONF:
            DEFAULT:
              agent_mode: '{{ l3_agent_mode }}'
              router_delete_namespaces: true
          $NEUTRON_CORE_PLUGIN_CONF:
            agent:
              enable_distributed_routing: true
              l2_population: true
              tunnel_types: vxlan
            ml2:
              mechanism_drivers: openvswitch,l2population
              type_drivers: flat,vlan,vxlan
              tenant_network_types: vxlan
            ml2_type_vxlan:
              vni_ranges: '1000:1999'
            ovs:
              local_ip: '$HOST_IP'


- job:
    name: devstack-tobiko-ovs-dvr-snat
    parent: devstack-tobiko-ovs-dvr
    description: |
      Base Tobiko devstack job to be used with ML2/OVS and dvr_snat L3
      agent mode
    voting: true
    vars:
      l3_agent_mode: dvr_snat


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

- job:
    name: devstack-tobiko-multinode-ovs
    parent: devstack-tobiko-multinode
    description: Base DevStack Tobiko job with multinode.
    voting: false
    vars:
      <<: *OVS_VARS
      extensions_to_txt:
        db: true
    group-vars:
      subnode:
        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
          neutron-agent: true
          # see bug #1860753 (https://bugs.launchpad.net/devstack/+bug/1860753)
          memory_tracker: false
          ovn-controller: false
          q-agt: true
          q-l3: true
          q-meta: true
          q-ovn-metadata-agent: false
          tls-proxy: false