[DEFAULT]

#
# From cloudkitty.common.config
#

# Configuration file for WSGI definition of API. (string value)
#api_paste_config = api_paste.ini

# The strategy to use for auth. Supports noauth and keystone (string
# value)
# Possible values:
# noauth - <No description provided>
# keystone - <No description provided>
#auth_strategy = keystone

# Name of this node. This can be an opaque identifier. It is not
# necessarily a hostname, FQDN, or IP address. However, the node name
# must be valid within an AMQP key. (string value)
#
# This option has a sample default set, which means that
# its actual default value may vary from the one documented
# below.
#host = <server-hostname.example.com>

#
# From cotyledon
#

# Enables or disables logging values of all registered options when
# starting a service (at DEBUG level). (boolean value)
# Note: This option can be changed without restarting.
#log_options = true

# Specify a timeout after which a gracefully shutdown server will
# exit. Zero value means endless wait. (integer value)
# Note: This option can be changed without restarting.
#graceful_shutdown_timeout = 60

#
# From oslo.log
#

# If set to true, the logging level will be set to DEBUG instead of
# the default INFO level. (boolean value)
# Note: This option can be changed without restarting.
#debug = false

# The name of a logging configuration file. This file is appended to
# any existing logging configuration files. For details about logging
# configuration files, see the Python logging module documentation.
# Note that when logging configuration files are used then all logging
# configuration is set in the configuration file and other logging
# configuration options are ignored (for example, log-date-format).
# (string value)
# Note: This option can be changed without restarting.
# Deprecated group/name - [DEFAULT]/log_config
#log_config_append = <None>

# Defines the format string for %%(asctime)s in log records. Default:
# %(default)s . This option is ignored if log_config_append is set.
# (string value)
#log_date_format = %Y-%m-%d %H:%M:%S

# (Optional) Name of log file to send logging output to. If no default
# is set, logging will go to stderr as defined by use_stderr. This
# option is ignored if log_config_append is set. (string value)
# Deprecated group/name - [DEFAULT]/logfile
#log_file = <None>

# (Optional) The base directory used for relative log_file  paths.
# This option is ignored if log_config_append is set. (string value)
# Deprecated group/name - [DEFAULT]/logdir
#log_dir = <None>

# Use syslog for logging. Existing syslog format is DEPRECATED and
# will be changed later to honor RFC5424. This option is ignored if
# log_config_append is set. (boolean value)
#use_syslog = false

# Enable journald for logging. If running in a systemd environment you
# may wish to enable journal support. Doing so will use the journal
# native protocol which includes structured metadata in addition to
# log messages.This option is ignored if log_config_append is set.
# (boolean value)
#use_journal = false

# Syslog facility to receive log lines. This option is ignored if
# log_config_append is set. (string value)
#syslog_log_facility = LOG_USER

# Use JSON formatting for logging. This option is ignored if
# log_config_append is set. (boolean value)
#use_json = false

# Log output to standard error. This option is ignored if
# log_config_append is set. (boolean value)
#use_stderr = false

# (Optional) Set the 'color' key according to log levels. This option
# takes effect only when logging to stderr or stdout is used. This
# option is ignored if log_config_append is set. (boolean value)
#log_color = false

# The amount of time before the log files are rotated. This option is
# ignored unless log_rotation_type is set to "interval". (integer
# value)
#log_rotate_interval = 1

# Rotation interval type. The time of the last file change (or the
# time when the service was started) is used when scheduling the next
# rotation. (string value)
# Possible values:
# Seconds - <No description provided>
# Minutes - <No description provided>
# Hours - <No description provided>
# Days - <No description provided>
# Weekday - <No description provided>
# Midnight - <No description provided>
#log_rotate_interval_type = days

# Maximum number of rotated log files. (integer value)
#max_logfile_count = 30

# Log file maximum size in MB. This option is ignored if
# "log_rotation_type" is not set to "size". (integer value)
#max_logfile_size_mb = 200

# Log rotation type. (string value)
# Possible values:
# interval - Rotate logs at predefined time intervals.
# size - Rotate logs once they reach a predefined size.
# none - Do not rotate log files.
#log_rotation_type = none

# Format string to use for log messages with context. Used by
# oslo_log.formatters.ContextFormatter (string value)
#logging_context_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(global_request_id)s %(request_id)s %(user_identity)s] %(instance)s%(message)s

# Format string to use for log messages when context is undefined.
# Used by oslo_log.formatters.ContextFormatter (string value)
#logging_default_format_string = %(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s

# Additional data to append to log message when logging level for the
# message is DEBUG. Used by oslo_log.formatters.ContextFormatter
# (string value)
#logging_debug_format_suffix = %(funcName)s %(pathname)s:%(lineno)d

# Prefix each line of exception output with this format. Used by
# oslo_log.formatters.ContextFormatter (string value)
#logging_exception_prefix = %(asctime)s.%(msecs)03d %(process)d ERROR %(name)s %(instance)s

# Defines the format string for %(user_identity)s that is used in
# logging_context_format_string. Used by
# oslo_log.formatters.ContextFormatter (string value)
#logging_user_identity_format = %(user)s %(project)s %(domain)s %(system_scope)s %(user_domain)s %(project_domain)s

# List of package logging levels in logger=LEVEL pairs. This option is
# ignored if log_config_append is set. (list value)
#default_log_levels = amqp=WARN,boto=WARN,sqlalchemy=WARN,suds=INFO,oslo.messaging=INFO,oslo_messaging=INFO,iso8601=WARN,requests.packages.urllib3.connectionpool=WARN,urllib3.connectionpool=WARN,websocket=WARN,requests.packages.urllib3.util.retry=WARN,urllib3.util.retry=WARN,keystonemiddleware=WARN,routes.middleware=WARN,stevedore=WARN,taskflow=WARN,keystoneauth=WARN,oslo.cache=INFO,oslo_policy=INFO,dogpile.core.dogpile=INFO

