- job:
    name: neutron-tempest-plugin-base
    parent: devstack-tempest
    abstract: true
    description: |
      Perform setup common to all Neutron tempest tests
    roles:
      - zuul: openstack/devstack
    required-projects:
      - openstack/neutron
      - openstack/neutron-tempest-plugin
      - openstack/tempest
    vars:
      tempest_concurrency: 3  # out of 4
      tox_envlist: all
      # NOTE(slaweq): in case of some tests, which requires advanced image,
      # default test timeout set to 1200 seconds may be not enough if job is
      # run on slow node
      tempest_test_timeout: 2400
      tempest_test_regex: "\
          (^neutron_tempest_plugin.api)|\
          (^neutron_tempest_plugin.scenario)|\
          (^tempest.api.compute.servers.test_attach_interfaces)|\
          (^tempest.api.compute.servers.test_multiple_create)"
      devstack_localrc:
        USE_PYTHON3: true
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_tempest) | join(',') }}"
        PHYSICAL_NETWORK: public
        IMAGE_URLS: https://cloud-images.ubuntu.com/minimal/releases/focal/release/ubuntu-20.04-minimal-cloudimg-amd64.img
        CIRROS_VERSION: 0.6.1
        DEFAULT_IMAGE_NAME: cirros-0.6.1-x86_64-uec
        DEFAULT_IMAGE_FILE_NAME: cirros-0.6.1-x86_64-uec.tar.gz
        ADVANCED_IMAGE_NAME: ubuntu-20.04-minimal-cloudimg-amd64
        ADVANCED_INSTANCE_TYPE: ntp_image_256M
        ADVANCED_INSTANCE_USER: ubuntu
        CUSTOMIZE_IMAGE: true
        BUILD_TIMEOUT: 784
        # TODO(lucasagomes): Re-enable MOD_WSGI after
        # https://bugs.launchpad.net/neutron/+bug/1912359 is implemented
        NEUTRON_DEPLOY_MOD_WSGI: false
        # TODO(ralonsoh): remove OVN_BUILD_FROM_SOURCE once the OS packages
        # include at least OVN v20.12.0.
        OVN_BUILD_FROM_SOURCE: True
        OVN_BRANCH: "v21.03.0"
        OVS_BRANCH: "8dc1733eaea866dce033b3c44853e1b09bf59fc7"
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron.git
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git
      tempest_plugins:
        - neutron-tempest-plugin
      # TODO(slaweq): find a way to put this list of extensions in
      # neutron repository and keep it different per branch,
      # then it could be removed from here
      network_api_extensions_common: &api_extensions
        - address-group
        - address-scope
        - agent
        - allowed-address-pairs
        - auto-allocated-topology
        - availability_zone
        - binding
        - default-subnetpools
        - dns-domain-ports
        - dns-integration
        - dns-integration-domain-keywords
        - empty-string-filtering
        - expose-port-forwarding-in-fip
        - expose-l3-conntrack-helper
        - ext-gw-mode
        - external-net
        - extra_dhcp_opt
        - extraroute
        - extraroute-atomic
        - filter-validation
        - fip-port-details
        - flavors
        - floating-ip-port-forwarding
        - floating-ip-port-forwarding-detail
        - floatingip-pools
        - ip-substring-filtering
        - l3-conntrack-helper
        - l3-ext-ndp-proxy
        - l3-flavors
        - l3-ha
        - l3-ndp-proxy
        - l3_agent_scheduler
        - metering
        - multi-provider
        - net-mtu
        - net-mtu-writable
        - network-ip-availability
        - network_availability_zone
        - network-segment-range
        - pagination
        - port-device-profile
        - port-resource-request
        - port-resource-request-groups
        - port-mac-address-regenerate
        - port-security
        - port-security-groups-filtering
        - project-id
        - provider
        - qos
        - qos-fip
        - quotas
        - quota_details
        - rbac-address-group
        - rbac-address-scope
        - rbac-policies
        - rbac-security-groups
        - rbac-subnetpool
        - router
        - router_availability_zone
        - security-group
        - security-groups-remote-address-group
        - segment
        - service-type
        - sorting
        - standard-attr-description
        - standard-attr-revisions
        - standard-attr-segment
        - standard-attr-tag
        - standard-attr-timestamp
        - stateful-security-group
        - subnet_allocation
        - subnet-dns-publish-fixed-ip
        - subnet-service-types
        - subnetpool-prefix-ops
        - tag-ports-during-bulk-creation
        - trunk
        - trunk-details
        - uplink-status-propagation
      devstack_services:
        tempest: true
        neutron-dns: true
        neutron-log: true
        neutron-qos: true
        neutron-segments: true
        neutron-trunk: true
        neutron-uplink-status-propagation: true
        neutron-network-segment-range: true
        neutron-port-forwarding: true
        neutron-conntrack-helper: true
        neutron-tag-ports-during-bulk-creation: true
        neutron-ndp-proxy: true
        br-ex-tcpdump: true
        br-int-flows: true
        # Cinder services
        c-api: false
        c-bak: false
        c-sch: false
        c-vol: false
        cinder: false
        # We don't need Swift to be run in the Neutron jobs
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            QUOTAS:
              quota_router: 100
              quota_floatingip: 500
              quota_security_group: 150
              quota_security_group_rule: 1000
          /$NEUTRON_CORE_PLUGIN_CONF:
            ml2:
              type_drivers: flat,geneve,vlan,gre,local,vxlan
            ml2_type_vlan:
              network_vlan_ranges: foo:1:10
            ml2_type_vxlan:
              vni_ranges: 1:2000
            ml2_type_gre:
              tunnel_id_ranges: 1:1000
            network_log:
              local_output_log_base: /tmp/test_log.log
          $NEUTRON_L3_CONF:
            agent:
              availability_zone: nova
          $NEUTRON_DHCP_CONF:
            agent:
              availability_zone: nova
        test-config:
          $TEMPEST_CONFIG:
            neutron_plugin_options:
              provider_vlans: foo,
              agent_availability_zone: nova
              image_is_advanced: true
              available_type_drivers: flat,geneve,vlan,gre,local,vxlan
              provider_net_base_segm_id: 1
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^.*\.conf\.sample$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^neutron/agent/.*$
      - ^neutron/privileged/.*$
      - ^neutron_lib/tests/unit/.*$
      - ^neutron_tempest_plugin/scenario/.*$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-openvswitch
    parent: neutron-tempest-plugin-base-nested-switch
    timeout: 10000
    vars:
      configure_swap_size: 2048
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Neutron services
        neutron-local-ip-static: true
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
        q-metering: true
      network_api_extensions_openvswitch:
        - dhcp_agent_scheduler
        - local_ip
        - qos-bw-minimum-ingress
      network_available_features: &available_features
        - ipv6_metadata
      devstack_localrc:
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_openvswitch) | join(',') }}"
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              enable_dvr: false
              l3_ha: true
          /$NEUTRON_CORE_PLUGIN_CONF:
            agent:
              tunnel_types: vxlan,gre
            ovs:
              tunnel_bridge: br-tun
              bridge_mappings: public:br-ex
              openflow_processed_per_port: True
        test-config:
          $TEMPEST_CONFIG:
            network-feature-enabled:
              available_features: "{{ network_available_features | join(',') }}"
            neutron_plugin_options:
              available_type_drivers: flat,vlan,local,vxlan
              firewall_driver: openvswitch
    irrelevant-files: &openvswitch-scenario-irrelevant-files
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^.*\.conf\.sample$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^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/.*$
      - ^neutron/services/ovn_l3/.*$
      - ^neutron/services/logapi/drivers/ovn/.*$
      - ^neutron/services/portforwarding/drivers/ovn/.*$
      - ^neutron/services/qos/drivers/linuxbridge/.*$
      - ^neutron/services/qos/drivers/ovn/.*$
      - ^neutron/services/trunk/drivers/linuxbridge/.*$
      - ^neutron/services/trunk/drivers/ovn/.*$
      - ^neutron/cmd/ovn/.*$
      - ^neutron/common/ovn/.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-openvswitch-iptables_hybrid
    parent: neutron-tempest-plugin-base-nested-switch
    timeout: 10000
    vars:
      configure_swap_size: 2048
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Neutron services
        neutron-local-ip: true
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
        q-metering: true
      network_api_extensions_openvswitch:
        - dhcp_agent_scheduler
        - local_ip
        - logging
      network_available_features: *available_features
      # TODO(slaweq): remove trunks subport_connectivity test from blacklist
      # when bug https://bugs.launchpad.net/neutron/+bug/1838760 will be fixed
      # TODO(akatz): remove established tcp session verification test when the
      # bug https://bugzilla.redhat.com/show_bug.cgi?id=1965036 will be fixed
      tempest_exclude_regex: "\
          (^neutron_tempest_plugin.scenario.test_trunk.TrunkTest.test_subport_connectivity)|\
          (^neutron_tempest_plugin.scenario.test_security_groups.StatefulNetworkSecGroupTest.test_established_tcp_session_after_re_attachinging_sg)|\
          (^neutron_tempest_plugin.scenario.test_security_groups.StatelessNetworkSecGroupTest.test_established_tcp_session_after_re_attachinging_sg)"
      devstack_localrc:
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_openvswitch) | join(',') }}"
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              enable_dvr: false
              l3_ha: true
          /$NEUTRON_CORE_PLUGIN_CONF:
            agent:
              tunnel_types: vxlan,gre
            ovs:
              tunnel_bridge: br-tun
              bridge_mappings: public:br-ex
            securitygroup:
              firewall_driver: iptables_hybrid
        test-config:
          $TEMPEST_CONFIG:
            network-feature-enabled:
              available_features: "{{ network_available_features | join(',') }}"
            neutron_plugin_options:
              available_type_drivers: flat,vlan,local,vxlan
              firewall_driver: iptables_hybrid
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^.*\.conf\.sample$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^neutron/agent/linux/openvswitch_firewall/.*$
      - ^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/.*$
      - ^neutron/services/ovn_l3/.*$
      - ^neutron/services/logapi/drivers/ovn/.*$
      - ^neutron/services/portforwarding/drivers/ovn/.*$
      - ^neutron/services/qos/drivers/linuxbridge/.*$
      - ^neutron/services/qos/drivers/ovn/.*$
      - ^neutron/services/trunk/drivers/linuxbridge/.*$
      - ^neutron/services/trunk/drivers/ovn/.*$
      - ^neutron/cmd/ovn/.*$
      - ^neutron/common/ovn/.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-openvswitch-enforce-scope-new-defaults
    parent: neutron-tempest-plugin-openvswitch
    vars:
      devstack_localrc:
        # Enabeling the scope and new defaults for services.
        # NOTE: (gmann) We need to keep keystone scope check disable as
        # services (except ironic) does not support the system scope and
        # they need keystone to continue working with project scope. Until
        # Keystone policies are changed to work for both system as well as
        # for project scoped, we need to keep scope check disable for
        # keystone.
        NOVA_ENFORCE_SCOPE: true
        GLANCE_ENFORCE_SCOPE: true
        NEUTRON_ENFORCE_SCOPE: true


