- 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
      - ^.*\.conf\.sample$
      - ^.*\.rst$
      - ^doc/.*$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/fullstack/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^vagrant/.*$
      - ^devstack/.*\.sample$
      - ^playbooks/add_mariadb_repo.yaml
      - ^playbooks/configure_ebtables.yaml
      - ^playbooks/dvr-multinode-scenario-pre-run.yaml
      - ^playbooks/install_nftables.yaml
      - ^playbooks/multinode-setup.yaml
      - ^playbooks/prepare-ovn-multinode.yaml
      - ^roles/add_mariadb_repo/.*$
      - ^roles/nftables/.*$
      - ^rally-jobs/.*$
      - ^zuul.d/(?!(project)).*\.yaml
    vars:
      configure_swap_size: 8192
      Q_BUILD_OVS_FROM_GIT: True
      MEMORY_TRACKER: True
      INSTALL_OVN: True
      OVN_BRANCH: v21.06.0
      OVS_BRANCH: v2.16.0
      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
    timeout: 9000
    vars:
      tox_envlist: dsvm-fullstack-gate
      Q_BUILD_OVS_FROM_GIT: False
      INSTALL_OVN: False
      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$
      - ^.*\.conf\.sample$
      - ^.*\.rst$
      - ^neutron/locale/.*$
      - ^neutron/tests/unit/.*$
      - ^neutron/tests/functional/.*$
      - ^neutron/agent/ovn/.*$
      - ^neutron/agent/windows/.*$
      - ^neutron/plugins/ml2/drivers/macvtap/.*$
      - ^neutron/plugins/ml2/drivers/mech_sriov/.*$
      - ^neutron/plugins/ml2/drivers/ovn/.*$
      - ^neutron_lib/tests/unit/.*$
      - ^vagrant/.*$
      - ^devstack/.*\.sample$
      - ^playbooks/add_mariadb_repo.yaml
      - ^playbooks/configure_ebtables.yaml
      - ^playbooks/dvr-multinode-scenario-pre-run.yaml
      - ^playbooks/install_nftables.yaml
      - ^playbooks/multinode-setup.yaml
      - ^playbooks/prepare-ovn-multinode.yaml
      - ^roles/add_mariadb_repo/.*$
      - ^roles/nftables/.*$
      - ^rally-jobs/.*$
      - ^zuul.d/(?!(project)).*\.yaml

- 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-functional-with-uwsgi-fips
    parent: neutron-functional-with-uwsgi
    nodeset: devstack-single-node-centos-8-stream
    description: |
      Functional testing for a FIPS enabled Centos 8 system
    vars:
      nslookup_target: 'opendev.org'
      enable_fips: True
      devstack_localrc:
        ISCSI_CHAP_ALGORITHMS: SHA3-256,SHA256
        Q_BUILD_OVS_FROM_GIT: true

- job:
    name: neutron-fullstack-with-uwsgi-fips
    parent: neutron-fullstack-with-uwsgi
    nodeset: devstack-single-node-centos-8-stream
    description: |
      Functional testing for a FIPS enabled Centos 8 system
    vars:
      nslookup_target: 'opendev.org'
      enable_fips: True
      devstack_localrc:
        ISCSI_CHAP_ALGORITHMS: SHA3-256,SHA256
        Q_BUILD_OVS_FROM_GIT: true

- 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