# Enables or disables publication of error events. (boolean value)
#publish_errors = false

# The format for an instance that is passed with the log message.
# (string value)
#instance_format = "[instance: %(uuid)s] "

# The format for an instance UUID that is passed with the log message.
# (string value)
#instance_uuid_format = "[instance: %(uuid)s] "

# Interval, number of seconds, of log rate limiting. (integer value)
#rate_limit_interval = 0

# Maximum number of logged messages per rate_limit_interval. (integer
# value)
#rate_limit_burst = 0

# Log level name used by rate limiting. Logs with level greater or
# equal to rate_limit_except_level are not filtered. An empty string
# means that all levels are filtered. (string value)
# Possible values:
# CRITICAL - <No description provided>
# ERROR - <No description provided>
# INFO - <No description provided>
# WARNING - <No description provided>
# DEBUG - <No description provided>
# '' - <No description provided>
#rate_limit_except_level = CRITICAL

# Enables or disables fatal status of deprecations. (boolean value)
#fatal_deprecations = false

#
# From oslo.messaging
#

# Size of executor thread pool when executor is threading or eventlet.
# (integer value)
# Deprecated group/name - [DEFAULT]/rpc_thread_pool_size
#executor_thread_pool_size = 64

# Seconds to wait for a response from a call. (integer value)
#rpc_response_timeout = 60

# The network address and optional user credentials for connecting to
# the messaging backend, in URL format. The expected format is:
#
# driver://[user:pass@]host:port[,[userN:passN@]hostN:portN]/virtual_host?query
#
# Example: rabbit://rabbitmq:password@127.0.0.1:5672//
#
# For full details on the fields in the URL see the documentation of
# oslo_messaging.TransportURL at
# https://docs.openstack.org/oslo.messaging/latest/reference/transport.html
# (string value)
#transport_url = rabbit://

# The default exchange under which topics are scoped. May be
# overridden by an exchange name specified in the transport_url
# option. (string value)
#control_exchange = openstack

# Add an endpoint to answer to ping calls. Endpoint is named
# oslo_rpc_server_ping (boolean value)
#rpc_ping_enabled = false


[api]

#
# From cloudkitty.common.config
#

# The port for the cloudkitty API server. (port value)
# Minimum value: 0
# Maximum value: 65535
#port = 8889


[collect]

#
# From cloudkitty.common.config
#

# Data collector. (string value)
#collector = gnocchi

# Rating period in seconds. (integer value)
#period = 3600

# Wait for N periods before collecting new data. (integer value)
#wait_periods = 2

# Metrology configuration file. (string value)
#metrics_conf = /etc/cloudkitty/metrics.yml

# Key defining a scope. project_id or domain_id for OpenStack, but can
# be anything. (string value)
#scope_key = project_id


[collector_aetos]

#
# From cloudkitty.common.config
#

# Type of endpoint to use in keystoneclient. (string value)
# Possible values:
# internal - <No description provided>
# public - <No description provided>
# admin - <No description provided>
#interface = public

# Region in Identity service catalog to use for communication with the
# OpenStack service. (string value)
#region_name = <None>

# PEM encoded Certificate Authority to use when verifying HTTPs
# connections. (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false

# Authentication type to load (string value)
# Deprecated group/name - [collector_aetos]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string
# value)
#auth_section = <None>


[collector_gnocchi]

#
# From cloudkitty.common.config
#

# Gnocchi auth type (keystone or basic). Keystone credentials can be
# specified through the "auth_section" parameter (string value)
# Possible values:
# keystone - <No description provided>
# basic - <No description provided>
#gnocchi_auth_type = keystone

# Gnocchi user (for basic auth only) (string value)
#gnocchi_user =

# Gnocchi endpoint (for basic auth only) (string value)
#gnocchi_endpoint =

# Endpoint URL type (for keystone auth only) (string value)
#interface = internalURL

# Region Name (string value)
#region_name = RegionOne

# If the value is not defined, we use the value defined by
# requests.adapters.DEFAULT_POOLSIZE (integer value)
#http_pool_maxsize = 10

# PEM encoded Certificate Authority to use when verifying HTTPs
# connections. (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false

# Authentication type to load (string value)
# Deprecated group/name - [collector_gnocchi]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string
# value)
#auth_section = <None>


[collector_prometheus]

#
# From cloudkitty.common.config
#

# Prometheus service URL (string value)
#prometheus_url =

# Prometheus user (for basic auth only) (string value)
#prometheus_user = <None>

# Prometheus user password (for basic auth only) (string value)
#prometheus_password = <None>

# Custom certificate authority file path (string value)
#cafile = <None>

# Explicitly trust untrusted HTTPS responses (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
# Minimum value: 0
#timeout = 60


[cors]

#
# From oslo.middleware.cors
#

# Indicate whether this resource may be shared with the domain
# received in the requests "origin" header. Format:
# "<protocol>://<host>[:<port>]", no trailing slash. Example:
# https://horizon.example.com (list value)
#allowed_origin = <None>

# Indicate that the actual request can include user credentials
# (boolean value)
#allow_credentials = true

# Indicate which headers are safe to expose to the API. Defaults to
# HTTP Simple Headers. (list value)
#expose_headers = X-Auth-Token,X-Subject-Token,X-Service-Token,X-OpenStack-Request-ID

# Maximum cache age of CORS preflight requests. (integer value)
#max_age = 3600

