---
- job:
    name: osc-tox-unit-tips
    parent: openstack-tox
    description: |
      Run unit tests for OpenStackClient with master branch of important libs.

      Takes advantage of the base tox job's install-siblings feature.
    required-projects:
      - openstack/cliff
      - openstack/keystoneauth
      - openstack/openstacksdk
      - openstack/osc-lib
      - openstack/python-openstackclient
    vars:
      # Set work dir to openstackclient so that if it's triggered by one of the
      # other repos the tests will run in the same place
      zuul_work_dir: src/opendev.org/openstack/python-openstackclient

- job:
    name: osc-tox-py38-tips
    parent: openstack-tox-py38
    description: |
      Run unit tests for OpenStackClient with master branch of important libs.

      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:
      - openstack/cliff
      - openstack/keystoneauth
      - openstack/openstacksdk
      - openstack/osc-lib
      - openstack/python-openstackclient
    vars:
      # Set work dir to openstackclient so that if it's triggered by one of the
      # other repos the tests will run in the same place
      zuul_work_dir: src/opendev.org/openstack/python-openstackclient

- job:
    name: osc-tox-py310-tips
    parent: openstack-tox-py310
    description: |
      Run unit tests for OpenStackClient with master branch of important libs.

      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:
      - openstack/cliff
      - openstack/keystoneauth
      - openstack/openstacksdk
      - openstack/osc-lib
      - openstack/python-openstackclient
    vars:
      # Set work dir to openstackclient so that if it's triggered by one of the
      # other repos the tests will run in the same place
      zuul_work_dir: src/opendev.org/openstack/python-openstackclient

- job:
    name: osc-functional-devstack
    parent: devstack-tox-functional
    description: |
      Run functional tests for OpenStackClient.
    timeout: 7800
    irrelevant-files:
      - ^.*\.rst$
      - ^doc/.*$
      - ^releasenotes/.*$
    required-projects:
      - openstack/python-openstackclient
    vars:
      devstack_localrc:
        LIBS_FROM_GIT: python-openstackclient
        # NOTE(dtroyer): Functional tests need a bit more volume headroom
        VOLUME_BACKING_FILE_SIZE: 20G
        Q_AGENT: openvswitch
        Q_ML2_TENANT_NETWORK_TYPE: vxlan
        Q_ML2_PLUGIN_MECHANISM_DRIVERS: openvswitch
      devstack_plugins:
        # NOTE(amotoki): Some neutron features are enabled by devstack plugin
        neutron: https://opendev.org/openstack/neutron
      devstack_services:
        ceilometer-acentral: false
        ceilometer-acompute: false
        ceilometer-alarm-evaluator: false
        ceilometer-alarm-notifier: false
        ceilometer-anotification: false
        ceilometer-api: false
        ceilometer-collector: false
        s-account: true
        s-container: true
        s-object: true
        s-proxy: true
        # Disable OVN services
        br-ex-tcpdump: false
        br-int-flows: false
        ovn-controller: false
        ovn-northd: false
        ovs-vswitchd: false
        ovsdb-server: false
        q-ovn-metadata-agent: false
        # Neutron services
        q-agt: true
        q-dhcp: true
        q-l3: true
        q-meta: true
        neutron-network-segment-range: true
        neutron-segments: true
        q-metering: true
        q-qos: true
        neutron-tag-ports-during-bulk-creation: true
        neutron-conntrack-helper: true
        neutron-ndp-proxy: true
        q-trunk: true
      osc_environment:
        PYTHONUNBUFFERED: 'true'
        OS_CLOUD: devstack-admin
      tox_envlist: functional
      zuul_work_dir: src/opendev.org/openstack/python-openstackclient

- job:
    name: osc-functional-devstack-tips
    parent: osc-functional-devstack
    description: |
      Run functional tests for OpenStackClient with master branch of important libs.

      Takes advantage of the base tox job's install-siblings feature.
    timeout: 7800
    required-projects:
      - openstack/cliff
      - openstack/keystoneauth
      - openstack/openstacksdk
      - openstack/osc-lib
      - openstack/python-openstackclient
    vars:
      devstack_localrc:
        LIBS_FROM_GIT: python-openstackclient,openstacksdk,osc-lib,cliff
      tox_envlist: functional
      tox_install_siblings: true

