- job:
    name: puppet-beaker-rspec-infra-system-config
    parent: puppet-beaker-rspec-infra
    vars:
      project_src_dir: "{{ zuul.project.src_dir }}/modules/openstack_project"

- job:
    name: puppet-beaker-rspec-infra-centos-7-system-config
    parent: puppet-beaker-rspec-centos-7-infra
    vars:
      project_src_dir: "{{ zuul.project.src_dir }}/modules/openstack_project"

- job:
    name: puppet-beaker-rspec-puppet-4-infra-system-config
    parent: puppet-beaker-rspec-puppet-4-infra
    vars:
      project_src_dir: "{{ zuul.project.src_dir }}/modules/openstack_project"

- job:
    name: puppet-beaker-rspec-puppet-4-centos-7-infra-system-config
    parent: puppet-beaker-rspec-puppet-4-infra
    vars:
      project_src_dir: "{{ zuul.project.src_dir }}/modules/openstack_project"

# Role integration jobs.  These test the top-level generic roles/*
# under Zuul.  The range of platforms should be the same as those for
# openstack-zuul-jobs.
#
# NOTE(ianw): 2018-08 have left off Fedora & OpenSUSE because
#  no roles currently run on them.
- job:
    name: system-config-zuul-role-integration
    description: |
      Test roles provided by system-config with Zuul
    abstract: true
    parent: base
    run: roles-test/base.yaml
    files:
      - roles/.*

- job:
    name: system-config-zuul-role-integration-centos-7
    parent: system-config-zuul-role-integration
    nodeset:
      nodes:
        - name: base
          label: centos-7
        - name: puppet4
          label: centos-7
      groups:
        - name: puppet3
          nodes:
            - base

- job:
    name: system-config-zuul-role-integration-trusty
    parent: system-config-zuul-role-integration
    nodeset:
      nodes:
        - name: base
          label: ubuntu-trusty
        - name: puppet4
          label: ubuntu-trusty
      groups:
        - name: puppet3
          nodes:
            - base

- job:
    name: system-config-zuul-role-integration-xenial
    parent: system-config-zuul-role-integration
    nodeset:
      nodes:
        - name: base
          label: ubuntu-xenial
        - name: puppet4
          label: ubuntu-xenial
      groups:
        - name: puppet3
          nodes:
            - base

- job:
    name: system-config-zuul-role-integration-bionic
    parent: system-config-zuul-role-integration
    nodeset:
      nodes:
        - name: base
          label: ubuntu-bionic
      groups:
        - name: puppet5
          nodes:
            - base

- job:
    name: system-config-zuul-role-integration-debian-stable
    parent: system-config-zuul-role-integration
    nodeset:
      nodes:
        - name: base
          label: debian-stretch

- project-template:
    name: system-config-zuul-role-integration
    check:
      jobs:
        - system-config-zuul-role-integration-centos-7
        - system-config-zuul-role-integration-trusty
        - system-config-zuul-role-integration-xenial
        - system-config-zuul-role-integration-bionic
        - system-config-zuul-role-integration-debian-stable
    gate:
      jobs:
        - system-config-zuul-role-integration-centos-7
        - system-config-zuul-role-integration-trusty
        - system-config-zuul-role-integration-xenial
        - system-config-zuul-role-integration-bionic
        - system-config-zuul-role-integration-debian-stable

- job:
    name: system-config-run
    description: |
      Run the "base" playbook for system-config hosts.

      This is a parent job designed to be inherited.
    abstract: true
    pre-run: playbooks/zuul/run-base-pre.yaml
    run: playbooks/zuul/run-base.yaml
    post-run: playbooks/zuul/run-base-post.yaml
    vars:
      install_ansible_ara_enable: true

- job:
    name: system-config-run-base
    parent: system-config-run
    description: |
      Run the "base" playbook on each of the node types
      currently in use.
    nodeset:
      nodes:
        - name: bridge.openstack.org
          label: ubuntu-bionic
        - name: trusty
          label: ubuntu-trusty
        - name: xenial
          label: ubuntu-xenial
        - name: bionic
          label: ubuntu-bionic
        - name: centos7
          label: centos-7
    host-vars:
      trusty:
        ansible_python_interpreter: python2
      centos7:
        ansible_python_interpreter: python2
    files:
      - .zuul.yaml
      - playbooks/.*
      - roles/.*
      - testinfra/.*

- job:
    name: system-config-run-base-ansible-devel
    parent: system-config-run-base
    description: |
      Run the base playbook with the latest ansible
    required-projects:
      - name: github.com/ansible/ansible
        override-checkout: devel
      - name: openstack/openstacksdk
      - name: openstack/ara
    vars:
      bridge_ansible_name: '{{ ansible_user_dir}}/src/github.com/ansible/ansible'
      bridge_ansible_version: null
      bridge_openstacksdk_name: '{{ ansible_user_dir }}/src/git.openstack.org/openstack/openstacksdk'
      bridge_openstacksdk_version: null
      bridge_ara_name: '{{ ansible_user_dir}}/src/git.openstack.org/openstack/ara'
      bridge_ara_version: null

