# cloudkitty.conf reference

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

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

    [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

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

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

    # DEPRECATED: (DEPRECATED) It is recommend not to use this option
    # anymore. Run the health check heartbeat thread through a native
    # python thread by default. If this option is equal to False then the
    # health check heartbeat will inherit the execution model from the
    # parent process. For example if the parent process has monkey patched
    # the stdlib by using eventlet/greenlet then the heartbeat will be run
    # through a green thread. This option should be set to True only for
    # the wsgi services. (boolean value)
    # This option is deprecated for removal.
    # Its value may be silently ignored in the future.
    # Reason: The option is related to Eventlet which will be removed. In
    # addition this has never worked as expected with services using
    # eventlet for core service framework.
    #heartbeat_in_pthread = 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
    #

    # 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

    [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"}]

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

    [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

    [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

this page last updated: 2026-04-13 10:31:45

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.

found an error? report a bug