fb1c71d6ae
The help for the backend option said that the memcache_pool backend is recommended. memcache_pool is there to keep a limited number of thread-associated connections open rather than a connection for every thread. If you don't have a huge number of threads it doesn't offer anything. Keystone is an example of a service where memcache_pool doesn't improve things -- eventlet isn't supported anymore and more threads is not useful due to GIL. As such, the help text is corrected to say to use memcache_pool for eventlet and dogpile.cache.memcached for servers like keystone. The help text also mentioned devstack. This is removed because devstack is a developer tool so shouldn't be mentioned in text targeted to operators. Also, fixed the preceeding comment to remove redundant information and to not mention keystone since this code isn't in keystone anymore. Change-Id: I1ffbf23feac623fe0bfbbe49fb3e0159dedf4cfe
123 lines
6.0 KiB
Python
123 lines
6.0 KiB
Python
# Copyright 2012 OpenStack Foundation
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
# not use this file except in compliance with the License. You may obtain
|
|
# a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
# License for the specific language governing permissions and limitations
|
|
# under the License.
|
|
|
|
from oslo_config import cfg
|
|
|
|
|
|
_DEFAULT_BACKEND = 'dogpile.cache.null'
|
|
|
|
FILE_OPTIONS = {
|
|
'cache': [
|
|
cfg.StrOpt('config_prefix', default='cache.oslo',
|
|
help='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.'),
|
|
cfg.IntOpt('expiration_time', default=600,
|
|
help='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.'),
|
|
# NOTE(morganfainberg): It is recommended that either Redis or
|
|
# Memcached are used as the dogpile backend for real workloads. To
|
|
# prevent issues with the memory cache ending up in "production"
|
|
# unintentionally, we register a no-op as the default caching backend.
|
|
cfg.StrOpt('backend', default=_DEFAULT_BACKEND,
|
|
help='Dogpile.cache backend module. It is recommended '
|
|
'that Memcache or Redis (dogpile.cache.redis) be used '
|
|
'in production deployments. For eventlet-based or '
|
|
'highly threaded servers, Memcache with pooling '
|
|
'(oslo_cache.memcache_pool) is recommended. For low '
|
|
'thread servers, dogpile.cache.memcached is '
|
|
'recommended. Test environments with a single '
|
|
'instance of the server can use the '
|
|
'dogpile.cache.memory backend.'),
|
|
cfg.MultiStrOpt('backend_argument', default=[], secret=True,
|
|
help='Arguments supplied to the backend module. '
|
|
'Specify this option once per argument to be '
|
|
'passed to the dogpile.cache backend. Example '
|
|
'format: "<argname>:<value>".'),
|
|
cfg.ListOpt('proxies', default=[],
|
|
help='Proxy classes to import that will affect the way '
|
|
'the dogpile.cache backend functions. See the '
|
|
'dogpile.cache documentation on '
|
|
'changing-backend-behavior.'),
|
|
cfg.BoolOpt('enabled', default=False,
|
|
help='Global toggle for caching.'),
|
|
cfg.BoolOpt('debug_cache_backend', default=False,
|
|
help='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.'),
|
|
cfg.ListOpt('memcache_servers', default=['localhost:11211'],
|
|
help='Memcache servers in the format of "host:port".'
|
|
' (dogpile.cache.memcache and oslo_cache.memcache_pool'
|
|
' backends only).'),
|
|
cfg.IntOpt('memcache_dead_retry',
|
|
default=5 * 60,
|
|
help='Number of seconds memcached server is considered dead'
|
|
' before it is tried again. (dogpile.cache.memcache and'
|
|
' oslo_cache.memcache_pool backends only).'),
|
|
cfg.IntOpt('memcache_socket_timeout',
|
|
default=3,
|
|
help='Timeout in seconds for every call to a server.'
|
|
' (dogpile.cache.memcache and oslo_cache.memcache_pool'
|
|
' backends only).'),
|
|
cfg.IntOpt('memcache_pool_maxsize',
|
|
default=10,
|
|
help='Max total number of open connections to every'
|
|
' memcached server. (oslo_cache.memcache_pool backend'
|
|
' only).'),
|
|
cfg.IntOpt('memcache_pool_unused_timeout',
|
|
default=60,
|
|
help='Number of seconds a connection to memcached is held'
|
|
' unused in the pool before it is closed.'
|
|
' (oslo_cache.memcache_pool backend only).'),
|
|
cfg.IntOpt('memcache_pool_connection_get_timeout',
|
|
default=10,
|
|
help='Number of seconds that an operation will wait to get '
|
|
'a memcache client connection.'),
|
|
],
|
|
}
|
|
|
|
|
|
def configure(conf):
|
|
for section in FILE_OPTIONS:
|
|
for option in FILE_OPTIONS[section]:
|
|
conf.register_opt(option, group=section)
|
|
|
|
|
|
def list_opts():
|
|
"""Return a list of oslo_config options.
|
|
|
|
The returned list includes all oslo_config options which are registered as
|
|
the "FILE_OPTIONS".
|
|
|
|
Each object in the list is a two element tuple. The first element of
|
|
each tuple is the name of the group under which the list of options in the
|
|
second element will be registered. A group name of None corresponds to the
|
|
[DEFAULT] group in config files.
|
|
|
|
This function is also discoverable via the 'oslo_config.opts' entry point
|
|
under the 'oslo_cache.config.opts' namespace.
|
|
|
|
The purpose of this is to allow tools like the Oslo sample config file
|
|
generator to discover the options exposed to users by this library.
|
|
|
|
:returns: a list of (group_name, opts) tuples
|
|
"""
|
|
return list(FILE_OPTIONS.items())
|