# TODO(slaweq): remove that job's definition as soon as new job
# "neutron-tempest-plugin-openvswitch-iptables_hybrid" will be used in the
# neutron repo as a parent for a
# "neutron-ovs-tempest-plugin-scenario-iptables_hybrid-nftables" job
- job:
    name: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid
    parent: neutron-tempest-plugin-openvswitch-iptables_hybrid

- job:
    name: neutron-tempest-plugin-openvswitch-distributed-dhcp
    parent: neutron-tempest-plugin-openvswitch
    timeout: 10000
    vars:
      network_api_extensions_openvswitch:
        - local_ip
        - qos-bw-minimum-ingress
      # NOTE: DHCP extra options and dns services aren't supported with
      # distributed DHCP L2 agent extension
      tempest_exclude_regex: "\
          (^neutron_tempest_plugin.scenario.test_dhcp.DHCPTest.test_extra_dhcp_opts)|\
          (^neutron_tempest_plugin.scenario.test_internal_dns.InternalDNSTest.test_dns_domain_and_name)"
      devstack_services:
        q-dhcp: false
        q-distributed-dhcp: true

- job:
    name: neutron-tempest-plugin-openvswitch-iptables_hybrid-distributed-dhcp
    parent: neutron-tempest-plugin-openvswitch-iptables_hybrid
    timeout: 10000
    vars:
      network_api_extensions_openvswitch:
        - local_ip
        - logging
      # NOTE: DHCP extra options and dns services aren't supported with
      # distributed DHCP L2 agent extension
      tempest_exclude_regex: "\
          (^neutron_tempest_plugin.scenario.test_dhcp.DHCPTest.test_extra_dhcp_opts)|\
          (^neutron_tempest_plugin.scenario.test_internal_dns.InternalDNSTest.test_dns_domain_and_name)"
      devstack_services:
        q-dhcp: false
        q-distributed-dhcp: true

