- job:
    name: glance-code-constants-check
    parent: tox
    description: |
      Tests to catch when code constants have gotten out of sync.
    vars:
      tox_envlist: gateonly
    irrelevant-files:
      - ^(test-|)requirements.txt$
      - ^lower-constraints.txt$
      - ^.*\.rst$
      - ^api-ref/.*$
      - ^doc/.*$
      - ^etc/.*$
      - ^releasenotes/.*$
      - ^setup.cfg$
      - ^tox.ini$
      - ^\.zuul\.yaml$

- job:
    name: glance-tox-oslo-tips-base
    parent: tox
    abstract: true
    nodeset: ubuntu-bionic
    timeout: 2400
    description: Abstract job for Glance vs. oslo libraries
    # NOTE(rosmaita): we only need functional test jobs, oslo is
    # already running periodic jobs using our unit tests.  Those
    # jobs are configured for glance in openstack/project-config/
    # zuul.d/projects.yaml using the template 'periodic-jobs-with-oslo-master'
    # which is defined in openstack/openstack-zuul-jobs/zuul.d/
    # project-templates.yaml; the jobs the template refers to are
    # defined in openstack/openstack-zuul-jobs/zuul.d/jobs.yaml
    required-projects:
      - name: openstack/debtcollector
      - name: openstack/futurist
      - name: openstack/oslo.concurrency
      - name: openstack/oslo.config
      - name: openstack/oslo.context
      - name: openstack/oslo.db
      - name: openstack/oslo.i18n
      - name: openstack/oslo.log
      - name: openstack/oslo.messaging
      - name: openstack/oslo.middleware
      - name: openstack/oslo.policy
      - name: openstack/oslo.utils
      - name: openstack/osprofiler
      - name: openstack/stevedore
      - name: openstack/taskflow

- job:
    name: glance-tox-functional-py38-oslo-tips
    parent: glance-tox-oslo-tips-base
    description: |
      Glance py38 functional tests vs. oslo libraries masters
    vars:
      python_version: 3.8
      tox_envlist: functional-py38

- job:
    name: glance-tox-functional-py36-oslo-tips
    parent: glance-tox-oslo-tips-base
    description: |
      Glance py36 functional tests vs. oslo libraries masters
    vars:
      python_version: 3.6
      tox_envlist: functional-py36

- job:
    name: glance-tox-keystone-tips-base
    parent: tox
    abstract: true
    nodeset: ubuntu-bionic
    timeout: 2400
    description: Abstract job for Glance vs. keystone
    required-projects:
      - name: openstack/keystoneauth
      - name: openstack/keystonemiddleware
      - name: openstack/python-keystoneclient

- job:
    name: glance-tox-py38-keystone-tips
    parent: glance-tox-keystone-tips-base
    description: |
      Glance py38 unit tests vs. keystone masters
    vars:
      python_version: 3.8
      tox_envlist: py38

- job:
    name: glance-tox-py36-keystone-tips
    parent: glance-tox-keystone-tips-base
    description: |
      Glance py36 unit tests vs. keystone masters
    vars:
      python_version: 3.6
      tox_envlist: py36

- job:
    name: glance-tox-functional-py38-keystone-tips
    parent: glance-tox-keystone-tips-base
    description: |
      Glance py38 functional tests vs. keystone masters
    vars:
      python_version: 3.8
      tox_envlist: functional-py38

- job:
    name: glance-tox-functional-py36-keystone-tips
    parent: glance-tox-keystone-tips-base
    description: |
      Glance py36 functional tests vs. keystone masters
    vars:
      python_version: 3.6
      tox_envlist: functional-py36

- job:
    name: glance-tox-glance_store-tips-base
    parent: tox
    abstract: true
    nodeset: ubuntu-bionic
    timeout: 2400
    description: Abstract job for Glance vs. glance_store
    required-projects:
      - name: openstack/glance_store

- job:
    name: glance-tox-py38-glance_store-tips
    parent: glance-tox-glance_store-tips-base
    description: |
      Glance py38 unit tests vs. glance_store master
    vars:
      python_version: 3.8
      tox_envlist: py38

- job:
    name: glance-tox-py36-glance_store-tips
    parent: glance-tox-glance_store-tips-base
    description: |
      Glance py36 unit tests vs. glance_store master
    vars:
      python_version: 3.6
      tox_envlist: py36

- job:
    name: glance-tox-functional-py38-glance_store-tips
    parent: glance-tox-glance_store-tips-base
    description: |
      Glance py38 functional tests vs. glance_store master
    vars:
      python_version: 3.8
      tox_envlist: functional-py38

- job:
    name: glance-tox-functional-py36-glance_store-tips
    parent: glance-tox-glance_store-tips-base
    description: |
      Glance py36 functional tests vs. glance_store master
    vars:
      python_version: 3.6
      tox_envlist: functional-py36

- job:
    name: glance-tox-cursive-tips-base
    parent: tox
    abstract: true
    nodeset: ubuntu-bionic
    timeout: 2400
    description: Abstract job for Glance vs. cursive and related libs
    required-projects:
      - name: x/cursive
      - name: openstack/python-barbicanclient
      - name: openstack/castellan

- job:
    name: glance-tox-py38-cursive-tips
    parent: glance-tox-cursive-tips-base
    description: |
      Glance py38 unit tests vs. cursive (and related libs) master
    vars:
      python_version: 3.8
      tox_envlist: py38

- job:
    name: glance-tox-py36-cursive-tips
    parent: glance-tox-cursive-tips-base
    description: |
      Glance py36 unit tests vs. cursive (and related libs) master
    vars:
      python_version: 3.6
      tox_envlist: py36

