- job:
    name: neutron-ovs-grenade-multinode
    parent: grenade-multinode
    required-projects:
      - openstack/grenade
      - openstack/neutron
    irrelevant-files: &openvswitch-irrelevant-files
      - ^(test-|)requirements.txt$
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^neutron/agent/ovn/.*$
      - ^neutron/agent/windows/.*$
      - ^neutron/plugins/ml2/drivers/linuxbridge/.*$
      - ^neutron/plugins/ml2/drivers/macvtap/.*$
      - ^neutron/plugins/ml2/drivers/mech_sriov/.*$
      - ^neutron/plugins/ml2/drivers/ovn/.*$
    vars:
      devstack_services:
        etcd: false
        br-ex-tcpdump: true
        br-int-flows: true
        # Cinder services
        c-api: false
        c-bak: false
        c-sch: false
        c-vol: false
        cinder: false
        # Swift services
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
      devstack_local_conf:
        post-config:
          $NEUTRON_L3_CONF:
            agent:
              debug_iptables_rules: True
    group-vars:
      subnode:
        devstack_services:
          # Cinder services
          c-bak: false
          c-vol: false
        devstack_local_conf:
          post-config:
            $NEUTRON_L3_CONF:
              agent:
                debug_iptables_rules: True

# TODO(ralonsoh): remove this duplicated definition when "devstack" and
# "tempest" adopt the new name.
- job:
    name: neutron-grenade-multinode
    parent: neutron-ovs-grenade-multinode

- job:
    name: neutron-ovs-grenade-dvr-multinode
    parent: grenade-multinode
    pre-run: playbooks/dvr-multinode-scenario-pre-run.yaml
    roles:
      - zuul: openstack/neutron-tempest-plugin
    required-projects:
      - openstack/grenade
      - openstack/neutron
    irrelevant-files: *openvswitch-irrelevant-files
    vars:
      devstack_services:
        etcd: false
        br-ex-tcpdump: true
        br-int-flows: true
        # Cinder services
        c-api: false
        c-bak: false
        c-sch: false
        c-vol: false
        cinder: false
        # Swift services
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              router_distributed: True
          # NOTE(slaweq): We can get rid of this hardcoded absolute path when
          # devstack-tempest job will be switched to use lib/neutron instead of
          # lib/neutron-legacy
          "/$NEUTRON_CORE_PLUGIN_CONF":
            ml2:
              mechanism_drivers: openvswitch,l2population
            agent:
              enable_distributed_routing: True
              l2_population: True
              tunnel_types: vxlan
              arp_responder: True
            ovs:
              tunnel_bridge: br-tun
              bridge_mappings: public:br-ex
          $NEUTRON_L3_CONF:
            DEFAULT:
              agent_mode: dvr
            agent:
              availability_zone: nova
              debug_iptables_rules: True
          $NEUTRON_DHCP_CONF:
            agent:
              availability_zone: nova
    group-vars:
      subnode:
        devstack_services:
          q-agt: true
          q-l3: true
          q-meta: true
          br-ex-tcpdump: true
          br-int-flows: true
          # Cinder services
          c-bak: false
          c-vol: false
        devstack_local_conf:
          post-config:
            $NEUTRON_CONF:
              DEFAULT:
                router_distributed: True
            # NOTE(slaweq): We can get rid of this hardcoded absolute path when
            # devstack-tempest job will be switched to use lib/neutron instead of
            # lib/neutron-legacy
            "/$NEUTRON_CORE_PLUGIN_CONF":
              agent:
                enable_distributed_routing: True
                l2_population: True
                tunnel_types: vxlan
                arp_responder: True
              ovs:
                tunnel_bridge: br-tun
                bridge_mappings: public:br-ex
            $NEUTRON_L3_CONF:
              DEFAULT:
                agent_mode: dvr_snat
              agent:
                availability_zone: nova
                debug_iptables_rules: True

