# Initial set of jobs that will be extended over time as
# we get things working.
- project:
    templates:
      # The integrated-gate-placement template adds the
      # tempest-integrated-placement and grenade jobs.
      # tempest-integrated-placement runs a subset of tempest tests which are
      # relevant for placement, e.g. it does not run keystone tests.
      - check-requirements
      - integrated-gate-placement
      - openstack-cover-jobs
      - openstack-python3-jobs
      - periodic-stable-jobs
      - publish-openstack-docs-pti
      - release-notes-jobs-python3
    check:
      jobs:
        - openstack-tox-functional-py38
        - openstack-tox-functional-py39
        - openstack-tox-pep8
        - placement-tox-py310-with-sqlalchemy-2x
        - placement-nova-tox-functional-py39
        - placement-nested-perfload:
            voting: false
        - placement-perfload:
            voting: false
        - tempest-integrated-placement:
            # Alias 'gate-irrelevant-files' define the set of irrelevant-files
            # for which integrated testing jobs not required to run. If
            # changes are only to those files then, zuul can skip the
            # integrated testing job to save the infra resources.
            # 'gate-irrelevant-files' should be used for integrated gate
            # jobs only not for any other jobs like functional, unit, doc
            # jobs.
            irrelevant-files: &gate-irrelevant-files
              - ^api-.*$
              - ^.*\.rst$
              - ^.git.*$
              - ^doc/.*$
              - ^placement/tests/.*$
              - ^releasenotes/.*$
              - ^tools/.*$
              - ^tox.ini$
        - grenade:
            irrelevant-files: *gate-irrelevant-files
        - grenade-skip-level:
            irrelevant-files: *gate-irrelevant-files
        - tempest-ipv6-only:
            irrelevant-files: *gate-irrelevant-files
    gate:
      jobs:
        - openstack-tox-functional-py38
        - openstack-tox-functional-py39
        - openstack-tox-pep8
        - placement-nova-tox-functional-py39
        - tempest-integrated-placement:
            irrelevant-files: *gate-irrelevant-files
        - grenade:
            irrelevant-files: *gate-irrelevant-files
        - grenade-skip-level:
            irrelevant-files: *gate-irrelevant-files
        - tempest-ipv6-only:
            irrelevant-files: *gate-irrelevant-files
    periodic-weekly:
      jobs:
        # update the python version when the support runtime for testing changes.
        # we only test the latest version in the periodics as its just a signal
        # that we need to investigate the health of the master branch in the absence
        # of frequent patches.
        - openstack-tox-functional-py39
        - openstack-tox-py39
        - placement-nova-tox-functional-py39
        - tempest-integrated-placement

- job:
    name: placement-tox-py310-with-sqlalchemy-2x
    parent: openstack-tox-py310
    description: |
      Run unit tests with main branch of SQLAlchemy, alembic and oslo.db.
      Takes advantage of the base tox job's install-siblings feature.
    # The job only tests the latest and shouldn't be run on the stable branches
    branches: master
    required-projects:
      - name: github.com/sqlalchemy/sqlalchemy
        override-checkout: main
      - name: github.com/sqlalchemy/alembic
        override-checkout: main
      - name: openstack/oslo.db

- job:
    name: placement-nova-tox-functional-py39
    parent: nova-tox-functional-py39
    description: |
        Run the nova functional tests to confirm that we aren't breaking
        the PlacementFixture.
    vars:
        # 'functional-without-sample-db-tests' tox env is defined in nova tox.ini
        # to skip the api|notification _sample_tests and db-related tests.
        tox_envlist: functional-without-sample-db-tests

- job:
    name: placement-perfload
    parent: base
    description: |
        A simple node on which to run placement with the barest of configs and
        make performance related tests against it.
    required-projects:
        - opendev.org/openstack/placement
    irrelevant-files:
        - ^.*\.rst$
        - ^api-ref/.*$
        - ^doc/.*$
        - ^releasenotes/.*$
        - ^.git.*$
        - ^placement/tests/.*$
        - ^tox.ini$
    run: playbooks/perfload.yaml
    post-run: playbooks/post.yaml

- job:
    name: placement-nested-perfload
    parent: placement-perfload
    description: |
        A simple node on which to run placement with the barest of configs and
        make nested performance related tests against it.
    timeout: 3600
    run: playbooks/nested-perfload.yaml