- job:
    name: neutron-tempest-plugin-linuxbridge
    parent: neutron-tempest-plugin-base-nested-switch
    timeout: 10000
    roles:
      - zuul: openstack/neutron
    pre-run: playbooks/linuxbridge-scenario-pre-run.yaml
    vars:
      configure_swap_size: 2048
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        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
        q-metering: true
        # SG logging isn't supported by linuxbridge backend
        neutron-log: false
      network_api_extensions_linuxbridge:
        - dhcp_agent_scheduler
        - vlan-transparent
      network_available_features: *available_features
      # TODO(eolivare): remove VLAN Transparency tests from blacklist
      # when bug https://bugs.launchpad.net/neutron/+bug/1907548 will be fixed
      # TODO(slaweq): remove
      # test_established_tcp_session_after_re_attachinging_sg from the
      # exclude regex when bug https://bugs.launchpad.net/neutron/+bug/1936911
      # will be fixed
      # TODO(slaweq) remove test_floatingip_port_details from the exclude
      # regex when bug https://bugs.launchpad.net/neutron/+bug/1799790 will be
      # fixed
      tempest_exclude_regex: "\
          (^neutron_tempest_plugin.scenario.test_vlan_transparency.VlanTransparencyTest)|\
          (^neutron_tempest_plugin.scenario.test_security_groups.StatefulNetworkSecGroupTest.test_established_tcp_session_after_re_attachinging_sg)|\
          (^neutron_tempest_plugin.scenario.test_security_groups.StatelessNetworkSecGroupTest.test_established_tcp_session_after_re_attachinging_sg)|\
          (^neutron_tempest_plugin.scenario.test_floatingip.FloatingIPPortDetailsTest.test_floatingip_port_details)"
      devstack_localrc:
        Q_AGENT: linuxbridge
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_linuxbridge) | join(',') }}"
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch,linuxbridge
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              enable_dvr: false
              vlan_transparent: true
              l3_ha: true
            AGENT:
              debug_iptables_rules: true
            EXPERIMENTAL:
              linuxbridge: true
          /$NEUTRON_CORE_PLUGIN_CONF:
            ml2:
              type_drivers: flat,vlan,local,vxlan
              mechanism_drivers: linuxbridge
        test-config:
          $TEMPEST_CONFIG:
            network-feature-enabled:
              available_features: "{{ network_available_features | join(',') }}"
            neutron_plugin_options:
              available_type_drivers: flat,vlan,local,vxlan
              q_agent: linuxbridge
              firewall_driver: iptables
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^.*\.conf\.sample$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^neutron/agent/linux/openvswitch_firewall/.*$
      - ^neutron/agent/ovn/.*$
      - ^neutron/agent/windows/.*$
      - ^neutron/plugins/ml2/drivers/openvswitch/.*$
      - ^neutron/plugins/ml2/drivers/macvtap/.*$
      - ^neutron/plugins/ml2/drivers/mech_sriov/.*$
      - ^neutron/plugins/ml2/drivers/ovn/.*$
      - ^neutron/services/ovn_l3/.*$
      - ^neutron/services/logapi/drivers/openvswitch/.*$
      - ^neutron/services/logapi/drivers/ovn/.*$
      - ^neutron/services/portforwarding/drivers/ovn/.*$
      - ^neutron/services/qos/drivers/openvswitch/.*$
      - ^neutron/services/qos/drivers/ovn/.*$
      - ^neutron/services/trunk/drivers/openvswitch/.*$
      - ^neutron/services/trunk/drivers/ovn/.*$
      - ^neutron/cmd/ovn/.*$
      - ^neutron/common/ovn/.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