# Indicate which methods can be used during the actual request. (list
# value)
#allow_methods = GET,PUT,POST,DELETE,PATCH

# Indicate which header field names may be used during the actual
# request. (list value)
#allow_headers = X-Auth-Token,X-Subject-Token,X-Roles,X-User-Id,X-Domain-Id,X-Project-Id,X-Tenant-Id,X-OpenStack-Request-ID


[database]

#
# From oslo.db
#

# If True, SQLite uses synchronous mode. (boolean value)
#sqlite_synchronous = true

# The back end to use for the database. (string value)
#backend = sqlalchemy

# The SQLAlchemy connection string to use to connect to the database.
# (string value)
#connection = <None>

# The SQLAlchemy connection string to use to connect to the slave
# database. (string value)
#slave_connection = <None>

# The SQLAlchemy asyncio connection string to use to connect to the
# database. (string value)
#asyncio_connection = <None>

# The SQLAlchemy asyncio connection string to use to connect to the
# slave database. (string value)
#asyncio_slave_connection = <None>

# Whether or not to assume a reader context needs to guarantee it can
# read data committed by a writer assuming replication lag is present;
# defaults to True. When False, a reader context works the same as
# async_reader and will select the slave database if present. When
# using a galera cluster, this can be set to False only if you set
# mysql_wsrep_sync_wait to 1 (this will guarantee that the reader will
# wait until writesets are committed).Note that this may incur a
# performance degradation within the galera cluster. Note also that
# this parameter has no effect if you do not set any slave_connection.
# (boolean value)
#synchronous_reader = true

# The SQL mode to be used for MySQL sessions. This option, including
# the default, overrides any server-set SQL mode. To use whatever SQL
# mode is set by the server configuration, set this to no value.
# Example: mysql_sql_mode= (string value)
#mysql_sql_mode = TRADITIONAL

# For Galera only, configure wsrep_sync_wait causality checks on new
# connections.  Default is None, meaning don't configure any setting.
# (integer value)
#mysql_wsrep_sync_wait = <None>

# Connections which have been present in the connection pool longer
# than this number of seconds will be replaced with a new one the next
# time they are checked out from the pool. (integer value)
#connection_recycle_time = 3600

# Maximum number of SQL connections to keep open in a pool. Setting a
# value of 0 indicates no limit. (integer value)
#max_pool_size = 5

# Maximum number of database connection retries during startup. Set to
# -1 to specify an infinite retry count. (integer value)
#max_retries = 10

# Interval between retries of opening a SQL connection. (integer
# value)
#retry_interval = 10

# If set, use this value for max_overflow with SQLAlchemy. (integer
# value)
#max_overflow = 50

# Verbosity of SQL debugging information: 0=None, 100=Everything.
# (integer value)
# Minimum value: 0
# Maximum value: 100
#connection_debug = 0

# Add Python stack traces to SQL as comment strings. (boolean value)
#connection_trace = false

# If set, use this value for pool_timeout with SQLAlchemy. (integer
# value)
#pool_timeout = <None>

# Enable the experimental use of database reconnect on connection
# lost. (boolean value)
#use_db_reconnect = false

# Seconds between retries of a database transaction. (integer value)
#db_retry_interval = 1

# If True, increases the interval between retries of a database
# operation up to db_max_retry_interval. (boolean value)
#db_inc_retry_interval = true

# If db_inc_retry_interval is set, the maximum seconds between retries
# of a database operation. (integer value)
#db_max_retry_interval = 10

# Maximum retries in case of connection error or deadlock error before
# error is raised. Set to -1 to specify an infinite retry count.
# (integer value)
#db_max_retries = 20

# Optional URL parameters to append onto the connection URL at connect
# time; specify as param1=value1&param2=value2&... (string value)
#connection_parameters =


[fetcher]

#
# From cloudkitty.common.config
#

# Driver used to fetch the list of scopes to rate. (string value)
#backend = keystone


[fetcher_gnocchi]

#
# From cloudkitty.common.config
#

# Attribute from which scope_ids should be collected. (string value)
#scope_attribute = project_id

# List of gnocchi resource types. All if left blank (list value)
#resource_types = generic

# Gnocchi auth type (keystone or basic). Keystone credentials can be
# specified through the "auth_section" parameter (string value)
# Possible values:
# keystone - <No description provided>
# basic - <No description provided>
#gnocchi_auth_type = keystone

# Gnocchi user (for basic auth only) (string value)
#gnocchi_user =

# Gnocchi endpoint (for basic auth only) (string value)
#gnocchi_endpoint =

# Endpoint URL type (for keystone auth only) (string value)
#interface = internalURL

# Region Name (string value)
#region_name = RegionOne

# If the value is not defined, we use the value defined by
# requests.adapters.DEFAULT_POOLSIZE (integer value)
#http_pool_maxsize = 10

# Authentication type to load (string value)
# Deprecated group/name - [fetcher_gnocchi]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string
# value)
#auth_section = <None>

# PEM encoded Certificate Authority to use when verifying HTTPs
# connections. (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false


[fetcher_keystone]

#
# From cloudkitty.common.config
#

# Keystone version to use. (string value)
#keystone_version = 3

# Skip rating role check for cloudkitty user (boolean value)
#ignore_rating_role = false

# Stop rating disabled tenants (boolean value)
#ignore_disabled_tenants = false

# PEM encoded Certificate Authority to use when verifying HTTPs
# connections. (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false

# Authentication type to load (string value)
# Deprecated group/name - [fetcher_keystone]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string
# value)
#auth_section = <None>


[fetcher_prometheus]

#
# From cloudkitty.common.config
#

# Metric from which scope_ids should be requested (string value)
#metric = <None>