- secret:
    name: osc-dockerhub
    data:
      username: osclientzuul
      password: !encrypted/pkcs1-oaep
        - LbIZjJiVstRVXMpoLQ3+/JcNB6lKVUWJXXo5+Outf+PKAaO7mNnv8XLiFMKnJ6ftopLyu
          hWbX9rA+NddvplLQkf1xxkh7QBBU8PToLr58quI2SENUclt4tpjxbZfZu451kFSNJvNvR
          E58cHHpfJZpyRnS2htXmN/Qy24gbV2w7CQxSZD2YhlcrerD8uQ8rWEnlY1wcJEaEGomtS
          ZTGxsdK2TsZC2cd4b7TG7+xbl2i+hjADzwSQAgUzlLlwuG71667+IWk4SOZ7OycJTv9NN
          ZTak8+CGfiMKdmsxZ1Z8uD7DC+RIklDjMWyly6zuhWzfhOmsmU0CesR50moodRUvbK79p
          NZM8u0hBex5cl2EpUEwJL/FSPJXUhDMPoMoTZT/SAuXf25R9eZ9JGrKsIAlmVhpl8ifoE
          8TpPyvIHGS3YelTQjhqOX0wGb9T4ZauQCcI5Ajzy9NuCTyD9xxme9OX1zz7gMACRnVHvz
          q7U7Ue90MnmGH6E2SgKjIZhyzy9Efwb7JUvH1Zb3hlrjCjEhwi9MV5FnABTEeXyYwE10s
          3o/KZg2zvdWkVG6x0dEkjpoQaNuaB7T2Na7Sm421n/z3LCzhiQGuTUjENnL6cMEtuA6Pp
          BfI5+Qlg7HMwkBXNB73EPfWHzbCR3VNrzGYTy9FvhGud0/cXsuBXgps4WH63ic=

- job:
    name: osc-build-image
    parent: opendev-build-docker-image
    description: Build Docker images.
    allowed-projects: openstack/python-openstackclient
    requires:
      - python-builder-3.11-bookworm-container-image
      - python-base-3.11-bookworm-container-image
    provides: osc-container-image
    vars: &osc_image_vars
      docker_images:
        - context: .
          repository: osclient/python-openstackclient

- job:
    name: osc-upload-image
    parent: opendev-upload-docker-image
    description: Build Docker images and upload to Docker Hub.
    allowed-projects: openstack/python-openstackclient
    requires:
      - python-builder-3.11-bookworm-container-image
      - python-base-3.11-bookworm-container-image
    provides: osc-container-image
    secrets:
      - name: docker_credentials
        secret: osc-dockerhub
        pass-to-parent: true
    vars: *osc_image_vars

- job:
    name: osc-promote-image
    parent: opendev-promote-docker-image
    allowed-projects: openstack/python-openstackclient
    description: Promote previously uploaded Docker images.
    secrets:
      - name: docker_credentials
        secret: osc-dockerhub
        pass-to-parent: true
    nodeset:
      nodes: []
    vars: *osc_image_vars

- project-template:
    name: osc-tox-unit-tips
    check:
      jobs:
        - osc-tox-py38-tips
        - osc-tox-py310-tips
    gate:
      jobs:
        - osc-tox-py38-tips
        - osc-tox-py310-tips

- project:
    templates:
      - openstackclient-plugin-jobs
      - osc-tox-unit-tips
      - openstack-cover-jobs
      - openstack-python3-jobs
      - publish-openstack-docs-pti
      - check-requirements
      - release-notes-jobs-python3
    check:
      jobs:
        - osc-build-image
        - osc-functional-devstack
        - osc-functional-devstack-tips:
            # The functional-tips job only tests the latest and shouldn't be run
            # on the stable branches
            branches: ^master$
    gate:
      jobs:
        - osc-upload-image
        - osc-functional-devstack
    promote:
      jobs:
        - osc-promote-image