# TODO(slaweq): remove that job's definition as soon as new job
# "neutron-tempest-plugin-linuxbridge" will be used in the neutron repo as
# a parent for a "neutron-linuxbridge-tempest-plugin-scenario-nftables" job
- job:
    name: neutron-tempest-plugin-scenario-linuxbridge
    parent: neutron-tempest-plugin-linuxbridge

- job:
    name: neutron-tempest-plugin-ovn
    parent: neutron-tempest-plugin-base-nested-switch
    timeout: 10800
    vars:
      network_api_extensions_ovn:
        - vlan-transparent
      # TODO(jlibosva): Remove the NetworkWritableMtuTest test from the list
      # once east/west fragmentation is supported in core OVN
      tempest_exclude_regex: "\
          (^neutron_tempest_plugin.scenario.test_mtu.NetworkWritableMtuTest)"
      devstack_localrc:
        Q_AGENT: ovn
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_ovn) | join(',') }}"
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: ovn,logger
        Q_ML2_PLUGIN_TYPE_DRIVERS: local,flat,vlan,geneve
        Q_ML2_TENANT_NETWORK_TYPE: geneve
        Q_USE_PROVIDERNET_FOR_PUBLIC: true
        ENABLE_CHASSIS_AS_GW: true
        OVN_L3_CREATE_PUBLIC_NETWORK: true
        OVN_DBS_LOG_LEVEL: dbg
        ENABLE_TLS: True
        OVN_IGMP_SNOOPING_ENABLE: True
        # TODO(eolivare): Remove OVN_BUILD_FROM_SOURCE once vlan-transparency
        # is included in an ovn released version
        OVN_BUILD_FROM_SOURCE: True
        OVN_BRANCH: "v21.06.0"
        OVS_BRANCH: "a4b04276ab5934d087669ff2d191a23931335c87"
        OVS_SYSCONFDIR: "/usr/local/etc/openvswitch"
      devstack_services:
        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
        q-agt: false
        q-dhcp: false
        q-l3: false
        q-meta: false
        q-metering: false
        q-qos: true
        # Cinder services
        c-api: false
        c-bak: false
        c-sch: false
        c-vol: false
        cinder: false
        s-account: false
        s-container-sync: false
        s-container: false
        s-object: false
        s-proxy: false
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            DEFAULT:
              enable_dvr: false
              vlan_transparent: true
          /$NEUTRON_CORE_PLUGIN_CONF:
            ml2:
              type_drivers: local,flat,vlan,geneve
        test-config:
          $TEMPEST_CONFIG:
            network-feature-enabled:
              available_features: ""
            neutron_plugin_options:
              available_type_drivers: local,flat,vlan,geneve
              is_igmp_snooping_enabled: True
              firewall_driver: ovn
      zuul_copy_output:
        '{{ devstack_base_dir }}/data/ovs': 'logs'
        '{{ devstack_base_dir }}/data/ovn': 'logs'
        '{{ devstack_log_dir }}/ovsdb-server-nb.log': 'logs'
        '{{ devstack_log_dir }}/ovsdb-server-sb.log': 'logs'
        '/var/log/ovn': 'logs'
        '/var/log/openvswitch': 'logs'
        '/var/lib/ovn': 'logs'
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^.*\.conf\.sample$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^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/services/qos/drivers/linuxbridge/.*$
      - ^neutron/services/qos/drivers/openvswitch/.*$
      - ^neutron/services/trunk/drivers/linuxbridge/.*$
      - ^neutron/services/trunk/drivers/openvswitch/.*$
      - ^neutron/scheduler/.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

