- project:
    templates:
      - check-requirements
      - openstack-cover-jobs
      - openstack-lower-constraints-jobs
      - openstack-python3-victoria-jobs
      - periodic-stable-jobs
      - publish-openstack-docs-pti
      - release-notes-jobs-python3
    check:
      jobs:
        - openstack-tox-cover:
            voting: false
        - trove-tox-bandit-baseline:
            voting: false
        - trove-tempest:
            voting: false
        - trove-tempest-ipv6-only:
            voting: false
    gate:
      queue: trove
      jobs:
        - trove-tempest:
            voting: false
    experimental:
      jobs:
        - trove-functional-mysql
        - trove-scenario-mysql-single
        - trove-scenario-mysql-multi
        - trove-scenario-mariadb-single
        - trove-scenario-mariadb-multi
    periodic:
      jobs:
        - publish-trove-guest-image-ubuntu-bionic:
            branches:
              - master
        - publish-trove-guest-image-ubuntu-bionic-dev:
            branches:
              - master

- job:
    name: trove-devstack-base
    parent: devstack
    abstract: true
    timeout: 10800
    required-projects:
      - openstack/tempest
      - openstack/diskimage-builder
      - openstack/tripleo-image-elements
      - openstack/trove
      - openstack/trove-dashboard
    vars:
      devstack_services:
        tempest: true
        tls-proxy: false
      devstack_plugins:
        trove: https://opendev.org/openstack/trove
      # NOTE(zhaochao): we have to override the default settings from the
      # the base devstack job about "SERVICE_HOST" and "HOST_IP", as trove
      # guestagent should use public addresses to access the underlying
      # components(MQ and Swift), and the previous devstack-gate jobs didn't
      # set these variables. However we cannot unset variables in job
      # definition, so we just set SERVICE_HOST and HOST_IP to empty strings,
      # and VNCSERVER_PROXYCLIENT_ADDRESS to 127.0.0.1 instead.
      devstack_localrc:
        SERVICE_HOST: ''
        HOST_IP: ''
        VNCSERVER_PROXYCLIENT_ADDRESS: 127.0.0.1
        USE_PYTHON3: True
    run: playbooks/trove-devstack-base.yaml
    irrelevant-files:
      - ^.*\.rst$
      - ^api-ref/.*$
      - ^doc/.*$
      - ^releasenotes/.*$
      - ^tools/.*$
      - ^trove/hacking/.*$
      - ^trove/tests/unittests/.*$

- job:
    name: trove-fakemodetests-base
    parent: openstack-tox-py36
    abstract: true
    irrelevant-files:
      - ^.*\.rst$
      - ^api-ref/.*$
      - ^contrib/.*$
      - ^doc/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^tools/.*$
      - ^trove/hacking/.*$
      - ^trove/tests/api/.*$
      - ^trove/tests/db/.*$
      - ^trove/tests/scenario/.*$
      - ^trove/tests/unittests/.*$

- job:
    name: trove-functional-mysql
    parent: trove-devstack-base
    vars:
      devstack_localrc:
        TROVE_RESIZE_TIME_OUT: 1800
      trove_resize_time_out: 1800
      trove_test_datastore: 'mysql'
      trove_test_group: 'mysql'
      trove_test_datastore_version: '5.7.29'

- job:
    name: trove-functional-mysql-nondev
    parent: trove-devstack-base
    vars:
      devstack_localrc:
        TROVE_RESIZE_TIME_OUT: 1800
        TROVE_NON_DEV_IMAGE_URL: https://tarballs.opendev.org/openstack/trove/images/trove-master-mysql-ubuntu-xenial.qcow2
      trove_resize_time_out: 1800
      trove_test_datastore: 'mysql'
      trove_test_group: 'mysql'
      trove_test_datastore_version: '5.7.29'

- job:
    name: trove-scenario-cassandra-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: cassandra
      trove_test_group: cassandra-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-cassandra-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: cassandra
      trove_test_group: cassandra-supported-multi
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-couchdb-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: couchdb
      trove_test_group: couchdb-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-couchbase-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: couchbase
      trove_test_group: couchbase-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-mariadb-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: mariadb
      trove_test_group: mariadb-supported-single
      trove_test_datastore_version: 10.4.12
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-mariadb-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: mariadb
      trove_test_group: mariadb-supported-multi
      trove_test_datastore_version: 10.4.12
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-mysql-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: mysql
      trove_test_group: mysql-supported-single
      trove_test_datastore_version: 5.7.29

