- job:
    name: neutron-functional
    parent: devstack-minimal
    description: Run neutron functional tests
    timeout: 7800
    required-projects:
      - opendev.org/openstack/devstack
      - openstack/neutron
      - openstack/requirements
    roles:
      - zuul: openstack/devstack
    pre-run: playbooks/configure_functional_job.yaml
    run: playbooks/run_functional_job.yaml
    post-run: playbooks/post_functional_job.yaml
    irrelevant-files: &irrelevant-files
      - ^.*\.rst$
      - ^doc/.*$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^tools/.*$
      - ^vagrant/.*$
      - ^devstack/.*\.sample$
    vars:
      OVN_BRANCH: v20.06.1
      # 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
      devstack_services:
        # Ignore any default set by devstack. Emit a "disable_all_services".
        base: false
        etcd3: false
      devstack_localrc:
        INSTALL_TESTONLY_PACKAGES: true
        DATABASE_PASSWORD: stackdb
      tox_envlist: dsvm-functional
      tox_constraints_file: '{{ ansible_user_dir }}/src/opendev.org/openstack/requirements/upper-constraints.txt'
      zuul_copy_output:
        # We need to copy directory with logs to have it in job artifacts also,
        # /opt/stack/logs is default logs directory defined in neutron's
        # tox.ini file
        '{{ devstack_base_dir }}/logs/dsvm-functional-logs': logs

- job:
    name: neutron-fullstack
    parent: neutron-functional
    vars:
      tox_envlist: dsvm-fullstack-gate
      zuul_copy_output:
        # We need to copy directory with logs to have it in job artifacts also,
        # /opt/stack/logs is default logs directory defined in neutron's
        # tox.ini file
        '{{ devstack_base_dir }}/logs/dsvm-fullstack-logs': logs
    irrelevant-files:
      - ^(test-|)requirements.txt$
      - ^releasenotes/.*$
      - ^doc/.*$
      - ^setup.cfg$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^tools/.*$
      - ^neutron/agent/ovn/.*$
      - ^neutron/agent/windows/.*$
      - ^neutron/plugins/ml2/drivers/macvtap/.*$
      - ^neutron/plugins/ml2/drivers/mech_sriov/.*$
      - ^neutron/plugins/ml2/drivers/ovn/.*$

- job:
    name: neutron-fullstack-with-uwsgi
    parent: neutron-fullstack
    vars:
      devstack_localrc:
        NEUTRON_DEPLOY_MOD_WSGI: true
      # Because this job uses neutron defined tox env (defined in base job),
      # we need to set zuul_work_dir to neutron so that it can be used by
      # other projects. Currently devstack run this job. Not setting this
      # in base neutron-functional job as that is being used by neutron
      # stadium projects where they need to use stadium project as working dir.
      zuul_work_dir: src/opendev.org/openstack/neutron

- job:
    name: neutron-functional-with-uwsgi
    parent: neutron-functional
    vars:
      devstack_localrc:
        NEUTRON_DEPLOY_MOD_WSGI: true
      # Because this job uses neutron defined tox env (defined in base job),
      # we need to set zuul_work_dir to neutron so that it can be used by
      # other projects. Currently devstack run this job. Not setting this
      # in base neutron-functional job as that is being used by neutron
      # stadium projects where they need to use stadium project as working dir.
      zuul_work_dir: src/opendev.org/openstack/neutron

- job:
    name: neutron-linuxbridge-tempest-plugin-scenario-nftables
    parent: neutron-tempest-plugin-scenario-linuxbridge
    pre-run: playbooks/install_nftables.yaml
    vars:
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            SECURITYGROUP:
              enable_ipset: false  # Not compatible with nftables

- job:
    name: neutron-ovs-tempest-plugin-scenario-iptables_hybrid-nftables
    parent: neutron-tempest-plugin-scenario-openvswitch-iptables_hybrid
    pre-run: playbooks/install_nftables.yaml
    vars:
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            SECURITYGROUP:
              enable_ipset: false  # Not compatible with nftables