# TODO(slaweq): remove that job's definition as soon as new job
# "neutron-tempest-plugin-ovn" will be used in the neutron-lib repo as
# instead of old "neutron-tempest-plugin-api" job
- job:
    name: neutron-tempest-plugin-api
    parent: neutron-tempest-plugin-ovn

- job:
    name: neutron-tempest-plugin-dvr-multinode-scenario
    parent: tempest-multinode-full
    description: |
        Perform setup for Neutron tempest tests in multinode with DVR scenario
    roles:
      - zuul: openstack/devstack
    required-projects:
      - openstack/neutron
      - openstack/neutron-tempest-plugin
      - openstack/tempest
    pre-run: playbooks/dvr-multinode-scenario-pre-run.yaml
    voting: false
    vars:
      tempest_concurrency: 4
      tox_envlist: all
      tempest_test_regex: ^neutron_tempest_plugin\.scenario
      # NOTE(slaweq): in case of some tests, which requires advanced image,
      # default test timeout set to 1200 seconds may be not enough if job is
      # run on slow node
      tempest_test_timeout: 2400
      network_api_extensions_common: *api_extensions
      network_api_extensions_dvr:
        - dhcp_agent_scheduler
        - dvr
      devstack_localrc:
        USE_PYTHON3: true
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_dvr) | join(',') }}"
        PHYSICAL_NETWORK: default
        CIRROS_VERSION: 0.6.1
        DEFAULT_IMAGE_NAME: cirros-0.6.1-x86_64-uec
        DEFAULT_IMAGE_FILE_NAME: cirros-0.6.1-x86_64-uec.tar.gz
        IMAGE_URLS: https://cloud-images.ubuntu.com/minimal/releases/focal/release/ubuntu-20.04-minimal-cloudimg-amd64.img
        ADVANCED_IMAGE_NAME: ubuntu-20.04-minimal-cloudimg-amd64
        ADVANCED_INSTANCE_TYPE: ntp_image_256M
        ADVANCED_INSTANCE_USER: ubuntu
        CUSTOMIZE_IMAGE: true
        BUILD_TIMEOUT: 784
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
      devstack_plugins:
        neutron: https://opendev.org/openstack/neutron.git
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git
      tempest_plugins:
        - neutron-tempest-plugin
      devstack_services:
        tls-proxy: true
        tempest: true
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        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
        q-metering: true
        neutron-dns: true
        neutron-qos: true
        neutron-segments: true
        neutron-trunk: true
        neutron-log: true
        neutron-port-forwarding: true
        # Cinder services
        c-api: false
        c-bak: false
        c-sch: false
        c-vol: false
        cinder: false
        # We don't need Swift to be run in the Neutron jobs
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            quotas:
              quota_router: 100
              quota_floatingip: 500
              quota_security_group: 100
              quota_security_group_rule: 1000
            DEFAULT:
              router_distributed: True
          "/$NEUTRON_CORE_PLUGIN_CONF":
            ml2:
              type_drivers: flat,geneve,vlan,gre,local,vxlan
              mechanism_drivers: openvswitch,l2population
            ml2_type_vlan:
              network_vlan_ranges: foo:1:10
            ml2_type_vxlan:
              vni_ranges: 1:2000
            ml2_type_gre:
              tunnel_id_ranges: 1:1000
            agent:
              enable_distributed_routing: True
              l2_population: True
              tunnel_types: vxlan,gre
            ovs:
              tunnel_bridge: br-tun
              bridge_mappings: public:br-ex
          $NEUTRON_L3_CONF:
            DEFAULT:
              agent_mode: dvr_snat
            agent:
              availability_zone: nova
          $NEUTRON_DHCP_CONF:
            agent:
              availability_zone: nova
          "/etc/neutron/api-paste.ini":
            "composite:neutronapi_v2_0":
              use: "call:neutron.auth:pipeline_factory"
              noauth: "cors request_id catch_errors osprofiler extensions neutronapiapp_v2_0"
              keystone: "cors request_id catch_errors osprofiler authtoken keystonecontext extensions neutronapiapp_v2_0"
        test-config:
          $TEMPEST_CONFIG:
            network-feature-enabled:
              available_features: *available_features
            neutron_plugin_options:
              provider_vlans: foo,
              agent_availability_zone: nova
              image_is_advanced: true
              available_type_drivers: flat,geneve,vlan,gre,local,vxlan
              l3_agent_mode: dvr_snat
              firewall_driver: openvswitch
    group-vars:
      subnode:
        devstack_services:
          tls-proxy: true
          br-ex-tcpdump: false
          br-int-flows: false
          # 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-l3: true
          q-meta: true
          neutron-qos: true
          neutron-trunk: true
          neutron-log: true
          neutron-port-forwarding: true
          # Cinder services
          c-bak: false
          c-vol: false
          # We don't need Swift to be run in the Neutron jobs
          s-account: false
          s-container: false
          s-object: false
          s-proxy: false
        devstack_localrc:
          USE_PYTHON3: true
          Q_AGENT: openvswitch
          Q_ML2_TENANT_NETWORK_TYPE: vxlan
          Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
        devstack_local_conf:
          post-config:
            $NEUTRON_CONF:
              DEFAULT:
                router_distributed: True
            "/$NEUTRON_CORE_PLUGIN_CONF":
              agent:
                enable_distributed_routing: True
                l2_population: True
                tunnel_types: vxlan,gre
              ovs:
                tunnel_bridge: br-tun
                bridge_mappings: public:br-ex
            $NEUTRON_L3_CONF:
              DEFAULT:
                agent_mode: dvr_snat
              agent:
                availability_zone: nova
    irrelevant-files: *openvswitch-scenario-irrelevant-files