# Attribute from which scope_ids should be collected (string value)
#scope_attribute = project_id

# Prometheus service URL (string value)
#prometheus_url = <None>

# Prometheus user (for basic auth only) (string value)
#prometheus_user = <None>

# Prometheus password (for basic auth only) (string value)
#prometheus_password = <None>

# Custom certificate authority file path (string value)
#cafile = <None>

# Explicitly trust untrusted HTTPS responses (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
# Minimum value: 0
#timeout = 60

# Metadata to filter out the scope_ids discovery request response
# (dict value)
#filters =


[fetcher_source]

#
# From cloudkitty.common.config
#

# list of source identifiers (list value)
#sources =


[keystone_authtoken]

#
# From keystonemiddleware.auth_token
#

# Complete "public" Identity API endpoint. This endpoint should not be
# an "admin" endpoint, as it should be accessible by all end users.
# Unauthenticated clients are redirected to this endpoint to
# authenticate. Although this endpoint should ideally be unversioned,
# client support in the wild varies. (string value)
#www_authenticate_uri = <None>

# API version of the Identity API endpoint. (string value)
#auth_version = <None>

# Interface to use for the Identity API endpoint. Valid values are
# "public", "internal" (default) or "admin". (string value)
#interface = internal

# Do not handle authorization requests within the middleware, but
# delegate the authorization decision to downstream WSGI components.
# (boolean value)
#delay_auth_decision = false

# Request timeout value for communicating with Identity API server.
# (integer value)
#http_connect_timeout = <None>

# How many times are we trying to reconnect when communicating with
# Identity API Server. (integer value)
#http_request_max_retries = 3

# Request environment key where the Swift cache object is stored. When
# auth_token middleware is deployed with a Swift cache, use this
# option to have the middleware share a caching backend with swift.
# Otherwise, use the ``memcached_servers`` option instead. (string
# value)
#cache = <None>

# Required if identity server requires client certificate (string
# value)
#certfile = <None>

# Required if identity server requires client certificate (string
# value)
#keyfile = <None>

# A PEM encoded Certificate Authority to use when verifying HTTPs
# connections. Defaults to system CAs. (string value)
#cafile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# The region in which the identity server can be found. (string value)
#region_name = <None>

# Optionally specify a list of memcached server(s) to use for caching.
# If left undefined, tokens will instead be cached in-process. (list
# value)
# Deprecated group/name - [keystone_authtoken]/memcache_servers
#memcached_servers = <None>

# In order to prevent excessive effort spent validating tokens, the
# middleware caches previously-seen tokens for a configurable duration
# (in seconds). Set to -1 to disable caching completely. (integer
# value)
#token_cache_time = 300

# (Optional) If defined, indicate whether token data should be
# authenticated or authenticated and encrypted. If MAC, token data is
# authenticated (with HMAC) in the cache. If ENCRYPT, token data is
# encrypted and authenticated in the cache. If the value is not one of
# these options or empty, auth_token will raise an exception on
# initialization. (string value)
# Possible values:
# None - <No description provided>
# MAC - <No description provided>
# ENCRYPT - <No description provided>
#memcache_security_strategy = None

# (Optional, mandatory if memcache_security_strategy is defined) This
# string is used for key derivation. (string value)
#memcache_secret_key = <None>

# (Optional) Global toggle for TLS usage when comunicating with the
# caching servers. (boolean value)
#memcache_tls_enabled = false

# (Optional) Path to a file of concatenated CA certificates in PEM
# format necessary to establish the caching server's authenticity. If
# tls_enabled is False, this option is ignored. (string value)
#memcache_tls_cafile = <None>

# (Optional) Path to a single file in PEM format containing the
# client's certificate as well as any number of CA certificates needed
# to establish the certificate's authenticity. This file is only
# required when client side authentication is necessary. If
# tls_enabled is False, this option is ignored. (string value)
#memcache_tls_certfile = <None>

# (Optional) Path to a single file containing the client's private key
# in. Otherwhise the private key will be taken from the file specified
# in tls_certfile. If tls_enabled is False, this option is ignored.
# (string value)
#memcache_tls_keyfile = <None>

# (Optional) Set the available ciphers for sockets created with the
# TLS context. It should be a string in the OpenSSL cipher list
# format. If not specified, all OpenSSL enabled ciphers will be
# available. (string value)
#memcache_tls_allowed_ciphers = <None>

# (Optional) Number of seconds memcached server is considered dead
# before it is tried again. (integer value)
#memcache_pool_dead_retry = 300

# (Optional) Maximum total number of open connections to every
# memcached server. (integer value)
#memcache_pool_maxsize = 10

# (Optional) Socket timeout in seconds for communicating with a
# memcached server. (integer value)
#memcache_pool_socket_timeout = 3

# (Optional) Number of seconds a connection to memcached is held
# unused in the pool before it is closed. (integer value)
#memcache_pool_unused_timeout = 60

# (Optional) Number of seconds that an operation will wait to get a
# memcached client connection from the pool. (integer value)
#memcache_pool_conn_get_timeout = 10

# (Optional) Use the advanced (eventlet safe) memcached client pool.
# (boolean value)
#memcache_use_advanced_pool = true

# (Optional) Indicate whether to set the X-Service-Catalog header. If
# False, middleware will not ask for service catalog on token
# validation and will not set the X-Service-Catalog header. (boolean
# value)
#include_service_catalog = true

# Used to control the use and type of token binding. Can be set to:
# "disabled" to not check token binding. "permissive" (default) to
# validate binding information if the bind type is of a form known to
# the server and ignore it if not. "strict" like "permissive" but if
# the bind type is unknown the token will be rejected. "required" any
# form of token binding is needed to be allowed. Finally the name of a
# binding method that must be present in tokens. (string value)
#enforce_token_bind = permissive

