---

- job:
    name: devstack-tobiko-base
    parent: devstack
    abstract: true
    description: |
      Base Devstack Tobiko Plugin job.

      This job provides the base for both the single and multi-node
      test setup. To run a multi-node test inherit from devstack-tobiko
      job and set the nodeset to a multi-node one.
    required-projects:
      - openstack/devstack-gate
      - openstack/heat
      - openstack/neutron
      - openstack/requirements
      - x/devstack-plugin-tobiko
      - x/tobiko
    roles:
      - zuul: x/tobiko
    timeout: 10800
    vars:
      devstack_localrc:
        MULTI_HOST: 0
        LOG_COLOR: false
        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
        TOBIKO_NEUTRON_IPV4_DNS_NAMESERVERS:
          "{{ ipv4_dns_nameservers | join(',') }}"
        TOBIKO_NEUTRON_IPV6_DNS_NAMESERVERS:
          "{{ ipv6_dns_nameservers | join(',') }}"
      devstack_plugins:
        heat: https://opendev.org/openstack/heat.git
        neutron: https://opendev.org/openstack/neutron.git
        devstack-plugin-tobiko: https://opendev.org/x/devstack-plugin-tobiko.git
      devstack_services:
        heat: true
        h-api: true
        h-api-cfn: true
        h-eng: true
        n-cpu: true
        # NOTE(slaweq): we need to enable it as "legacy" service because for
        # Fedora job it has to be disabled. If it would be disabled as
        # "neutron-dns: false" then it devstack would consider that
        # neutron-legacy isn't used and would not load proper files
        q-dns: true
        # see bug #1860753 (https://bugs.launchpad.net/devstack/+bug/1860753)
        memory_tracker: false
        neutron-qos: true
        neutron-segments: true
        neutron-trunk: true
        neutron-uplink-status-propagation: true
        tempest: false
        tls-proxy: false
        # NOTE(slaweq): Swift can't run with python3 currently
        s-account: false
        s-container: false
        s-object: false
        s-proxy: false
        # NOTE(slaweq): without Swift, c-bak cannot run (in the Gate at least)
        c-bak: false
      devstack_local_conf:
        post-config:
          $NEUTRON_CONF:
            QUOTAS:
              quota_router: 100
              quota_floatingip: 500
              quota_security_group: 100
              quota_security_group_rule: 1000
          $NOVA_CONF:
            quota:
              instances: 20
      ipv4_dns_nameservers:
        - 1.0.0.1
        - 8.8.8.8
      ipv6_dns_nameservers: []
      zuul_copy_output:
        '{{ stage_dir }}/stackviz': logs
      extensions_to_txt:
        conf: true
        log: true
        yaml: true
        yml: true
      test_log_debug: true
      test_case_timeout: 1800
      requirements_dir: >-
        {{ ansible_user_dir }}/src/opendev.org/openstack/requirements
      upper_constraints_file: '{{ requirements_dir }}/upper-constraints.txt'

    pre-run: playbooks/devstack/pre.yaml
    run: playbooks/devstack/run.yaml
    post-run: playbooks/devstack/post.yaml
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/
      - ^infrared_plugin/
      - ^releasenotes/
      - ^report/
      - ^tobiko/tests/unit/


- job:
    name: devstack-tobiko-octavia
    parent: devstack-tobiko-base
    abstract: true
    description: |
      Base Tobiko devstack job to be used with Octavia.

    required-projects:
      - openstack/barbican
      - openstack/diskimage-builder
      - openstack/octavia
      - openstack/octavia-lib
      - openstack/python-barbicanclient
      - openstack/tripleo-image-elements
    vars:
      devstack_services:
        # Octavia
        octavia: true
        o-cw: true
        o-hk: true
        o-hm: true
        o-api: true
      zuul_copy_output:
        '/var/log/dib-build/': logs
        '/var/log/octavia-tenant-traffic.log': logs
        '/var/log/octavia-amphora.log': logs
      extensions_to_txt:
        conf: true
        log: true
        yaml: true
        yml: true


- job:
    name: devstack-tobiko
    parent: devstack-tobiko-octavia
    abstract: true


- job:
    name: devstack-tobiko-gate
    parent: devstack-tobiko
    description: |
      Tobiko devstack job for gating Tobiko changes.
    nodeset: openstack-single-node-focal
    voting: true
    vars:
      test_workflow: gate
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/
      - ^infrared_plugin/
      - ^releasenotes/
      - ^report/
      - ^tobiko/tests/faults/


- job:
    name: devstack-tobiko-gate-centos
    parent: devstack-tobiko-gate
    nodeset: devstack-single-node-centos-8
    voting: false


- job:
    name: devstack-tobiko-gate-ubuntu
    parent: devstack-tobiko-gate
    nodeset: openstack-single-node-focal
    voting: false


- job:
    name: devstack-tobiko-multinode
    parent: devstack-tobiko
    abstract: true
    description: Base DevStack Tobiko job with multinode.
    pre-run: playbooks/multinode-setup.yaml
    vars:
      topology: multinode
      devstack_localrc:
        ENABLE_FILE_INJECTION: true
        MULTI_HOST: 1
      devstack_services:
        n-cpu: false
    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
          q-agt: true
          q-l3: true
          q-meta: true
          tls-proxy: false


- job:
    name: devstack-tobiko-faults
    parent: devstack-tobiko-multinode
    abstract: true
    description: |
      Base Tobiko devstack job to execute scenario+faults+scenario test cases.
    vars:
      test_workflow: faults
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/
      - ^infrared_plugin/
      - ^releasenotes/
      - ^report/
      - ^tobiko/tests/functional/
      - ^tobiko/tests/unit/


- job:
    name: devstack-tobiko-faults-centos
    parent: devstack-tobiko-faults
    nodeset: devstack-tobiko-multinode-centos
    voting: false


- job:
    name: devstack-tobiko-faults-ubuntu
    parent: devstack-tobiko-faults
    nodeset: devstack-tobiko-multinode-ubuntu
    voting: false
    vars:
      devstack_services:
        tls-proxy: true
    group-vars:
      subnode:
        devstack_services:
          tls-proxy: true