- job:
    name: glance-tox-functional-py38-cursive-tips
    parent: glance-tox-cursive-tips-base
    description: |
      Glance py38 functional tests vs. cursive (and related libs) master
    vars:
      python_version: 3.8
      tox_envlist: functional-py38

- job:
    name: glance-tox-functional-py36-cursive-tips
    parent: glance-tox-cursive-tips-base
    description: |
      Glance py36 functional tests vs. cursive (and related libs) master
    vars:
      python_version: 3.6
      tox_envlist: functional-py36

- job:
    name: tempest-integrated-storage-import-workflow
    parent: tempest-integrated-storage
    description: |
      The regular tempest-integrated-storage job but with glance metadata injection
    post-run: playbooks/post-check-metadata-injection.yaml
    vars:
      devstack_localrc:
        GLANCE_STANDALONE: True
        GLANCE_USE_IMPORT_WORKFLOW: True
      devstack_local_conf:
        post-config:
          $GLANCE_IMAGE_IMPORT_CONF:
            image_import_opts:
              image_import_plugins: "['inject_image_metadata']"
            inject_metadata_properties:
              ignore_user_roles:
              inject: |
                "glance_devstack_test":"doyouseeme?"

- job:
    name: tempest-integrated-storage-wsgi-import
    parent: tempest-integrated-storage
    description: |
      The regular tempest-integrated-storage job but with glance in wsgi mode
    vars:
      devstack_localrc:
        GLANCE_STANDALONE: False
        GLANCE_USE_IMPORT_WORKFLOW: True
      devstack_local_conf:
        post-config:
          $GLANCE_API_CONF:
            DEFAULT:
              enabled_import_methods: "[\"copy-image\", \"glance-direct\"]"
            wsgi:
              python_interpreter: /usr/bin/python3
          $GLANCE_IMAGE_IMPORT_CONF:
            image_import_opts:
              image_import_plugins: "['image_conversion']"
            image_conversion:
              output_format: raw

- project:
    templates:
      - check-requirements
      - integrated-gate-storage
      - openstack-lower-constraints-jobs
      - openstack-python3-victoria-jobs
      - periodic-stable-jobs
      - publish-openstack-docs-pti
      - release-notes-jobs-python3
    check:
      jobs:
        - openstack-tox-functional-py36
        - openstack-tox-functional-py38
        - glance-code-constants-check
        - devstack-plugin-ceph-tempest-py3:
            voting: false
            irrelevant-files: &tempest-irrelevant-files
              - ^(test-|)requirements.txt$
              - ^lower-constraints.txt$
              - ^.*\.rst$
              - ^api-ref/.*$
              - ^glance/hacking/.*$
              - ^glance/locale/.*$
              - ^glance/tests/.*$
              - ^doc/.*$
              - ^releasenotes/.*$
              - ^tools/.*$
              - ^tox.ini$
              - ^\.zuul\.yaml$
        - tempest-integrated-storage:
            irrelevant-files: *tempest-irrelevant-files
        - tempest-integrated-storage-import-workflow:
            irrelevant-files: *tempest-irrelevant-files
        - tempest-integrated-storage-wsgi-import:
            irrelevant-files: *tempest-irrelevant-files
        - grenade:
            irrelevant-files: *tempest-irrelevant-files
        - tempest-ipv6-only:
            irrelevant-files: *tempest-irrelevant-files

    gate:
      jobs:
        - openstack-tox-functional-py36
        - openstack-tox-functional-py38
        - tempest-integrated-storage:
            irrelevant-files: *tempest-irrelevant-files
        - tempest-integrated-storage-import-workflow:
            irrelevant-files: *tempest-irrelevant-files
        - grenade:
            irrelevant-files: *tempest-irrelevant-files
        - tempest-ipv6-only:
            irrelevant-files: *tempest-irrelevant-files
    experimental:
      jobs:
        - glance-tox-py38-glance_store-tips
        - glance-tox-py36-glance_store-tips
        - glance-tox-functional-py38-glance_store-tips
        - glance-tox-functional-py36-glance_store-tips
        - barbican-simple-crypto-devstack-tempest
        - grenade-multinode
        - tempest-pg-full:
            irrelevant-files: *tempest-irrelevant-files
        - tempest-full-py3-opensuse15:
            irrelevant-files: *tempest-irrelevant-files
    periodic:
      jobs:
        # NOTE(rosmaita): we only want the "tips" jobs to be run against
        # master, hence the 'branches' qualifiers below.  Without them, when
        # a stable branch is cut, the tests would be run against the stable
        # branch as well, which is pointless because these libraries are
        # frozen (more or less) in the stable branches.
        #
        # The "tips" jobs can be removed from the stable branch .zuul.yaml
        # files if someone is so inclined, but that would require manual
        # maintenance, so we do not do it by default.  Another option is
        # to define these jobs in the openstack/project-config repo.
        # That would make us less agile in adjusting these tests, so we
        # aren't doing that either.
        - glance-tox-functional-py38-oslo-tips:
            branches: master
        - glance-tox-functional-py36-oslo-tips:
            branches: master
        - glance-tox-py38-keystone-tips:
            branches: master
        - glance-tox-py36-keystone-tips:
            branches: master
        - glance-tox-functional-py38-keystone-tips:
            branches: master
        - glance-tox-functional-py36-keystone-tips:
            branches: master
        - glance-tox-py38-glance_store-tips:
            branches: master
        - glance-tox-py36-glance_store-tips:
            branches: master
        - glance-tox-functional-py38-glance_store-tips:
            branches: master
        - glance-tox-functional-py36-glance_store-tips:
            branches: master
        - glance-tox-py38-cursive-tips:
            branches: master
        - glance-tox-py36-cursive-tips:
            branches: master
        - glance-tox-functional-py38-cursive-tips:
            branches: master
        - glance-tox-functional-py36-cursive-tips:
            branches: master