# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# Default values for tempest.
# This is a YAML-formatted file.
# Declare name/value pairs to be passed into your templates.
# name: value

---
labels:
  job:
    node_selector_key: openstack-control-plane
    node_selector_value: enabled

images:
  tags:
    dep_check: quay.io/airshipit/kubernetes-entrypoint:latest-ubuntu_focal
    tempest_run_tests: docker.io/openstackhelm/tempest:latest-ubuntu_focal
    ks_user: quay.io/airshipit/heat:2025.1-ubuntu_noble
    image_repo_sync: docker.io/docker:17.07.0
  pull_policy: "IfNotPresent"
  local_registry:
    active: false
    exclude:
      - dep_check
      - image_repo_sync

jobs:
  run_tests:
    backoffLimit: 6
    restartPolicy: OnFailure

pod:
  user:
    tempest:
      uid: 1000
  resources:
    enabled: false
    jobs:
      ks_user:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      run_tests:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"
      image_repo_sync:
        requests:
          memory: "128Mi"
          cpu: "100m"
        limits:
          memory: "1024Mi"
          cpu: "2000m"

dependencies:
  dynamic:
    common:
      local_image_registry:
        jobs:
          - tempest-image-repo-sync
        services:
          - endpoint: node
            service: local_image_registry
  static:
    ks_user:
      services:
      - service: identity
        endpoint: internal
    run_tests:
      jobs:
      - tempest-ks-user
      services:
      - service: identity
        endpoint: internal
    image_repo_sync:
      services:
        - endpoint: internal
          service: local_image_registry

helm3_hook: true

conf:
  script: |
    tempest run --config-file /etc/tempest/tempest.conf -w 4 --smoke
  # The following sections can be used to blacklist and whitelist specific tests.
  # If either section is not empty, it will be used to create an entry in the
  # tempest-etc configmap and will be mounted into the tempest-run-tests pod
  # blacklist:
  #   - (?:tempest\.api\.identity\.admin\.v3\.test_groups\.GroupsV3TestJSON\.test_list_groups)
  #   - (?:tempest\.api\.image\.v2\.test_images\.ListSharedImagesTest\.test_list_images_param_member_status)
  #   - (?:tempest\.scenario\.test_encrypted_cinder_volumes\.TestEncryptedCinderVolumes\.test_encrypted_cinder_volumes_cryptsetup)
  #   - (?:tempest\.scenario\.test_encrypted_cinder_volumes\.TestEncryptedCinderVolumes\.test_encrypted_cinder_volumes_luks)
  #   - (?:tempest\.api\.network\.test_networks\.NetworksIpV6Test\.test_external_network_visibility)
  #   - (?:tempest\.api\.network\.test_networks\.NetworksTest\.test_external_network_visibility)
  #   - (?:tempest\.scenario\.test_network_v6\.TestGettingAddress\.test_dualnet_multi_prefix_slaac)
  #   - (?:tempest\.scenario\.test_network_v6\.TestGettingAddress\.test_dualnet_multi_prefix_dhcpv6_stateless)
  #   - (?:tempest\.scenario\.test_network_basic_ops\.TestNetworkBasicOps\.test_update_router_admin_state)
  #   - (?:tempest\.scenario\.test_network_basic_ops\.TestNetworkBasicOps\.test_router_rescheduling)
  #   - (?:tempest\.scenario\.test_network_basic_ops\.TestNetworkBasicOps\.test_update_instance_port_admin_state)
  # whitelist:
  #   - (?:tempest\.api\.identity\.admin\.v3\.test_groups\.GroupsV3TestJSON\.test_list_groups)
  #   - (?:tempest\.api\.image\.v2\.test_images\.ListSharedImagesTest\.test_list_images_param_member_status)
  #   - (?:tempest\.scenario\.test_encrypted_cinder_volumes\.TestEncryptedCinderVolumes\.test_encrypted_cinder_volumes_cryptsetup)
  #   - (?:tempest\.scenario\.test_encrypted_cinder_volumes\.TestEncryptedCinderVolumes\.test_encrypted_cinder_volumes_luks)
  #   - (?:tempest\.api\.network\.test_networks\.NetworksIpV6Test\.test_external_network_visibility)
  #   - (?:tempest\.api\.network\.test_networks\.NetworksTest\.test_external_network_visibility)
  #   - (?:tempest\.scenario\.test_network_v6\.TestGettingAddress\.test_dualnet_multi_prefix_slaac)
  #   - (?:tempest\.scenario\.test_network_v6\.TestGettingAddress\.test_dualnet_multi_prefix_dhcpv6_stateless)
  #   - (?:tempest\.scenario\.test_network_basic_ops\.TestNetworkBasicOps\.test_update_router_admin_state)
  #   - (?:tempest\.scenario\.test_network_basic_ops\.TestNetworkBasicOps\.test_router_rescheduling)
  #   - (?:tempest\.scenario\.test_network_basic_ops\.TestNetworkBasicOps\.test_update_instance_port_admin_state)
  tempest:
    auth:
      # admin_username value set by configmap-etc
      admin_username: null
      # admin_password value set by configmap-etc
      admin_password: null
      # admin_project_name value set by configmap-etc
      admin_project_name: null
      # admin_domain_name value set by configmap-etc
      admin_domain_name: null
      use_dynamic_credentials: true
    dashboard: {}
    heat_plugin:
      # Username to use for non admin API requests
      username: null
      # Non admin API key to use when authenticating.
      password: null
      project_name: null
      # Username to use for admin API requests
      admin_username: null
      # Admin API key to use when authentication
      admin_password: null
      # Admin project name to use for admin API requests
      admin_project_name: null
      auth_version: 3
      auth_url: null
      user_domain_name: null
      project_domain_name: null
      region: null
    identity:
      admin_domain_scope: false
      auth_version: v3
      # region value set by configmap-etc
      region: null
      # uri_v3 value set by configmap-etc
      uri_v3: null
    identity-feature-enabled:
      api_v3: true
      # this value should be the same as the keystone chart conf.keystone.identity.domain_specific_drivers_enabled
      domain_specific_drivers: true
    image:
      http_image: "http://download.cirros-cloud.net/0.6.2/cirros-0.6.2-x86_64-disk.img"
      container_formats: bare
      disk_formats: raw
    network:
      project_networks_reachable: false
      shared_physical_network: true
    network-feature-enabled:
      floating_ips: true
      api_extensions:
        - default-subnetpools
        - network-ip-availability
        - network_availability_zone
        - auto-allocated-topology
        - ext-gw-mode
        - binding
        - agent
        - subnet_allocation
        - l3_agent_scheduler
        - tag
        - external-net
        - flavors
        - net-mtu
        - availability_zone
        - quotas
        - l3-ha
        - provider
        - multi-provider
        - address-scope
        - extraroute
        - subnet-service-types
        - standard-attr-timestamp
        - service-type
        - l3-flavors
        - port-security
        - extra_dhcp_opt
        - standard-attr-revisions
        - pagination
        - sorting
        - security-group
        - dhcp_agent_scheduler
        - router_availability_zone
        - rbac-policies
        - standard-attr-description
        - router
        - allowed-address-pairs
        - project-id
        - dvr
    service_available:
      cinder: true
      glance: true
      # The following services are marked as unavailable by default. The default
      # tempest image used includes a bug resulting in failed network tests that
      # wasn't fixed in newton. Swift is disabled by default as the swift chart
      # isn't complete
      heat: false
      neutron: false
      nova: false
      swift: false
    validation:
      connect_method: floating
    volume:
      disk_formats: raw
      backend_names: rbd1
      storage_protocol: rbd
      catalog_type: volumev3
  cleanup:
    force: false
    enabled: true
  tempest_logging:
    loggers:
      keys:
        - root
        - tempest
    handlers:
      keys:
        - stdout
        - "null"
    formatters:
      keys:
        - tests
        - default
    logger_root:
      level: DEBUG
      handlers:
        - 'null'
    logger_tempest:
      level: WARN
      propagate: 0
      handlers:
        - stdout
      qualname: tempest
    handler_stdout:
      class: StreamHandler
      level: WARN
      args: (sys.stdout,)
      formatter: tests
    handler_null:
      class: logging.NullHandler
      formatter: default
      args: ()
    formatter_tests:
      class: oslo_log.formatters.ContextFormatter
      datefmt: "%Y-%m-%d %H:%M:%S"
    formatter_default:
      format: "%(message)s"
      datefmt: "%Y-%m-%d %H:%M:%S"