# A choice of roles that must be present in a service token. Service
# tokens are allowed to request that an expired token can be used and
# so this check should tightly control that only actual services
# should be sending this token. Roles here are applied as an ANY check
# so any role in this list must be present. For backwards
# compatibility reasons this currently only affects the allow_expired
# check. (list value)
#service_token_roles = service

# When set to True, service tokens must contain a role from the
# service_token_roles list to be considered valid. This prevents end-
# user tokens from being used as service tokens and ensures proper
# service-to-service authentication. Setting this to False is NOT
# RECOMMENDED as it allows any valid token to be used as a service
# token, which can bypass access-rule checks and weaken composite-auth
# protections. (boolean value)
#service_token_roles_required = true

# The name or type of the service as it appears in the service
# catalog. This is used to validate tokens that have restricted access
# rules. (string value)
#service_type = <None>

# Enable the SASL(Simple Authentication and Security Layer) if the
# SASL_enable is true, else disable. (boolean value)
#memcache_sasl_enabled = false

# the user name for the SASL (string value)
#memcache_username =

# the username password for SASL (string value)
#memcache_password =

# Authentication type to load (string value)
# Deprecated group/name - [keystone_authtoken]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string
# value)
#auth_section = <None>


[orchestrator]

#
# From cloudkitty.common.config
#

# Coordination backend URL (string value)
#coordination_url = file:///var/lib/cloudkitty/locks

# Max number of workers to execute the rating process. Defaults to the
# number of available CPU cores. (integer value)
# Minimum value: 0
#
# This option has a sample default set, which means that
# its actual default value may vary from the one documented
# below.
#max_workers = 4

# Max number of workers to execute the reprocessing. Defaults to the
# number of available CPU cores. (integer value)
# Minimum value: 0
#
# This option has a sample default set, which means that
# its actual default value may vary from the one documented
# below.
#max_workers_reprocessing = 4

# Maximal number of threads to use per worker. (integer value)
# Minimum value: 1
# Deprecated group/name - [orchestrator]/max_greenthreads
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#max_threads = 16

# Python expression that can be used to skip/ignore the processed
# datapoint from being persisted in the storage backend. This is
# useful to avoid persisting entries in the storage backend when the
# QTY is zero, for instance. The datapoint being persisted will be
# available for the expression in a variable called "datapoint". The
# expression MUST return a True or False value. For instance, if one
# wants to skip persisting processed datapoints that have QTY as zero,
# the following expression can be used: "datapoint.get("vol",
# {}).get("qty", 0) == 0". (string value)
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#skip_datapoints_expression = False

# Timeout for the orchestrator to wait for a responsefrom the
# collector driver. This timeout is for the threadpool that is going
# go process the collection code. (integer value)
# Minimum value: 30
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#collector_request_timeout = 300


[oslo_concurrency]

#
# From oslo.concurrency
#

# Enables or disables inter-process locks. (boolean value)
#disable_process_locking = false

# Directory to use for lock files.  For security, the specified
# directory should only be writable by the user running the processes
# that need locking. Defaults to environment variable OSLO_LOCK_PATH.
# If external locks are used, a lock path must be set. (string value)
#lock_path = <None>


[oslo_messaging_kafka]

#
# From oslo.messaging
#

# Max fetch bytes of Kafka consumer (integer value)
#kafka_max_fetch_bytes = 1048576

# Default timeout(s) for Kafka consumers (floating point value)
#kafka_consumer_timeout = 1.0

# Group id for Kafka consumer. Consumers in one group will coordinate
# message consumption (string value)
#consumer_group = oslo_messaging_consumer

# Upper bound on the delay for KafkaProducer batching in seconds
# (floating point value)
#producer_batch_timeout = 0.0

# Size of batch for the producer async send (integer value)
#producer_batch_size = 16384

# The compression codec for all data generated by the producer. If not
# set, compression will not be used. Note that the allowed values of
# this depend on the kafka version (string value)
# Possible values:
# none - <No description provided>
# gzip - <No description provided>
# snappy - <No description provided>
# lz4 - <No description provided>
# zstd - <No description provided>
#compression_codec = none

# Enable asynchronous consumer commits (boolean value)
#enable_auto_commit = false

# The maximum number of records returned in a poll call (integer
# value)
#max_poll_records = 500

# Protocol used to communicate with brokers (string value)
# Possible values:
# PLAINTEXT - <No description provided>
# SASL_PLAINTEXT - <No description provided>
# SSL - <No description provided>
# SASL_SSL - <No description provided>
#security_protocol = PLAINTEXT

# Mechanism when security protocol is SASL (string value)
#sasl_mechanism = PLAIN

# CA certificate PEM file used to verify the server certificate
# (string value)
#ssl_cafile =

# Client certificate PEM file used for authentication. (string value)
#ssl_client_cert_file =

# Client key PEM file used for authentication. (string value)
#ssl_client_key_file =

# Client key password file used for authentication. (string value)
#ssl_client_key_password =


[oslo_messaging_notifications]

#
# From oslo.messaging
#

# The Drivers(s) to handle sending notifications. Possible values are
# messaging, messagingv2, routing, log, test, noop (multi valued)
#driver =

# A URL representing the messaging driver to use for notifications. If
# not set, we fall back to the same configuration used for RPC.
# (string value)
#transport_url = <None>

# AMQP topic used for OpenStack notifications. (list value)
#topics = notifications

# The maximum number of attempts to re-send a notification message
# which failed to be delivered due to a recoverable error. 0 - No
# retry, -1 - indefinite (integer value)
#retry = -1