- job:
    name: trove-scenario-mysql-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: mysql
      trove_test_group: mysql-supported-multi
      trove_test_datastore_version: 5.7.29

- job:
    name: trove-scenario-percona-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: percona
      trove_test_group: percona-supported-multi
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-percona-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: percona
      trove_test_group: percona-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-postgresql-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: postgresql
      trove_test_group: postgresql-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-postgresql-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: postgresql
      trove_test_group: postgresql-supported-multi
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-pxc-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: pxc
      trove_test_group: pxc-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-pxc-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: pxc
      trove_test_group: pxc-supported-multi
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-redis-single
    parent: trove-devstack-base
    vars:
      trove_test_datastore: redis
      trove_test_group: redis-supported-single
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-scenario-redis-multi
    parent: trove-devstack-base
    vars:
      trove_test_datastore: redis
      trove_test_group: redis-supported-multi
      devstack_localrc:
        TROVE_ENABLE_IMAGE_BUILD: false

- job:
    name: trove-tox-bandit-baseline
    parent: openstack-tox
    timeout: 2400
    vars:
      tox_envlist: bandit-baseline
    required-projects:
      - openstack/requirements
    irrelevant-files:
      - ^.*\.rst$
      - ^.*\.txt$
      - ^api-ref/.*$
      - ^contrib/.*$
      - ^doc/.*$
      - ^etc/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^tools/.*$
      - ^trove/hacking/.*$
      - ^trove/tests/scenario/.*$
      - ^trove/tests/unittests/.*$

- job:
    name: trove-tempest
    parent: devstack-tempest
    timeout: 7800
    required-projects: &base_required_projects
      - openstack/trove
      - openstack/trove-tempest-plugin
      - openstack/tempest
    irrelevant-files:
      - ^.*\.rst$
      - ^api-ref/.*$
      - ^doc/.*$
      - ^etc/.*$
      - ^releasenotes/.*$
    vars: &base_vars
      tox_envlist: all
      tempest_concurrency: 2
      devstack_localrc:
        TEMPEST_PLUGINS: /opt/stack/trove-tempest-plugin
        USE_PYTHON3: true
      devstack_local_conf:
        post-config:
          $TROVE_CONF:
            DEFAULT:
              usage_timeout: 1800
      devstack_plugins:
        trove: https://opendev.org/openstack/trove.git
      devstack_services:
        etcd3: false
        tls-proxy: false
        ceilometer-acentral: false
        ceilometer-acompute: false
        ceilometer-alarm-evaluator: false
        ceilometer-alarm-notifier: false
        ceilometer-anotification: false
        ceilometer-api: false
        ceilometer-collector: false
        cinder: true
        c-sch: true
        c-api: true
        c-vol: true
        c-bak: false
        swift: true
        s-account: true
        s-container: true
        s-object: true
        s-proxy: true
        tempest: true
      tempest_test_regex: ^trove_tempest_plugin\.tests

- job:
    name: publish-trove-guest-image
    parent: publish-openstack-artifacts
    run: playbooks/image-build/run.yaml
    post-run: playbooks/image-build/post.yaml
    required-projects:
      - openstack/diskimage-builder
      - openstack/trove
      - openstack/tripleo-image-elements

- job:
    name: publish-trove-guest-image-ubuntu-bionic
    parent: publish-trove-guest-image
    description: |
      Build and publish Ubuntu Bionic based Trove guest image to
      tarballs.openstack.org.
    vars:
      guest_os: ubuntu
      guest_os_release: bionic
      guest_username: ubuntu
      branch: master
      dev_mode: false
      image_suffix: ""

- job:
    name: publish-trove-guest-image-ubuntu-bionic-dev
    parent: publish-trove-guest-image
    description: |
      Build and publish Ubuntu Xenial based Trove guest image to
      tarballs.openstack.org.
    vars:
      guest_os: ubuntu
      guest_os_release: bionic
      guest_username: ubuntu
      branch: master
      dev_mode: true
      image_suffix: "-dev"