- job:
    name: system-config-run-eavesdrop
    parent: system-config-run
    description: |
      Run the playbook for an eavesdrop server.
    nodeset:
      nodes:
        - name: bridge.openstack.org
          label: ubuntu-bionic
        - name: eavesdrop01.openstack.org
          label: ubuntu-xenial
    files:
      - .zuul.yaml
      - playbooks/group_vars/eavesdrop.yaml
      - testinfra/test_eavesdrop.py

- job:
    name: system-config-run-nodepool
    parent: system-config-run
    description: |
      Run the playbook for nodepool.
    nodeset:
      nodes:
        - name: bridge.openstack.org
          label: ubuntu-bionic
        - name: nl01.openstack.org
          label: ubuntu-xenial
        - name: nb01.openstack.org
          label: ubuntu-xenial
    files:
      - .zuul.yaml
      - playbooks/group_vars/nodepool.yaml
      - playbooks/group_vars/nodepool-builder.yaml
      - playbooks/group_vars/nodepool-launcher.yaml
      - playbooks/roles/configure-openstacksdk/
      - playbooks/templates/clouds/
      - testinfra/test_nodepool.py

- job:
    name: system-config-run-docker
    parent: system-config-run
    description: |
      Test docker installation and setup
    nodeset:
      nodes:
        - name: bridge.openstack.org
          label: ubuntu-bionic
        - name: bionic-docker
          label: ubuntu-bionic
    files:
      - .zuul.yaml
      - playbooks/roles/install-docker
      - testinfra/test_docker.py

- job:
    name: system-config-run-dns
    parent: system-config-run
    description: |
      Run the playbook for dns.
    nodeset:
      nodes:
        - name: bridge.openstack.org
          label: ubuntu-bionic
        - name: adns1.opendev.org
          label: ubuntu-bionic
        - name: ns1.opendev.org
          label: ubuntu-bionic
    files:
      - .zuul.yaml
      - playbooks/group_vars/adns.yaml
      - playbooks/group_vars/dns.yaml
      - ^playbooks/host_vars/(ad)?ns\d+.opendev.org.yaml
      - playbooks/zuul/templates/group_vars/adns.yaml.j2
      - playbooks/zuul/templates/group_vars/ns.yaml.j2
      - playbooks/roles/master-nameserver/
      - playbooks/roles/nameserver/
      - testinfra/test_adns.py
      - testinfra/test_ns.py

- job:
    name: infra-prod-playbook
    description: |
      Run specified playbook against productions hosts.

      This is a parent job designed to be inherited to enabled
      CD deployment of our infrastructure. Set playbook_name to
      specify the playbook relative to
      bridge.openstack.org:/opt/system-config/playbooks
    abstract: true
    run: playbooks/zuul/run-production-playbook.yaml
    vars:
      ansible_forks: 5
    nodeset:
      nodes: []

- job:
    name: infra-prod-zuul_reconfigure
    parent: infra-prod-playbook
    description: |
      Perform a full Zuul reconfiguration.

      This reloads the tenant config file and clears all configuration
      caches.
    vars:
      playbook_name: zuul_reconfigure.yaml

- project:
    templates:
      - system-config-zuul-role-integration
      - infra-puppet-apply-jobs
      - infra-logstash-filter-jobs
      - publish-tox-docs-infra
    check:
      jobs:
        - tox-linters
        - legacy-system-config-puppet-syntax-3
        - puppet-beaker-rspec-infra-system-config
        - puppet-beaker-rspec-infra-centos-7-system-config
        - puppet-beaker-rspec-puppet-4-infra-system-config
        - puppet-beaker-rspec-puppet-4-centos-7-infra-system-config
        - system-config-run-base
        - system-config-run-base-ansible-devel:
            voting: false
        - system-config-run-dns
        - system-config-run-eavesdrop
        - system-config-run-nodepool
        - system-config-run-docker
    gate:
      jobs:
        - tox-linters
        - legacy-system-config-puppet-syntax-3
        - puppet-beaker-rspec-infra-system-config
        - puppet-beaker-rspec-infra-centos-7-system-config
        - puppet-beaker-rspec-puppet-4-infra-system-config
        - puppet-beaker-rspec-puppet-4-centos-7-infra-system-config
        - system-config-run-base
        - system-config-run-dns
        - system-config-run-eavesdrop
        - system-config-run-nodepool
        - system-config-run-docker