[oslo_messaging_rabbit]

#
# From oslo.messaging
#

# Use durable queues in AMQP. If rabbit_quorum_queue is enabled,
# queues will be durable and this value will be ignored. (boolean
# value)
#amqp_durable_queues = false

# Auto-delete queues in AMQP. (boolean value)
#amqp_auto_delete = false

# Size of RPC connection pool. (integer value)
# Minimum value: 1
#rpc_conn_pool_size = 30

# The pool size limit for connections expiration policy (integer
# value)
#conn_pool_min_size = 2

# The time-to-live in sec of idle connections in the pool (integer
# value)
#conn_pool_ttl = 1200

# Connect over SSL. (boolean value)
#ssl = false

# SSL version to use (valid only if SSL enabled). Valid values are
# TLSv1 and SSLv23. SSLv2, SSLv3, TLSv1_1, and TLSv1_2 may be
# available on some distributions. (string value)
#ssl_version =

# SSL key file (valid only if SSL enabled). (string value)
#ssl_key_file =

# SSL cert file (valid only if SSL enabled). (string value)
#ssl_cert_file =

# SSL certification authority file (valid only if SSL enabled).
# (string value)
#ssl_ca_file =

# DEPRECATED: When true, verify the broker hostname against the
# certificate when ``ssl_ca_file`` is set. When false, ``ssl`` with
# ``ssl_ca_file`` still validates the certificate chain but does not
# verify the broker hostname. ``ssl=true`` without ``ssl_ca_file``
# never enables hostname verification. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Verification is always enabled now
#ssl_enforce_hostname_verification = true

# DEPRECATED: Global toggle for enforcing the OpenSSL FIPS mode. This
# feature requires Python support. This is available in Python 3.9 in
# all environments and may have been backported to older Python
# versions on select environments. If the Python executable used does
# not support OpenSSL FIPS mode, an exception will be raised. (boolean
# value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: FIPS_mode_set API was removed in OpenSSL 3.0.0. This option
# has no effect now.
#ssl_enforce_fips_mode = false

# How long to wait (in seconds) before reconnecting in response to an
# AMQP consumer cancel notification. (floating point value)
# Minimum value: 0.0
# Maximum value: 4.5
#kombu_reconnect_delay = 1.0

# Random time to wait for when reconnecting in response to an AMQP
# consumer cancel notification. (floating point value)
# Minimum value: 0.0
#kombu_reconnect_splay = 0.0

# EXPERIMENTAL: Possible values are: gzip, bz2. If not set compression
# will not be used. This option may not be available in future
# versions. (string value)
#kombu_compression = <None>

# How long to wait a missing client before abandoning to send it its
# replies. This value should not be longer than rpc_response_timeout.
# (integer value)
# Deprecated group/name - [oslo_messaging_rabbit]/kombu_reconnect_timeout
#kombu_missing_consumer_retry_timeout = 60

# Determines how the next RabbitMQ node is chosen in case the one we
# are currently connected to becomes unavailable. Takes effect only if
# more than one RabbitMQ node is provided in config. (string value)
# Possible values:
# round-robin - <No description provided>
# shuffle - <No description provided>
#kombu_failover_strategy = round-robin

# The RabbitMQ login method. (string value)
# Possible values:
# PLAIN - <No description provided>
# AMQPLAIN - <No description provided>
# EXTERNAL - <No description provided>
# RABBIT-CR-DEMO - <No description provided>
#rabbit_login_method = AMQPLAIN

# How frequently to retry connecting with RabbitMQ. (integer value)
# Minimum value: 1
#rabbit_retry_interval = 1

# How long to backoff for between retries when connecting to RabbitMQ.
# (integer value)
# Minimum value: 0
#rabbit_retry_backoff = 2

# Maximum interval of RabbitMQ connection retries. (integer value)
# Minimum value: 1
#rabbit_interval_max = 30

# Try to use HA queues in RabbitMQ (x-ha-policy: all). If you change
# this option, you must wipe the RabbitMQ database. In RabbitMQ 3.0,
# queue mirroring is no longer controlled by the x-ha-policy argument
# when declaring a queue. If you just want to make sure that all
# queues (except those with auto-generated names) are mirrored across
# all nodes, run: "rabbitmqctl set_policy HA '^(?!amq\.).*' '{"ha-
# mode": "all"}' " (boolean value)
#rabbit_ha_queues = false

# Use quorum queues in RabbitMQ (x-queue-type: quorum). The quorum
# queue is a modern queue type for RabbitMQ implementing a durable,
# replicated FIFO queue based on the Raft consensus algorithm. It is
# available as of RabbitMQ 3.8.0. If set this option will conflict
# with the HA queues (``rabbit_ha_queues``) aka mirrored queues, in
# other words the HA queues should be disabled. Quorum queues are also
# durable by default so the amqp_durable_queues option is ignored when
# this option is enabled. (boolean value)
#rabbit_quorum_queue = false

# Use quorum queues for transients queues in RabbitMQ. Enabling this
# option will then make sure those queues are also using quorum kind
# of rabbit queues, which are HA by default. (boolean value)
#rabbit_transient_quorum_queue = false

# Each time a message is redelivered to a consumer, a counter is
# incremented. Once the redelivery count exceeds the delivery limit
# the message gets dropped or dead-lettered (if a DLX exchange has
# been configured) Used only when rabbit_quorum_queue is enabled,
# Default 0 which means dont set a limit. (integer value)
#rabbit_quorum_delivery_limit = 0