- job:
    name: neutron-tempest-plugin-designate-scenario
    parent: neutron-tempest-plugin-base-nested-switch
    description: Neutron designate integration scenario
    required-projects:
      - openstack/designate
      - openstack/designate-dashboard
      - openstack/designate-tempest-plugin
    timeout: 3600
    vars:
      network_api_extensions_common: *api_extensions
      devstack_localrc:
        DESIGNATE_BACKEND_DRIVER: bind9
        # In this job advanced image is not needed, so it's name should be
        # empty
        ADVANCED_IMAGE_NAME: ""
        NETWORK_API_EXTENSIONS: "{{ network_api_extensions_common | join(',') }}"
      devstack_plugins:
        designate: https://opendev.org/openstack/designate.git
      devstack_services:
        cinder: false
        designate: true
      tempest_plugins:
        - designate-tempest-plugin
        - neutron-tempest-plugin
      tempest_test_regex: ^neutron_tempest_plugin\.scenario\.test_dns_integration
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^.*\.conf\.sample$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^neutron/agent/.*$
      - ^neutron/cmd/.*$
      - ^neutron/privileged/.*$
      - ^neutron/plugins/ml2/drivers/.*$
      - ^neutron/scheduler/.*$
      - ^neutron/services/(?!externaldns).*$
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-sfc
    parent: neutron-tempest-plugin-base
    timeout: 10800
    required-projects:
      - openstack/networking-sfc
      - openstack/neutron
      - openstack/neutron-tempest-plugin
      - openstack/tempest
    vars:
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Enable Neutron services that are not used by OVN
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
        q-metering: true
      tempest_test_regex: ^neutron_tempest_plugin\.sfc
      devstack_plugins:
        networking-sfc: https://opendev.org/openstack/networking-sfc
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin
      network_api_extensions_sfc:
        - flow_classifier
        - sfc
      devstack_localrc:
        # TODO(slaweq): check why traceroute output is different in Cirros >
        # 0.6.1 which is causing failures of the networking-sfc jobs
        CIRROS_VERSION: 0.5.1
        DEFAULT_IMAGE_NAME: cirros-0.5.1-x86_64-uec
        DEFAULT_IMAGE_FILE_NAME: cirros-0.5.1-x86_64-uec.tar.gz
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_sfc) | join(',') }}"
      # TODO(bcafarel): tests still fail from time to time in parallel
      # https://bugs.launchpad.net/neutron/+bug/1851500
      # https://bugs.launchpad.net/networking-sfc/+bug/1660366
      tempest_concurrency: 1
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^.*\.conf\.sample$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/scenario/admin/.*$
      - ^neutron_tempest_plugin/scenario/test_.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-bgpvpn-bagpipe
    parent: neutron-tempest-plugin-base
    required-projects:
      - openstack/networking-bagpipe
      - openstack/networking-bgpvpn
    vars:
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Enable Neutron services that are not used by OVN
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
        q-metering: true
      tempest_concurrency: 4
      tempest_test_regex: ^neutron_tempest_plugin\.bgpvpn
      network_api_extensions_bgpvpn:
        - bgpvpn
        - bgpvpn-routes-control
      devstack_localrc:
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
        NETWORKING_BGPVPN_DRIVER: "BGPVPN:BaGPipe:networking_bgpvpn.neutron.services.service_drivers.bagpipe.bagpipe_v2.BaGPipeBGPVPNDriver:default"
        BAGPIPE_DATAPLANE_DRIVER_IPVPN: "ovs"
        BAGPIPE_BGP_PEERS: "-"
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_bgpvpn) | join(',') }}"
      devstack_plugins:
        networking-bgpvpn: https://git.openstack.org/openstack/networking-bgpvpn
        networking-bagpipe: https://git.openstack.org/openstack/networking-bagpipe
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^.*\.conf\.sample$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/scenario/admin/.*$
      - ^neutron_tempest_plugin/scenario/test_.*$
      - ^neutron_tempest_plugin/(fwaas|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-dynamic-routing
    parent: neutron-tempest-plugin-base
    description: |
      Perform setup common to all Neutron dynamic routing tempest tests
    required-projects:
      - openstack/neutron
      - openstack/neutron-dynamic-routing
      - openstack/os-ken
      - openstack/tempest
    pre-run: playbooks/dynamic-routing-pre-run.yaml
    vars:
      devstack_plugins:
        neutron-dynamic-routing: https://opendev.org/openstack/neutron-dynamic-routing
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin
      network_api_extensions_bgp:
        - bgp
        - bgp_dragent_scheduler
        - bgp_4byte_asn
      devstack_localrc:
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_bgp) | join(',') }}"
      devstack_services:
        neutron-dr: true
        neutron-dr-agent: true
      tempest_concurrency: 1
      tempest_test_regex: ^neutron_tempest_plugin\.neutron_dynamic_routing
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^.*\.conf\.sample$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/scenario/admin/.*$
      - ^neutron_tempest_plugin/scenario/test_.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|sfc|tap_as_a_service|vpnaas).*$
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-fwaas
    parent: neutron-tempest-plugin-base
    timeout: 10800
    required-projects:
      - openstack/devstack-gate
      - openstack/neutron-fwaas
      - openstack/neutron
      - openstack/neutron-tempest-plugin
      - openstack/tempest
    vars:
      tempest_concurrency: 4
      tempest_test_regex: ^neutron_tempest_plugin\.fwaas
      devstack_plugins:
        neutron-fwaas: https://opendev.org/openstack/neutron-fwaas.git
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git
      network_api_extensions_fwaas:
        - fwaas_v2
      devstack_localrc:
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_fwaas) | join(',') }}"
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        ovn-controller: false
        ovn-northd: false
        q-ovn-metadata-agent: false
        # Neutron services
        q-agt: true
        q-dhcp: true
        q-meta: true
        q-metering: true
        q-l3: true
        neutron-log: false
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^.*\.conf\.sample$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/scenario/admin/.*$
      - ^neutron_tempest_plugin/scenario/test_.*$
      - ^neutron_tempest_plugin/(bgpvpn|neutron_dynamic_routing|sfc|tap_as_a_service|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-vpnaas
    parent: neutron-tempest-plugin-base
    timeout: 3900
    required-projects:
      - openstack/neutron
      - openstack/neutron-vpnaas
      - openstack/neutron-tempest-plugin
      - openstack/tempest
    vars:
      tempest_concurrency: 4
      tempest_test_regex: ^neutron_tempest_plugin\.vpnaas
      devstack_plugins:
        neutron-vpnaas: https://opendev.org/openstack/neutron-vpnaas.git
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git
      network_api_extensions_common: *api_extensions
      network_api_extensions_vpnaas:
        - vpnaas
      devstack_localrc:
        IPSEC_PACKAGE: strongswan
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_vpnaas) | join(',') }}"
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
      devstack_services:
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        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-meta: true
        q-metering: true
        q-l3: true
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^.*\.conf\.sample$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/scenario/admin/.*$
      - ^neutron_tempest_plugin/scenario/test_.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|tap_as_a_service).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- job:
    name: neutron-tempest-plugin-tap-as-a-service
    parent: neutron-tempest-plugin-base
    description: |
      Perform setup common to all tap-as-a-service tempest tests
    roles:
      - zuul: openstack/devstack
    required-projects:
      - openstack/devstack-gate
      - openstack/neutron
      - openstack/neutron-tempest-plugin
      - openstack/tap-as-a-service
      - openstack/tempest
    vars:
      tempest_concurrency: 4
      tempest_test_regex: ^neutron_tempest_plugin\.tap_as_a_service
      tox_envlist: all
      network_api_extensions_tempest:
        - taas
        - taas-vlan-filter
      devstack_localrc:
        NETWORK_API_EXTENSIONS: "{{ (network_api_extensions_common + network_api_extensions_tempest) | join(',') }}"
        BUILD_TIMEOUT: 784
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan,vlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
      devstack_local_conf:
        post-config:
          /$NEUTRON_CORE_PLUGIN_CONF:
            AGENT:
              tunnel_types: vxlan
            ml2_type_vlan:
              network_vlan_ranges: public
        test-config:
          $TEMPEST_CONFIG:
            neutron_plugin_options:
              image_is_advanced: true
              advanced_image_flavor_ref: d1
            taas:
              provider_physical_network: public
              provider_segmentation_id: 100
            image_feature_enabled:
              api_v2: true
      devstack_plugins:
        neutron: git://opendev.org/openstack/neutron.git
        neutron-tempest-plugin: https://opendev.org/openstack/neutron-tempest-plugin.git
        tap-as-a-service: git://opendev.org/openstack/tap-as-a-service.git
      devstack_services:
        # Disable OVN services
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Enable Neutron services that are not used by OVN
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
        q-metering: true
        br-ex-tcpdump: true
        br-int-flows: true
        base: false
        key: true
        mysql: true
        rabbit: true
        g-api: true
        g-reg: true
        n-api: true
        n-cond: true
        n-cpu: true
        n-crt: true
        n-sch: true
        placement-api: true
        n-api-meta: true
        q-svc: true
        quantum: true
        taas: true
        taas_openvswitch_agent: true
        tempest: true
        dstat: true
    irrelevant-files:
      - ^\.pylintrc$
      - ^(test-|)requirements.txt$
      - lower-constraints.txt
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^.*\.conf\.sample$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*
      - ^neutron/tests/functional/.*
      - ^neutron_tempest_plugin/api/test_.*$
      - ^neutron_tempest_plugin/scenario/admin/.*$
      - ^neutron_tempest_plugin/scenario/test_.*$
      - ^neutron_tempest_plugin/(bgpvpn|fwaas|neutron_dynamic_routing|sfc|vpnaas).*$
      - ^neutron_tempest_plugin/services/bgp/.*$
      - ^tools/.*$
      - ^tox.ini$
      - ^plugin.spec$
      - ^rally-jobs/.*$
      - ^roles/.*functional.*$
      - ^playbooks/.*functional.*$
      - ^vagrant/.*$
      - ^zuul.d/(?!(project)).*\.yaml
