Zaqar Sample Configuration

The following are sample configuration files for all Zaqar services and utilities. These are generated from code and reflect the current state of code in the Zaqar repository.

Sample configuration for Zaqar API

This sample configuration can also be viewed in zaqar.conf.sample.

[DEFAULT]

#
# 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 zaqar
#

# Activate privileged endpoints. (boolean value)
#admin_mode = false

# Enable pooling across multiple storage backends. If pooling is enabled, the
# storage driver configuration is used to determine where the catalogue/control
# plane data is kept. (boolean value)
# Deprecated group/name - [DEFAULT]/sharding
#pooling = false

# Disable all reliability constraints. (boolean value)
#unreliable = false

# DEPRECATED: List of deprecated API versions to enable. (list value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: Deprecated APIs no longer exist
#enable_deprecated_api_versions =

# Enable a checksum for message body. The default value is False. (boolean
# value)
#enable_checksum = false

# Backend to use for authentication. For no auth, keep it empty. Existing
# strategies: keystone. See also the keystone_authtoken section below (string
# value)
#auth_strategy =


[cache]

#
# From oslo.cache
#

# Prefix for building the configuration dictionary for the cache region. This
# should not need to be changed unless there is another dogpile.cache region
# with the same configuration name. (string value)
#config_prefix = cache.oslo

# Default TTL, in seconds, for any cached item in the dogpile.cache region.
# This applies to any cached method that doesn't have an explicit cache
# expiration time defined for it. (integer value)
# Minimum value: 1
#expiration_time = 600

# Expiration time in cache backend to purge expired records automatically. This
# should be greater than expiration_time and all cache_time options (integer
# value)
# Minimum value: 1
#backend_expiration_time = <None>

# Cache backend module. For eventlet-based or environments with hundreds of
# threaded servers, Memcache with pooling (oslo_cache.memcache_pool) is
# recommended. For environments with less than 100 threaded servers, Memcached
# (dogpile.cache.memcached) or Redis (dogpile.cache.redis) is recommended. Test
# environments with a single instance of the server can use the
# dogpile.cache.memory backend. (string value)
# Possible values:
# oslo_cache.memcache_pool - <No description provided>
# oslo_cache.dict - <No description provided>
# oslo_cache.etcd3gw - <No description provided>
# dogpile.cache.pymemcache - <No description provided>
# dogpile.cache.memcached - <No description provided>
# dogpile.cache.pylibmc - <No description provided>
# dogpile.cache.bmemcached - <No description provided>
# dogpile.cache.dbm - <No description provided>
# dogpile.cache.redis - <No description provided>
# dogpile.cache.redis_sentinel - <No description provided>
# dogpile.cache.memory - <No description provided>
# dogpile.cache.memory_pickle - <No description provided>
# dogpile.cache.null - <No description provided>
#backend = dogpile.cache.null

# Arguments supplied to the backend module. Specify this option once per
# argument to be passed to the dogpile.cache backend. Example format:
# "<argname>:<value>". (multi valued)
#backend_argument =

# Proxy classes to import that will affect the way the dogpile.cache backend
# functions. See the dogpile.cache documentation on changing-backend-behavior.
# (list value)
#proxies =

# Global toggle for caching. (boolean value)
#enabled = false

# Extra debugging from the cache backend (cache keys, get/set/delete/etc
# calls). This is only really useful if you need to see the specific cache-
# backend get/set/delete calls with the keys/values.  Typically this should be
# left set to false. (boolean value)
#debug_cache_backend = false

# Memcache servers in the format of "host:port". This is used by backends
# dependent on Memcached.If ``dogpile.cache.memcached`` or
# ``oslo_cache.memcache_pool`` is used and a given host refer to an IPv6 or a
# given domain refer to IPv6 then you should prefix the given address with the
# address family (``inet6``) (e.g ``inet6:[::1]:11211``,
# ``inet6:[fd12:3456:789a:1::1]:11211``,
# ``inet6:[controller-0.internalapi]:11211``). If the address family is not
# given then these backends will use the default ``inet`` address family which
# corresponds to IPv4 (list value)
#memcache_servers = localhost:11211