# By default all messages are maintained in memory if a quorum queue
# grows in length it can put memory pressure on a cluster. This option
# can limit the number of messages in the quorum queue. Used only when
# rabbit_quorum_queue is enabled, Default 0 which means dont set a
# limit. (integer value)
#rabbit_quorum_max_memory_length = 0

# By default all messages are maintained in memory if a quorum queue
# grows in length it can put memory pressure on a cluster. This option
# can limit the number of memory bytes used by the quorum queue. Used
# only when rabbit_quorum_queue is enabled, Default 0 which means dont
# set a limit. (integer value)
#rabbit_quorum_max_memory_bytes = 0

# Positive integer representing duration in seconds for queue TTL
# (x-expires). Queues which are unused for the duration of the TTL are
# automatically deleted. The parameter affects only reply and fanout
# queues. Setting 0 as value will disable the x-expires. If doing so,
# make sure you have a rabbitmq policy to delete the queues or you
# deployment will create an infinite number of queue over time.In case
# rabbit_stream_fanout is set to True, this option will control data
# retention policy (x-max-age) for messages in the fanout queue rather
# then the queue duration itself. So the oldest data in the stream
# queue will be discarded from it once reaching TTL Setting to 0 will
# disable x-max-age for stream which make stream grow indefinitely
# filling up the diskspace (integer value)
# Minimum value: 0
#rabbit_transient_queues_ttl = 1800

# Specifies the number of messages to prefetch. Setting to zero allows
# unlimited messages. (integer value)
#rabbit_qos_prefetch_count = 0

# Number of seconds after which the Rabbit broker is considered down
# if heartbeat's keep-alive fails (0 disables heartbeat). (integer
# value)
#heartbeat_timeout_threshold = 60

# How often times during the heartbeat_timeout_threshold we check the
# heartbeat. (integer value)
#heartbeat_rate = 3

# DEPRECATED: (DEPRECATED) Enable/Disable the RabbitMQ mandatory flag
# for direct send. The direct send is used as reply, so the
# MessageUndeliverable exception is raised in case the client queue
# does not exist.MessageUndeliverable exception will be used to loop
# for a timeout to lets a chance to sender to recover.This flag is
# deprecated and it will not be possible to deactivate this
# functionality anymore (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Mandatory flag no longer deactivable.
#direct_mandatory_flag = true

# Enable x-cancel-on-ha-failover flag so that rabbitmq server will
# cancel and notify consumerswhen queue is down (boolean value)
#enable_cancel_on_failover = false

# Should we use consistant queue names or random ones (boolean value)
#use_queue_manager = false

# Hostname used by queue manager. Defaults to the value returned by
# socket.gethostname(). (string value)
#
# This option has a sample default set, which means that
# its actual default value may vary from the one documented
# below.
#hostname = node1.example.com

# Process name used by queue manager (string value)
#
# This option has a sample default set, which means that
# its actual default value may vary from the one documented
# below.
#processname = nova-api

# Use stream queues in RabbitMQ (x-queue-type: stream). Streams are a
# new persistent and replicated data structure ("queue type") in
# RabbitMQ which models an append-only log with non-destructive
# consumer semantics. It is available as of RabbitMQ 3.9.0. If set
# this option will replace all fanout queues with only one stream
# queue. (boolean value)
#rabbit_stream_fanout = false


[oslo_middleware]

#
# From oslo.middleware.http_proxy_to_wsgi
#

# Whether the application is behind a proxy or not. This determines if
# the middleware should parse the headers or not. (boolean value)
#enable_proxy_headers_parsing = false


[oslo_policy]

#
# From oslo.policy
#

# This option controls whether or not to use old deprecated defaults
# when evaluating policies. If ``True``, the old deprecated defaults
# are not going to be evaluated. This means if any existing token is
# allowed for old defaults but is disallowed for new defaults, it will
# be disallowed. If ``False``, the deprecated policy check string is
# logically OR'd with the new policy check string, allowing for a
# graceful upgrade experience between releases with new policies,
# which is the default behavior. (boolean value)
#enforce_new_defaults = true

# The relative or absolute path of a file that maps roles to
# permissions for a given service. Relative paths must be specified in
# relation to the configuration file setting this option. (string
# value)
#policy_file = policy.yaml

# Default rule. Enforced when a requested rule is not found. (string
# value)
#policy_default_rule = default

# Directories where policy configuration files are stored. They can be
# relative to any directory in the search path defined by the
# config_dir option, or absolute paths. The file defined by
# policy_file must exist for these directories to be searched.
# Missing or empty directories are ignored. (multi valued)
#policy_dirs = policy.d

# Content Type to send and receive data for REST based policy check
# (string value)
# Possible values:
# application/x-www-form-urlencoded - <No description provided>
# application/json - <No description provided>
#remote_content_type = application/x-www-form-urlencoded

# server identity verification for REST based policy check (boolean
# value)
#remote_ssl_verify_server_crt = false

# Absolute path to ca cert file for REST based policy check (string
# value)
#remote_ssl_ca_crt_file = <None>

# Absolute path to client cert for REST based policy check (string
# value)
#remote_ssl_client_crt_file = <None>

# Absolute path client key file REST based policy check (string value)
#remote_ssl_client_key_file = <None>

# Timeout in seconds for REST based policy check (floating point
# value)
# Minimum value: 0
#remote_timeout = 60


[storage]

#
# From cloudkitty.common.config
#

# Name of the storage backend driver. (string value)
#backend = influxdb

# Storage version to use. (integer value)
# Minimum value: 1
# Maximum value: 2
#version = 2


[storage_elasticsearch]

#
# From cloudkitty.common.config
#

# Elasticsearch host, along with port and protocol. Defaults to
# http://localhost:9200 (string value)
#host = http://localhost:9200