pvc:
  enabled: true
  name: pvc-tempest
  requests:
    storage: 2Gi
  storage_class: general

secrets:
  identity:
    admin: tempest-keystone-admin
    tempest: tempest-keystone-user
  oci_image_registry:
    tempest: tempest-oci-image-registry
  tls:
    identity:
      api:
        public: keystone-tls-public
        internal: keystone-tls-api

endpoints:
  cluster_domain_suffix: cluster.local
  local_image_registry:
    name: docker-registry
    namespace: docker-registry
    hosts:
      default: localhost
      internal: docker-registry
      node: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        node: 5000
  oci_image_registry:
    name: oci-image-registry
    namespace: oci-image-registry
    auth:
      enabled: false
      tempest:
        username: tempest
        password: password
    hosts:
      default: localhost
    host_fqdn_override:
      default: null
    port:
      registry:
        default: null
  identity:
    name: keystone
    auth:
      admin:
        region_name: RegionOne
        username: admin
        password: password
        project_name: admin
        user_domain_name: default
        project_domain_name: default
      tempest:
        role: admin
        region_name: RegionOne
        username: tempest
        password: password
        project_name: service
        user_domain_name: service
        project_domain_name: service
    hosts:
      default: keystone
      internal: keystone-api
    host_fqdn_override:
      default: null
    path:
      default: /v3
    scheme:
      default: http
    port:
      api:
        default: 80
        internal: 5000
  dashboard:
    name: horizon
    hosts:
      default: horizon-int
      public: horizon
    host_fqdn_override:
      default: null
      # NOTE(portdirect): this chart supports TLS for fqdn over-ridden public
      # endpoints using the following format:
      # public:
      #   host: null
      #   tls:
      #     crt: null
      #     key: null
    path:
      default: null
    scheme:
      default: http
    port:
      web:
        default: 80
tls:
  identity: false

manifests:
  configmap_bin: true
  configmap_etc: true
  job_image_repo_sync: true
  job_ks_user: true
  job_run_tests: true
  secret_keystone: true
  secret_registry: true
...