# Number of seconds memcached server is considered dead before it is tried
# again. (dogpile.cache.memcache and oslo_cache.memcache_pool backends only).
# (integer value)
#memcache_dead_retry = 300

# Max total number of open connections to every memcached server.
# (oslo_cache.memcache_pool backend only). (integer value)
#memcache_pool_maxsize = 10

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

# Number of seconds that an operation will wait to get a memcache client
# connection. (integer value)
#memcache_pool_connection_get_timeout = 10

# Global toggle if memcache will be flushed on reconnect.
# (oslo_cache.memcache_pool backend only). (boolean value)
#memcache_pool_flush_on_reconnect = false

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

# Redis server in the format of "host:port" (string value)
#redis_server = localhost:6379

# Database id in Redis server (integer value)
# Minimum value: 0
#redis_db = 0

# Redis sentinel servers in the format of "host:port" (list value)
#redis_sentinels = localhost:26379

# Service name of the redis sentinel cluster. (string value)
#redis_sentinel_service_name = mymaster

# the user name for authentication to backend. (string value)
# Deprecated group/name - [cache]/memcache_username
# Deprecated group/name - [cache]/redis_username
#username = <None>

# the password for authentication to backend. (string value)
# Deprecated group/name - [cache]/memcache_password
# Deprecated group/name - [cache]/redis_password
#password = <None>

# Global toggle for TLS usage when communicating with the caching servers.
# Currently supported by ``dogpile.cache.bmemcache``,
# ``dogpile.cache.pymemcache``, ``oslo_cache.memcache_pool``,
# ``dogpile.cache.redis`` and ``dogpile.cache.redis_sentinel``. (boolean value)
#tls_enabled = false

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

# 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)
#tls_certfile = <None>

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

# 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. Currently supported by
# ``dogpile.cache.bmemcache``, ``dogpile.cache.pymemcache`` and
# ``oslo_cache.memcache_pool``. (string value)
#tls_allowed_ciphers = <None>

# Timeout in seconds for every call to a server. Currently supported by
# ``dogpile.cache.memcache``, ``oslo_cache.memcache_pool``,
# ``dogpile.cache.redis`` and ``dogpile.cache.redis_sentinel``. (floating point
# value)
# Deprecated group/name - [cache]/memcache_socket_timeout
# Deprecated group/name - [cache]/redis_socket_timeout
#socket_timeout = 1.0

# Global toggle for the socket keepalive of dogpile's pymemcache backend
# (boolean value)
#enable_socket_keepalive = false

# The time (in seconds) the connection needs to remain idle before TCP starts
# sending keepalive probes. Should be a positive integer most greater than
# zero. (integer value)
# Minimum value: 0
#socket_keepalive_idle = 1

# The time (in seconds) between individual keepalive probes. Should be a
# positive integer greater than zero. (integer value)
# Minimum value: 0
#socket_keepalive_interval = 1

# The maximum number of keepalive probes TCP should send before dropping the
# connection. Should be a positive integer greater than zero. (integer value)
# Minimum value: 0
#socket_keepalive_count = 1

# Enable retry client mechanisms to handle failure. Those mechanisms can be
# used to wrap all kind of pymemcache clients. The wrapper allows you to define
# how many attempts to make and how long to wait between attempts. (boolean
# value)
#enable_retry_client = false

# Number of times to attempt an action before failing. (integer value)
# Minimum value: 1
#retry_attempts = 2

# Number of seconds to sleep between each attempt. (floating point value)
#retry_delay = 0

# Amount of times a client should be tried before it is marked dead and removed
# from the pool in the HashClient's internal mechanisms. (integer value)
# Minimum value: 1
#hashclient_retry_attempts = 2