# Elasticsearch index to use. Defaults to "cloudkitty". (string value)
#index_name = cloudkitty

# Set to true to allow insecure HTTPS connections to Elasticsearch
# (boolean value)
#insecure = false

# Path of the CA certificate to trust for HTTPS connections. (string
# value)
#cafile = <None>

# Use a datastream rather than an index. This is useful starting with
# Elasticsearch 7.17. (boolean value)
#use_datastream = false

# Duration (in seconds) for which the ES scroll contexts should be
# kept alive. (integer value)
# Minimum value: 0
# Maximum value: 300
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#scroll_duration = 30


[storage_gnocchi]

#
# From cloudkitty.common.config
#

# endpoint url type (string value)
#interface = internalURL

# Gnocchi storage archive policy name. (string value)
#archive_policy_name = rating

# Gnocchi storage archive policy definition. (archive policy)
#archive_policy_definition = [{"granularity": 3600, "timespan": "90 days"}, {"granularity": 86400, "timespan": "360 days"}, {"granularity": 2592000, "timespan": "1800 days"}]

# PEM encoded Certificate Authority to use when verifying HTTPs
# connections. (string value)
#cafile = <None>

# PEM encoded client certificate cert file (string value)
#certfile = <None>

# PEM encoded client certificate key file (string value)
#keyfile = <None>

# Verify HTTPS connections. (boolean value)
#insecure = false

# Timeout value for http requests (floating point value)
#timeout = <None>

# Collect per-API call timing information. (boolean value)
#collect_timing = false

# Log requests to multiple loggers. (boolean value)
#split_loggers = false

# Authentication type to load (string value)
# Deprecated group/name - [storage_gnocchi]/auth_plugin
#auth_type = <None>

# Config Section from which to load plugin specific options (string
# value)
#auth_section = <None>


[storage_influxdb]

#
# From cloudkitty.common.config
#

# InfluxDB username (string value)
#username = <None>

# InfluxDB password (string value)
#password = <None>

# InfluxDB database (string value)
#database = <None>

# Retention policy to use (string value)
#retention_policy = autogen

# InfluxDB host (string value)
#host = localhost

# InfluxDB port (port value)
# Minimum value: 0
# Maximum value: 65535
#port = 8086

# Set to true to use ssl for influxDB connection. Defaults to False
# (boolean value)
#use_ssl = false

# Set to true to authorize insecure HTTPS connections to influxDB.
# Defaults to False (boolean value)
#insecure = false

# Path of the CA certificate to trust for HTTPS connections (string
# value)
#cafile = <None>

# InfluxDB version (integer value)
#version = 1

# Flux query timeout in milliseconds (integer value)
#query_timeout = 3600000

# InfluxDB API token for version 2 authentication (string value)
#token = <None>

# InfluxDB 2 org (string value)
#org = openstack

# InfluxDB 2 bucket (string value)
#bucket = cloudkitty

# InfluxDB 2 URL (string value)
#url = <None>

# Timeout value for http requests (floating point value)
# Minimum value: 0
#timeout = 60


[storage_loki]

#
# From cloudkitty.common.config
#

# Loki base url. Defaults to http://localhost:3100/loki/api/v1 (string
# value)
#url = http://localhost:3100/loki/api/v1

# The loki tenant to be used. Defaults to cloudkitty. (string value)
#tenant = cloudkitty

# The labels that are going to be used to define the Loki stream as
# Python dict. Defaults to {"service": "cloudkitty"}. (dict value)
#stream = service:cloudkitty

# The number of messages that will be grouped together before
# launching a Loki HTTP POST request. (integer value)
#buffer_size = 1

# The http Content-Type that will be used to send info to Loki.
# Currently only application/json is supported. (string value)
#content_type = application/json

# Controls how data retrieval requests are split across time. When
# fetching data from Loki over a long period, the time range is
# divided into smaller intervals of N days, and separate requests are
# made for each interval. This prevents timeouts and improves
# performance. Defaults to 7 days. Maximum is 30 days. (integer value)
# Minimum value: 1
# Maximum value: 30
#shard_days = 7

# Set to true to allow insecure HTTPS connections to Loki (boolean
# value)
#insecure = false

# Path of the CA certificate to trust for HTTPS connections. (string
# value)
#ca_file = <None>

# Path to a client cert for establishing mTLS connections to Loki.
# (string value)
#cert_file = <None>

# Path to a client key for establishing mTLS connections to Loki.
# (string value)
#key_file = <None>

# Timeout value for http requests (floating point value)
# Minimum value: 0
#timeout = 60

# Use Loki structured metadata for query filtering. Enable this after
# all data without structured metadata has expired (based on your
# retention policy). Requires Loki 3.0+. When disabled, queries use
# JSON parsing which works with both old and new data. (boolean value)
#use_structured_metadata = false


[storage_opensearch]

#
# From cloudkitty.common.config
#

# OpenSearch host, along with port and protocol. Defaults to
# http://localhost:9200 (string value)
#host = http://localhost:9200

# OpenSearch index to use. Defaults to "cloudkitty". (string value)
#index_name = cloudkitty

# Set to true to allow insecure HTTPS connections to OpenSearch
# (boolean value)
#insecure = false

# Path of the CA certificate to trust for HTTPS connections. (string
# value)
#cafile = <None>

# Use a datastream rather than an index. (boolean value)
#use_datastream = false

# Duration (in seconds) for which the OpenSearch scroll contexts
# should be kept alive. (integer value)
# Minimum value: 0
# Maximum value: 300
# Advanced Option: intended for advanced users and not used
# by the majority of users, and might have a significant
# effect on stability and/or performance.
#scroll_duration = 30
