---
###############################################################################
# OpenStack release configuration.

# Name of the current OpenStack release. Default is "2025.2".
openstack_release: "2025.2"

# Name of the current OpenStack branch. Default is "stable/2025.2".
openstack_branch: >-
  {% if openstack_release != 'master' %}stable/{% endif %}{{ openstack_release | lower }}

###############################################################################
# OpenStack virtualenv configuration.

os_virtualenv_python: "{{ '/usr/bin/python3.12' if ansible_facts.os_family == 'RedHat' else '/usr/bin/python3' }}"

###############################################################################
# OpenStack authentication configuration.

# Overcloud authentication type. This should be a string compatible with the
# 'auth_type' argument of most 'os_*' Ansible modules.
openstack_auth_type: "password"

# Overcloud authentication parameters. This should be a dict providing items
# compatible with the 'auth' argument of most 'os_*' Ansible modules.
# By default we pull these from the environment of the shell executing Ansible.
openstack_auth:
  project_domain_name: "{{ lookup('env', 'OS_PROJECT_DOMAIN_NAME') }}"
  user_domain_name: "{{ lookup('env', 'OS_USER_DOMAIN_NAME') }}"
  project_name: "{{ lookup('env', 'OS_PROJECT_NAME') }}"
  username: "{{ lookup('env', 'OS_USERNAME') }}"
  password: "{{ lookup('env', 'OS_PASSWORD') }}"
  auth_url: "{{ lookup('env', 'OS_AUTH_URL') }}"
  system_scope: "{{ lookup('env', 'OS_SYSTEM_SCOPE') }}"

# Internal variable to set the system scope authentication.
openstack_auth_system_scope_value: 'all'

# Overcloud authentication parameters for system scope. By default this will
# use the user defined in openstack_auth.
# NOTE(wszumski): Not all projects support system scope yet and we sometimes need
# to use system scope and project scope in the same ansible run.
openstack_auth_system_scope: >-
  {{ openstack_auth | combine(
    {'system_scope': openstack_auth_system_scope_value,
     'project_domain_name': '',
     'project_name': ''})}}

# Overcloud CA certificate path.
openstack_cacert: "{{ lookup('env', 'OS_CACERT') }}"

# Overcloud interface (public, internal, admin).
openstack_interface: internal

# Overcloud authentication environment variables. These should be compatible
# with the openstack client.
# By default we pull these from the environment of the shell executing Ansible.
openstack_auth_env:
  OS_PROJECT_DOMAIN_NAME: "{{ lookup('env', 'OS_PROJECT_DOMAIN_NAME') }}"
  OS_USER_DOMAIN_NAME: "{{ lookup('env', 'OS_USER_DOMAIN_NAME') }}"
  OS_PROJECT_NAME: "{{ lookup('env', 'OS_PROJECT_NAME') }}"
  OS_USERNAME: "{{ lookup('env', 'OS_USERNAME') }}"
  OS_PASSWORD: "{{ lookup('env', 'OS_PASSWORD') }}"
  OS_AUTH_URL: "{{ lookup('env', 'OS_AUTH_URL') }}"
  OS_INTERFACE: "{{ lookup('env', 'OS_INTERFACE') }}"
  OS_IDENTITY_API_VERSION: "{{ lookup('env', 'OS_IDENTITY_API_VERSION') }}"
  OS_CACERT: "{{ lookup('env', 'OS_CACERT') }}"
  OS_SYSTEM_SCOPE: "{{ lookup('env', 'OS_SYSTEM_SCOPE') }}"

# Overcloud authentication environment variables for system scope. By default
# this will use the user defined in openstack_auth_env.
openstack_auth_env_system_scope: >-
  {{ openstack_auth_env | combine(
    {'OS_SYSTEM_SCOPE': openstack_auth_system_scope_value,
     'OS_PROJECT_DOMAIN_NAME': '',
     'OS_PROJECT_NAME': ''})}}

# List of parameters required in openstack_auth when openstack_auth_type is
# password.
openstack_auth_password_required_params:
  - "project_name"
  - "username"
  - "password"
  - "auth_url"

# List of parameters required in openstack_auth when openstack_auth_type is
# password and using system scope
openstack_auth_password_required_params_system:
  - "username"
  - "password"
  - "auth_url"