- job:
    name: neutron-ovn-grenade-multinode
    parent: grenade-multinode
    timeout: 9000
    irrelevant-files:
      - ^(test-|)requirements.txt$
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^neutron/agent/dhcp/.*$
      - ^neutron/agent/l2/.*$
      - ^neutron/agent/l3/.*$
      - ^neutron/agent/metadata/.*$
      - ^neutron/agent/windows/.*$
      - ^neutron/agent/dhcp_agent.py
      - ^neutron/agent/l3_agent.py
      - ^neutron/agent/metadata_agent.py
      - ^neutron/agent/resource_cache.py
      - ^neutron/agent/rpc.py
      - ^neutron/agent/securitygroup_rpc.py
      - ^neutron/plugins/ml2/drivers/linuxbridge/.*$
      - ^neutron/plugins/ml2/drivers/openvswitch/.*$
      - ^neutron/plugins/ml2/drivers/macvtap/.*$
      - ^neutron/plugins/ml2/drivers/mech_sriov/.*$
      - ^neutron/scheduler/.*$
    roles:
      - zuul: openstack/neutron-tempest-plugin
    required-projects:
      - openstack/grenade
      - openstack/neutron
      - openstack/neutron-tempest-plugin
    pre-run: playbooks/multinode-setup.yaml
    vars:
      devstack_local_conf:
        test-config:
          $TEMPEST_CONFIG:
            neutron_plugin_options:
              is_igmp_snooping_enabled: True
      grenade_devstack_localrc:
        old:
          Q_BUILD_OVS_FROM_GIT: true
          # TODO(jlibosva): v2.13.1 is incompatible with kernel 4.15.0-118, sticking to commit hash until new v2.13 tag is created
          OVS_BRANCH: 0047ca3a0290f1ef954f2c76b31477cf4b9755f5
          # TODO(mjozefcz): Stop compiling OVS modules when meter action in kernel
          # will be released in Ubuntu Bionic.
          # More info: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-December/048009.html
          OVN_BUILD_MODULES: true
          OVN_BRANCH: v20.06.1
        new:
          Q_BUILD_OVS_FROM_GIT: false
          OVN_BUILD_MODULES: false
        shared:
          Q_AGENT: ovn
          Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger
          Q_ML2_TENANT_NETWORK_TYPE: geneve
          Q_USE_PROVIDERNET_FOR_PUBLIC: true
          PHYSICAL_NETWORK: public
          ENABLE_CHASSIS_AS_GW: true
          OVN_L3_CREATE_PUBLIC_NETWORK: true
          OVN_DBS_LOG_LEVEL: dbg
          OVN_IGMP_SNOOPING_ENABLE: True
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin
      zuul_copy_output:
        '{{ devstack_base_dir }}/data/ovs': 'logs'
        '{{ devstack_base_dir }}/data/ovn': 'logs'
      extensions_to_txt:
        db: true
      devstack_services:
        etcd: false
        br-ex-tcpdump: true
        br-int-flows: true
        q-ovn-metadata-agent: true
        ovn-controller: true
        ovn-northd: true
        ovs-vswitchd: true
        ovsdb-server: true
        placement-api: true
        peakmem_tracker: false
        q-svc: true
        q-agt: false
        q-dhcp: false
        q-l3: false
        q-meta: false
        q-metering: false
        q-dns: true
        # Cinder services
        c-api: false
        c-bak: false
        c-sch: false
        c-vol: false
        cinder: false
        # When running python3 Swift should be disabled for now
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
        tls-proxy: false
        q-qos: true
    group-vars:
      subnode:
        devstack_services:
          br-ex-tcpdump: true
          br-int-flows: true
          ovn-controller: true
          ovn-northd: false
          ovs-vswitchd: true
          ovsdb-server: true
          # NOTE(slaweq): it's just to check if this will force devstack to
          # configure neutron and ML2 plugin on subnodes
          q-fake: true
          q-svc: false
          q-agt: false
          q-dhcp: false
          q-l3: false
          q-meta: false
          q-metering: false
          q-ovn-metadata-agent: true
          tls-proxy: false
          # Cinder services
          c-bak: false
          c-vol: false
        grenade_devstack_localrc:
          old:
            Q_BUILD_OVS_FROM_GIT: true
            # TODO(jlibosva): v2.13.1 is incompatible with kernel 4.15.0-118, sticking to commit hash until new v2.13 tag is created
            OVS_BRANCH: 0047ca3a0290f1ef954f2c76b31477cf4b9755f5
            # TODO(mjozefcz): Stop compiling OVS modules when meter action in kernel
            # will be released in Ubuntu Bionic.
            # More info: https://mail.openvswitch.org/pipermail/ovs-discuss/2018-December/048009.html
            OVN_BUILD_MODULES: true
            OVN_BRANCH: v20.06.1
          new:
            Q_BUILD_OVS_FROM_GIT: false
            OVN_BUILD_MODULES: false
          shared:
            Q_AGENT: ovn
            Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger
            Q_ML2_TENANT_NETWORK_TYPE: geneve
            Q_USE_PROVIDERNET_FOR_PUBLIC: true
            PHYSICAL_NETWORK: public
            ENABLE_CHASSIS_AS_GW: false
            OVN_DBS_LOG_LEVEL: dbg