# Time in seconds that should pass between retry attempts in the HashClient's
# internal mechanisms. (floating point value)
# Deprecated group/name - [cache]/hashclient_retry_delay
#hashclient_retry_timeout = 1

# Time in seconds before attempting to add a node back in the pool in the
# HashClient's internal mechanisms. (floating point value)
# Deprecated group/name - [cache]/dead_timeout
#hashclient_dead_timeout = 60

# 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. Currently supported by ``dogpile.cache.bmemcache``,
# ``dogpile.cache.pymemcache`` and ``oslo_cache.memcache_pool``. (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.
#enforce_fips_mode = false


[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 =

# 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 = OPTIONS,GET,HEAD,POST,PUT,DELETE,TRACE,PATCH

# Indicate which header field names may be used during the actual request.
# (list value)
#allow_headers =


[drivers]

#
# From zaqar
#

# Transport driver to use. (string value)
# Possible values:
# wsgi - <No description provided>
# websocket - <No description provided>
#transport = wsgi

# Storage driver to use as the messaging store. (string value)
# Deprecated group/name - [drivers]/storage
#message_store = mongodb

# Storage driver to use as the management store. (string value)
#management_store = mongodb


[drivers:management_store:mongodb]

#
# From zaqar
#

# The private keyfile used to identify the local connection against mongod. If
# included with the ``certifle`` then only the ``ssl_certfile`` is needed.
# (string value)
#ssl_keyfile = <None>

# The certificate file used to identify the local connection against mongod.
# (string value)
#ssl_certfile = <None>

# Specifies whether a certificate is required from the other side of the
# connection, and whether it will be validated if provided. If the value of
# this parameter is not ``CERT_NONE``, then the ``ssl_ca_cert`` parameter must
# point to a file of CA certificates. (string value)
# Possible values:
# CERT_NONE - Certificates are ignored
# CERT_OPTIONAL - Certificates are not required, but validated if provided
# CERT_REQUIRED - Certificates are required and validated
#ssl_cert_reqs = CERT_REQUIRED

# The ca_certs file contains a set of concatenated "certification authority"
# certificates, which are used to validate certificates passed from the other
# end of the connection. (string value)
#ssl_ca_certs = <None>

# Mongodb Connection URI. If ssl connection enabled, then ``ssl_keyfile``,
# ``ssl_certfile``, ``ssl_cert_reqs``, ``ssl_ca_certs`` need to be set
# accordingly. (string value)
#uri = <None>

# Database name. (string value)
#database = zaqar

# Maximum number of times to retry a failed operation. Currently only used for
# retrying a message post. (integer value)
# Minimum value: 0
#max_attempts = 1000

# Maximum sleep interval between retries (actual sleep time increases linearly
# according to number of attempts performed). (floating point value)
#max_retry_sleep = 0.1

# Maximum jitter interval, to be added to the sleep interval, in order to
# decrease probability that parallel requests will retry at the same instant.
# (floating point value)
#max_retry_jitter = 0.005

# Maximum number of times to retry an operation that failed due to a primary
# node failover. (integer value)
#max_reconnect_attempts = 10

# Base sleep interval between attempts to reconnect after a primary node
# failover. The actual sleep time increases exponentially (power of 2) each
# time the operation is retried. (floating point value)
#reconnect_sleep = 0.02


[drivers:management_store:redis]

#
# From zaqar
#

# Redis connection URI, taking one of three forms. For a direct connection to a
# Redis server, use the form "redis://[:password]@host[:port][?options]", where
# password is redis-server's password, whenredis-server is set password, the
# password optionneeds to be set. port defaults to 6379 if notspecified. For an
# HA master-slave Redis cluster using Redis Sentinel, use the form
# "redis://[:password]@host1[:port1][,host2[:port2],...,hostN[:portN]][?options]",
# where each host specified corresponds to an instance of redis-sentinel. In
# this form, the name of the Redis master used in the Sentinel configuration
# must be included in the query string as "master=<name>". Finally, to connect
# to a local instance of Redis over a unix socket, you may use the form
# "redis://[:password]@/path/to/redis.sock[?options]". In all forms, the
# "socket_timeout" option may bespecified in the query string. Its value is
# given in seconds. If not provided, "socket_timeout" defaults to 0.1
# seconds.There are multiple database instances in redis database, for example
# in the /etc/redis/redis.conf, if the parameter is "database 16", there are 16
# database instances. By default, the data is stored in db = 0 database, if you
# want to use db = 1 database, you can use the following form:
# "redis://host[:port][?dbid=1]". (string value)
#uri = redis://127.0.0.1:6379

# Maximum number of times to retry an operation that failed due to a redis node
# failover. (integer value)
#max_reconnect_attempts = 10

# Base sleep interval between attempts to reconnect after a redis node
# failover. (floating point value)
#reconnect_sleep = 1.0


[drivers:management_store:sqlalchemy]

#
# From zaqar
#

# An sqlalchemy URL (string value)
#uri = sqlite:///:memory:


[drivers:message_store:mongodb]

#
# From zaqar
#

# The private keyfile used to identify the local connection against mongod. If
# included with the ``certifle`` then only the ``ssl_certfile`` is needed.
# (string value)
#ssl_keyfile = <None>

# The certificate file used to identify the local connection against mongod.
# (string value)
#ssl_certfile = <None>

# Specifies whether a certificate is required from the other side of the
# connection, and whether it will be validated if provided. If the value of
# this parameter is not ``CERT_NONE``, then the ``ssl_ca_cert`` parameter must
# point to a file of CA certificates. (string value)
# Possible values:
# CERT_NONE - Certificates are ignored
# CERT_OPTIONAL - Certificates are not required, but validated if provided
# CERT_REQUIRED - Certificates are required and validated
#ssl_cert_reqs = CERT_REQUIRED

# The ca_certs file contains a set of concatenated "certification authority"
# certificates, which are used to validate certificates passed from the other
# end of the connection. (string value)
#ssl_ca_certs = <None>

# Mongodb Connection URI. If ssl connection enabled, then ``ssl_keyfile``,
# ``ssl_certfile``, ``ssl_cert_reqs``, ``ssl_ca_certs`` need to be set
# accordingly. (string value)
#uri = <None>

# Database name. (string value)
#database = zaqar

# Maximum number of times to retry a failed operation. Currently only used for
# retrying a message post. (integer value)
# Minimum value: 0
#max_attempts = 1000

# Maximum sleep interval between retries (actual sleep time increases linearly
# according to number of attempts performed). (floating point value)
#max_retry_sleep = 0.1

# Maximum jitter interval, to be added to the sleep interval, in order to
# decrease probability that parallel requests will retry at the same instant.
# (floating point value)
#max_retry_jitter = 0.005

# Maximum number of times to retry an operation that failed due to a primary
# node failover. (integer value)
#max_reconnect_attempts = 10

# Base sleep interval between attempts to reconnect after a primary node
# failover. The actual sleep time increases exponentially (power of 2) each
# time the operation is retried. (floating point value)
#reconnect_sleep = 0.02

# Number of databases across which to partition message data, in order to
# reduce writer lock %. DO NOT change this setting after initial deployment. It
# MUST remain static. Also, you should not need a large number of partitions to
# improve performance, esp. if deploying MongoDB on SSD storage. (integer
# value)
#partitions = 2


[drivers:message_store:redis]

#
# From zaqar
#

# Redis connection URI, taking one of three forms. For a direct connection to a
# Redis server, use the form "redis://[:password]@host[:port][?options]", where
# password is redis-server's password, whenredis-server is set password, the
# password optionneeds to be set. port defaults to 6379 if notspecified. For an
# HA master-slave Redis cluster using Redis Sentinel, use the form
# "redis://[:password]@host1[:port1][,host2[:port2],...,hostN[:portN]][?options]",
# where each host specified corresponds to an instance of redis-sentinel. In
# this form, the name of the Redis master used in the Sentinel configuration
# must be included in the query string as "master=<name>". Finally, to connect
# to a local instance of Redis over a unix socket, you may use the form
# "redis://[:password]@/path/to/redis.sock[?options]". In all forms, the
# "socket_timeout" option may bespecified in the query string. Its value is
# given in seconds. If not provided, "socket_timeout" defaults to 0.1
# seconds.There are multiple database instances in redis database, for example
# in the /etc/redis/redis.conf, if the parameter is "database 16", there are 16
# database instances. By default, the data is stored in db = 0 database, if you
# want to use db = 1 database, you can use the following form:
# "redis://host[:port][?dbid=1]". (string value)
#uri = redis://127.0.0.1:6379

# Maximum number of times to retry an operation that failed due to a redis node
# failover. (integer value)
#max_reconnect_attempts = 10

# Base sleep interval between attempts to reconnect after a redis node
# failover. (floating point value)
#reconnect_sleep = 1.0


[drivers:message_store:swift]

#
# From zaqar
#

# URI of Keystone endpoint to discover Swift (string value)
#auth_url = http://127.0.0.1:5000/v3/

# Custom URI describing the swift connection. (string value)
#uri = swift://demo:nomoresecrete@/demo

# Don't check SSL certificate (boolean value)
#insecure = false

# Domain ID containing project (string value)
#project_domain_id = <None>

# Domain name containing project (string value)
#project_domain_name = Default

# User's domain id (string value)
#user_domain_id = <None>

# User's domain name (string value)
#user_domain_name = Default

# Region name (string value)
#region_name = <None>

# The default interface for endpoint URL discovery. (string value)
#interface = publicURL


[drivers:transport:websocket]

#
# From zaqar
#

# Address on which the self-hosting server will listen. (host address value)
#bind = 127.0.0.1

# Port on which the self-hosting server will listen. (port value)
# Minimum value: 0
# Maximum value: 65535
#port = 9000

# Port on which the service is provided to the user. (port value)
# Minimum value: 0
# Maximum value: 65535
#external_port = <None>

# Address on which the notification server will listen. (host address value)
#notification_bind = <None>

# Port on which the notification server will listen. (port value)
# Minimum value: 0
# Maximum value: 65535
#notification_port = 0


[drivers:transport:wsgi]

#
# From zaqar
#

# Address on which the self-hosting server will listen. (host address value)
#bind = 127.0.0.1

# Port on which the self-hosting server will listen. (port value)
# Minimum value: 0
# Maximum value: 65535
#port = 8888


[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. If you're using a versioned v2 endpoint here, then this should
# *not* be the same endpoint the service user utilizes for validating tokens,
# because normal end users may not be able to reach that endpoint. (string
# value)
# Deprecated group/name - [keystone_authtoken]/auth_uri
#www_authenticate_uri = <None>

# DEPRECATED: 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. If you're using a versioned v2 endpoint here, then this should
# *not* be the same endpoint the service user utilizes for validating tokens,
# because normal end users may not be able to reach that endpoint. This option
# is deprecated in favor of www_authenticate_uri and will be removed in the S
# release. (string value)
# This option is deprecated for removal since Queens.
# Its value may be silently ignored in the future.
# Reason: The auth_uri option is deprecated in favor of www_authenticate_uri
# and will be removed in the S  release.
#auth_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

# For backwards compatibility reasons we must let valid service tokens pass
# that don't pass the service_token_roles check as valid. Setting this true
# will become the default in a future release and should be enabled if
# possible. (boolean value)
#service_token_roles_required = false

# 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>


[notification]

#
# From zaqar
#

# There are two values can be chosen: third_part or self_local. third_part
# means Zaqar will use the tools from config option smtp_commnd. self_local
# means the smtp python library will be used. (string value)
# Possible values:
# third_part - <No description provided>
# self_local - <No description provided>
#smtp_mode = third_part

# The host IP for the email system. It should be set when smtp_mode is set to
# self_local. (host address value)
#smtp_host = <None>

# The port for the email system. It should be set when smtp_mode is set to
# self_local. (port value)
# Minimum value: 0
# Maximum value: 65535
#smtp_port = <None>

# The user name for the email system to login. It should be set when smtp_mode
# is set to self_local. (string value)
#smtp_user_name = <None>

# The user password for the email system to login. It should be set when
# smtp_mode is set to self_local. (string value)
#smtp_user_password = <None>

# The command of smtp to send email. The format is "command_name arg1 arg2".
# (string value)
#smtp_command = /usr/sbin/sendmail -t -oi

# The max amount of the notification workers. (integer value)
#max_notifier_workers = 10

# Whether the http/https/email subscription need to be confirmed before
# notification. (boolean value)
#require_confirmation = false

# The confirmation page url that will be used in email subscription
# confirmation before notification. (string value)
#external_confirmation_url = <None>

# Defines the set of subscription confirmation email content, including topic,
# body and sender. There is a mapping is {0} -> queue name, {1} ->project id,
# {2}-> confirm url in body string. User can use any of the three values. But
# they can't use more than three. (dict value)
#subscription_confirmation_email_template = body:You have chosen to subscribe to the queue: {0}. This queue belongs to project: {1}. To confirm this subscription, click or visit this link below: {2},sender:Zaqar Notifications <no-reply@openstack.org>,topic:Zaqar Notification - Subscription Confirmation

# Defines the set of unsubscribe confirmation email content, including topic,
# body and sender. There is a mapping is {0} -> queue name, {1} ->project id,
# {2}-> confirm url in body string. User can use any of the three values. But
# they can't use more than three. (dict value)
#unsubscribe_confirmation_email_template = body:You have unsubscribed successfully to the queue: {0}. This queue belongs to project: {1}. To resubscribe this subscription, click or visit this link below: {2},sender:Zaqar Notifications <no-reply@openstack.org>,topic:Zaqar Notification - Unsubscribe Confirmation


[oslo_policy]

#
# From oslo.policy
#

# DEPRECATED: This option controls whether or not to enforce scope when
# evaluating policies. If ``True``, the scope of the token used in the request
# is compared to the ``scope_types`` of the policy being enforced. If the
# scopes do not match, an ``InvalidScope`` exception will be raised. If
# ``False``, a message will be logged informing operators that policies are
# being invoked with mismatching scope. (boolean value)
# This option is deprecated for removal.
# Its value may be silently ignored in the future.
# Reason: This configuration was added temporarily to facilitate a smooth
# transition to the new RBAC. OpenStack will always enforce scope checks. This
# configuration option is deprecated and will be removed in the 2025.2 cycle.
#enforce_scope = true

# 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. It is encouraged
# to enable this flag along with the ``enforce_scope`` flag so that you can get
# the benefits of new defaults and ``scope_type`` together. 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


[oslo_reports]

#
# From oslo.reports
#

# Path to a log directory where to create a file (string value)
#log_dir = <None>

# The path to a file to watch for changes to trigger the reports, instead of
# signals. Setting this option disables the signal trigger for the reports. If
# application is running as a WSGI application it is recommended to use this
# instead of signals. (string value)
#file_event_handler = <None>

# How many seconds to wait between polls when file_event_handler is set
# (integer value)
#file_event_handler_interval = 1


[pooling:catalog]

#
# From zaqar
#

# If enabled, the message_store will be used as the storage for the virtual
# pool. (boolean value)
#enable_virtual_pool = false


[profiler]

#
# From osprofiler
#

#
# Enable the profiling for all services on this node.
#
# Default value is False (fully disable the profiling feature).
#
# Possible values:
#
# * True: Enables the feature
# * False: Disables the feature. The profiling cannot be started via this
# project
#   operations. If the profiling is triggered by another project, this project
#   part will be empty.
#  (boolean value)
# Deprecated group/name - [profiler]/profiler_enabled
#enabled = false

#
# Enable SQL requests profiling in services.
#
# Default value is False (SQL requests won't be traced).
#
# Possible values:
#
# * True: Enables SQL requests profiling. Each SQL query will be part of the
#   trace and can the be analyzed by how much time was spent for that.
# * False: Disables SQL requests profiling. The spent time is only shown on a
#   higher level of operations. Single SQL queries cannot be analyzed this way.
#  (boolean value)
#trace_sqlalchemy = false

#
# Enable python requests package profiling.
#
# Supported drivers: jaeger+otlp
#
# Default value is False.
#
# Possible values:
#
# * True: Enables requests profiling.
# * False: Disables requests profiling.
#  (boolean value)
#trace_requests = false

#
# Secret key(s) to use for encrypting context data for performance profiling.
#
# This string value should have the following format:
# <key1>[,<key2>,...<keyn>],
# where each key is some random string. A user who triggers the profiling via
# the REST API has to set one of these keys in the headers of the REST API call
# to include profiling results of this node for this particular project.
#
# Both "enabled" flag and "hmac_keys" config options should be set to enable
# profiling. Also, to generate correct profiling information across all
# services
# at least one key needs to be consistent between OpenStack projects. This
# ensures it can be used from client side to generate the trace, containing
# information from all possible resources.
#  (string value)
#hmac_keys = SECRET_KEY

#
# Connection string for a notifier backend.
#
# Default value is ``messaging://`` which sets the notifier to oslo_messaging.
#
# Examples of possible values:
#
# * ``messaging://`` - use oslo_messaging driver for sending spans.
# * ``redis://127.0.0.1:6379`` - use redis driver for sending spans.
# * ``mongodb://127.0.0.1:27017`` - use mongodb driver for sending spans.
# * ``elasticsearch://127.0.0.1:9200`` - use elasticsearch driver for sending
#   spans.
# * ``jaeger://127.0.0.1:6831`` - use jaeger tracing as driver for sending
# spans.
#  (string value)
#connection_string = messaging://

#
# Document type for notification indexing in elasticsearch.
#  (string value)
#es_doc_type = notification

#
# This parameter is a time value parameter (for example: es_scroll_time=2m),
# indicating for how long the nodes that participate in the search will
# maintain
# relevant resources in order to continue and support it.
#  (string value)
#es_scroll_time = 2m

#
# Elasticsearch splits large requests in batches. This parameter defines
# maximum size of each batch (for example: es_scroll_size=10000).
#  (integer value)
#es_scroll_size = 10000

#
# Redissentinel provides a timeout option on the connections.
# This parameter defines that timeout (for example: socket_timeout=0.1).
#  (floating point value)
#socket_timeout = 0.1

#
# Redissentinel uses a service name to identify a master redis service.
# This parameter defines the name (for example:
# ``sentinal_service_name=mymaster``).
#  (string value)
#sentinel_service_name = mymaster

#
# Enable filter traces that contain error/exception to a separated place.
#
# Default value is set to False.
#
# Possible values:
#
# * True: Enable filter traces that contain error/exception.
# * False: Disable the filter.
#  (boolean value)
#filter_error_trace = false

#
# From zaqar
#

# If False doesn't trace any transport requests.Please note that it doesn't
# work for websocket now. (boolean value)
#trace_wsgi_transport = false

# If False doesn't trace any message store requests. (boolean value)
#trace_message_store = false

# If False doesn't trace any management store requests. (boolean value)
#trace_management_store = false


[profiler_jaeger]

#
# From osprofiler
#

#
# Set service name prefix to Jaeger service name.
#  (string value)
#service_name_prefix = <None>

#
# Set process tracer tags.
#  (dict value)
#process_tags =


[profiler_otlp]

#
# From osprofiler
#

#
# Set service name prefix to OTLP exporters.
#  (string value)
#service_name_prefix = <None>


[signed_url]

#
# From zaqar
#

# Secret key used to encrypt pre-signed URLs. (string value)
#secret_key = <None>


[storage]

#
# From zaqar
#

# Pipeline to use for processing queue operations. This pipeline will be
# consumed before calling the storage driver's controller methods. (list value)
#queue_pipeline =

# Pipeline to use for processing message operations. This pipeline will be
# consumed before calling the storage driver's controller methods. (list value)
#message_pipeline =

# Pipeline to use for processing claim operations. This pipeline will be
# consumed before calling the storage driver's controller methods. (list value)
#claim_pipeline =

# Pipeline to use for processing subscription operations. This pipeline will be
# consumed before calling the storage driver's controller methods. (list value)
#subscription_pipeline =

# Pipeline to use for processing topic operations. This pipeline will be
# consumed before calling the storage driver's controller methods. (list value)
#topic_pipeline =


[transport]

#
# From zaqar
#

# Defines how long a message will be accessible. (integer value)
#default_message_ttl = 3600

# Defines the defautl value for queue delay seconds.The 0 means the delayed
# queues feature is close. (integer value)
#default_message_delay = 0

# Defines how long a message will be in claimed state. (integer value)
#default_claim_ttl = 300

# Defines the message grace period in seconds. (integer value)
#default_claim_grace = 60

# Defines how long a subscription will be available. (integer value)
#default_subscription_ttl = 3600

# Defines the maximum number of queues per page. (integer value)
#max_queues_per_page = 20

# Defines the maximum number of messages per page. (integer value)
#max_messages_per_page = 20

# Defines the maximum number of subscriptions per page. (integer value)
#max_subscriptions_per_page = 20

# The maximum number of messages that can be claimed (OR) popped in a single
# request (integer value)
#max_messages_per_claim_or_pop = 20

# Defines the maximum amount of metadata in a queue. (integer value)
#max_queue_metadata = 65536

# Defines the maximum size of message posts. (integer value)
#max_messages_post_size = 262144

# Maximum amount of time a message will be available. (integer value)
#max_message_ttl = 1209600

# Maximum delay seconds for messages can be claimed. (integer value)
#max_message_delay = 900

# Maximum length of a message in claimed state. (integer value)
#max_claim_ttl = 43200

# Defines the maximum message grace period in seconds. (integer value)
#max_claim_grace = 43200

# Defines supported subscriber types. (list value)
#subscriber_types = http,https,mailto,trust+http,trust+https

# Defines the maximum number of flavors per page. (integer value)
#max_flavors_per_page = 20

# Defines the maximum number of pools per page. (integer value)
#max_pools_per_page = 20

# Defines the format of client id. (string value)
# Possible values:
# strict - accept only valid uuid
# off - accept any string
#client_id_uuid_safe = strict

# Defines the minimum length of client id This is used only when
# client_id_uuid_safe is off. (integer value)
#min_length_client_id = 10

# Defines the maximum length of client id. This is used only when
# client_id_uuid_safe is off. (integer value)
#max_length_client_id = 36

# Enable delete messages must be with claim IDS. This will improve the security
# of the message avoiding delete messages before they are claimed and handled.
# (boolean value)
#message_delete_with_claim_id = false

# Defines the encryption algorithms of messages, the value could be "AES256"
# for now. (string value)
# Possible values:
# AES256 - <No description provided>
# RSA - <No description provided>
#message_encryption_algorithms = AES256

# Defines the encryption key of algorithms. (string value)
#message_encryption_key = AES256