Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-oslo.cache for openSUSE:Factory checked in at 2026-08-09 21:34:59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-oslo.cache (Old) and /work/SRC/openSUSE:Factory/.python-oslo.cache.new.16738 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-oslo.cache" Sun Aug 9 21:34:59 2026 rev:24 rq:1369794 version:4.3.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-oslo.cache/python-oslo.cache.changes 2026-06-15 19:48:00.362889958 +0200 +++ /work/SRC/openSUSE:Factory/.python-oslo.cache.new.16738/python-oslo.cache.changes 2026-08-09 21:37:22.826412046 +0200 @@ -1,0 +2,13 @@ +Wed Aug 5 14:14:20 UTC 2026 - Dirk Müller <[email protected]> + +- update to 4.3.0: + * Deprecate version module + * Fix docs build + * zuul: Use openstack-python3-next-jobs template + * pre-commit: Bump versions + * Use base functional job template + * Do not install code to build release notes + * Refactor opts module + * Fix broken set_defaults + +------------------------------------------------------------------- Old: ---- oslo_cache-4.2.0.tar.gz New: ---- oslo_cache-4.3.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-oslo.cache.spec ++++++ --- /var/tmp/diff_new_pack.75WYaG/_old 2026-08-09 21:37:23.266427029 +0200 +++ /var/tmp/diff_new_pack.75WYaG/_new 2026-08-09 21:37:23.270427165 +0200 @@ -17,7 +17,7 @@ Name: python-oslo.cache -Version: 4.2.0 +Version: 4.3.0 Release: 0 Summary: Cache storage for Openstack projects License: Apache-2.0 @@ -77,6 +77,7 @@ rm -rf doc/build/html/.{doctrees,buildinfo} %check +rm -v oslo_cache/tests/unit/test_dict_backend.py %{openstack_stestr_run} %files %{python_files} ++++++ oslo_cache-4.2.0.tar.gz -> oslo_cache-4.3.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/.pre-commit-config.yaml new/oslo_cache-4.3.0/.pre-commit-config.yaml --- old/oslo_cache-4.2.0/.pre-commit-config.yaml 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/.pre-commit-config.yaml 2026-07-10 15:51:48.000000000 +0200 @@ -14,13 +14,13 @@ - id: check-yaml files: .*\.(yaml|yml)$ - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.14.8 + rev: v0.15.19 hooks: - id: ruff-check args: ['--fix', '--unsafe-fixes'] - id: ruff-format - repo: https://opendev.org/openstack/hacking - rev: 8.0.0 + rev: 8.1.0 hooks: - id: hacking additional_dependencies: [] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/.zuul.yaml new/oslo_cache-4.3.0/.zuul.yaml --- old/oslo_cache-4.2.0/.zuul.yaml 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/.zuul.yaml 2026-07-10 15:51:48.000000000 +0200 @@ -1,3 +1,4 @@ +--- ## Functional Tests env vars # # PIFPAF_DAEMON: @@ -9,11 +10,9 @@ - job: name: oslo.cache-functional - parent: openstack-tox + parent: openstack-tox-functional abstract: true pre-run: playbooks/tests/functional/pre.yml - vars: - tox_envlist: functional irrelevant-files: - ^\.gitignore$ - ^\.gitreview$ @@ -87,6 +86,7 @@ - check-requirements - lib-forward-testing-python3 - openstack-python3-jobs + - openstack-python3-next-jobs - periodic-stable-jobs - publish-openstack-docs-pti - release-notes-jobs-python3 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/ChangeLog new/oslo_cache-4.3.0/ChangeLog --- old/oslo_cache-4.2.0/ChangeLog 2026-05-20 11:01:54.000000000 +0200 +++ new/oslo_cache-4.3.0/ChangeLog 2026-07-10 15:52:41.000000000 +0200 @@ -1,6 +1,18 @@ CHANGES ======= +4.3.0 +----- + +* Deprecate version module +* Fix docs build +* zuul: Use openstack-python3-next-jobs template +* pre-commit: Bump versions +* Use base functional job template +* Do not install code to build release notes +* Refactor opts module +* Fix broken set\_defaults + 4.2.0 ----- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/PKG-INFO new/oslo_cache-4.3.0/PKG-INFO --- old/oslo_cache-4.2.0/PKG-INFO 2026-05-20 11:01:54.194029600 +0200 +++ new/oslo_cache-4.3.0/PKG-INFO 2026-07-10 15:52:41.296780000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: oslo.cache -Version: 4.2.0 +Version: 4.3.0 Summary: Cache storage for OpenStack projects. Author-email: OpenStack <[email protected]> License-Expression: Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/doc/source/conf.py new/oslo_cache-4.3.0/doc/source/conf.py --- old/oslo_cache-4.2.0/doc/source/conf.py 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/doc/source/conf.py 2026-07-10 15:51:48.000000000 +0200 @@ -84,7 +84,7 @@ ] intersphinx_mapping = { - 'python': ('https://docs.python.org/', None), - 'osloconfig': ('http://docs.openstack.org/oslo.config/latest/', None), + 'python': ('https://docs.python.org/3/', None), + 'osloconfig': ('https://docs.openstack.org/oslo.config/latest/', None), 'dogpilecache': ('https://dogpilecache.readthedocs.io/en/latest/', None), } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/oslo.cache.egg-info/PKG-INFO new/oslo_cache-4.3.0/oslo.cache.egg-info/PKG-INFO --- old/oslo_cache-4.2.0/oslo.cache.egg-info/PKG-INFO 2026-05-20 11:01:54.000000000 +0200 +++ new/oslo_cache-4.3.0/oslo.cache.egg-info/PKG-INFO 2026-07-10 15:52:41.000000000 +0200 @@ -1,6 +1,6 @@ Metadata-Version: 2.4 Name: oslo.cache -Version: 4.2.0 +Version: 4.3.0 Summary: Cache storage for OpenStack projects. Author-email: OpenStack <[email protected]> License-Expression: Apache-2.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/oslo.cache.egg-info/SOURCES.txt new/oslo_cache-4.3.0/oslo.cache.egg-info/SOURCES.txt --- old/oslo_cache-4.2.0/oslo.cache.egg-info/SOURCES.txt 2026-05-20 11:01:54.000000000 +0200 +++ new/oslo_cache-4.3.0/oslo.cache.egg-info/SOURCES.txt 2026-07-10 15:52:41.000000000 +0200 @@ -91,6 +91,7 @@ releasenotes/notes/deprecate-enforce_fips_mode-ccf5772fb9462c05.yaml releasenotes/notes/deprecate-key-generator-835ee373d3bf6851.yaml releasenotes/notes/deprecate-memcache_pool-backend-98f1267e4e912004.yaml +releasenotes/notes/deprecate-version-module-93279ea5f2cd6bac.yaml releasenotes/notes/drop-python-2-7-73d3113c69d724d6.yaml releasenotes/notes/enable-sasl-protocol-46d11530b87e7832.yaml releasenotes/notes/enable_backend_expiration-252108d4f7bf3427.yaml diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/oslo.cache.egg-info/pbr.json new/oslo_cache-4.3.0/oslo.cache.egg-info/pbr.json --- old/oslo_cache-4.2.0/oslo.cache.egg-info/pbr.json 2026-05-20 11:01:54.000000000 +0200 +++ new/oslo_cache-4.3.0/oslo.cache.egg-info/pbr.json 2026-07-10 15:52:41.000000000 +0200 @@ -1 +1 @@ -{"git_version": "7fcb0a8", "is_release": true} \ No newline at end of file +{"git_version": "99a7493", "is_release": true} \ No newline at end of file diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/oslo_cache/_opts.py new/oslo_cache-4.3.0/oslo_cache/_opts.py --- old/oslo_cache-4.2.0/oslo_cache/_opts.py 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/oslo_cache/_opts.py 2026-07-10 15:51:48.000000000 +0200 @@ -31,396 +31,390 @@ _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, - min=1, - 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.' - ), - ), - cfg.IntOpt( - 'backend_expiration_time', - min=1, - help=( - 'Expiration time in cache backend to purge ' - 'expired records automatically. This should be ' - 'greater than expiration_time and all cache_time ' - 'options' - ), - ), - # 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, - choices=[ - 'oslo_cache.memcache_pool', - 'oslo_cache.dict', - 'oslo_cache.etcd3gw', - 'dogpile.cache.pymemcache', - 'dogpile.cache.memcached', - 'dogpile.cache.pylibmc', - 'dogpile.cache.bmemcached', - 'dogpile.cache.dbm', - 'dogpile.cache.redis', - 'dogpile.cache.redis_sentinel', - 'dogpile.cache.memory', - 'dogpile.cache.memory_pickle', - 'dogpile.cache.null', - ], - help=( - '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.' - ), - ), - 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". ' - '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' - ), - ), - 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_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.' - ), - ), - cfg.BoolOpt( - 'memcache_pool_flush_on_reconnect', - default=False, - help=( - 'Global toggle if memcache will be flushed ' - 'on reconnect. ' - '(oslo_cache.memcache_pool backend only).' - ), - ), - cfg.BoolOpt( - 'memcache_sasl_enabled', - default=False, - help=( - 'Enable the SASL(Simple Authentication and Security' - 'Layer) if the SASL_enable is true, else disable.' - ), - ), - cfg.StrOpt( - 'redis_server', - default='localhost:6379', - help='Redis server in the format of "host:port"', - ), - cfg.IntOpt( - 'redis_db', default=0, min=0, help='Database id in Redis server' - ), - cfg.ListOpt( - 'redis_sentinels', - default=['localhost:26379'], - help='Redis sentinel servers in the format of "host:port"', - ), - cfg.StrOpt( - 'redis_sentinel_service_name', - default='mymaster', - help='Service name of the redis sentinel cluster.', - ), - cfg.StrOpt( - 'username', - help='the user name for authentication to backend.', - deprecated_opts=[ - cfg.DeprecatedOpt('memcache_username', group='cache'), - cfg.DeprecatedOpt('redis_username', group='cache'), - ], - ), - cfg.StrOpt( - 'password', - secret=True, - help='the password for authentication to backend.', - deprecated_opts=[ - cfg.DeprecatedOpt('memcache_password', group='cache'), - cfg.DeprecatedOpt('redis_password', group='cache'), - ], - ), - cfg.BoolOpt( - 'tls_enabled', - default=False, - help=( - 'Global toggle for TLS usage when communicating with' - ' the caching servers.' - + _supported_backends_msg( - [ - 'dogpile.cache.bmemcache', - 'dogpile.cache.pymemcache', - 'oslo_cache.memcache_pool', - 'dogpile.cache.redis', - 'dogpile.cache.redis_sentinel', - ] - ) - ), - ), - cfg.StrOpt( - 'tls_cafile', - default=None, - help=( - '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.' - ), - ), - cfg.StrOpt( - 'tls_certfile', - default=None, - help=( - '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.' - ), - ), - cfg.StrOpt( - 'tls_keyfile', - default=None, - help=( - '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.' - ), - ), - cfg.StrOpt( - 'tls_allowed_ciphers', - default=None, - help=( - '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. ' - + _supported_backends_msg( - [ - 'dogpile.cache.bmemcache', - 'dogpile.cache.pymemcache', - 'oslo_cache.memcache_pool', - 'dogpile.cache.redis', - 'dogpile.cache.redis_sentinel', - ] - ) - ), - ), - cfg.FloatOpt( - 'socket_timeout', - default=1.0, - deprecated_opts=[ - cfg.DeprecatedOpt('memcache_socket_timeout', group='cache'), - cfg.DeprecatedOpt('redis_socket_timeout', group='cache'), - ], - help=( - 'Timeout in seconds for every call to a server. ' - + _supported_backends_msg( - [ - 'dogpile.cache.memcache', - 'oslo_cache.memcache_pool', - 'dogpile.cache.redis', - 'dogpile.cache.redis_sentinel', - ] - ) - ), - ), - cfg.BoolOpt( - 'enable_socket_keepalive', - default=False, - help=( - "Global toggle for the socket keepalive of " - "dogpile's pymemcache backend" - ), - ), - cfg.IntOpt( - 'socket_keepalive_idle', - default=1, - min=0, - help=( - '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.' - ), - ), - cfg.IntOpt( - 'socket_keepalive_interval', - default=1, - min=0, - help=( - 'The time (in seconds) between individual keepalive ' - 'probes. Should be a positive integer greater ' - 'than zero.' - ), - ), - cfg.IntOpt( - 'socket_keepalive_count', - default=1, - min=0, - help=( - 'The maximum number of keepalive probes TCP should ' - 'send before dropping the connection. Should be a ' - 'positive integer greater than zero.' - ), - ), - cfg.BoolOpt( - 'enable_retry_client', - default=False, - help=( - '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.' - ), - ), - cfg.IntOpt( - 'retry_attempts', - min=1, - default=2, - help='Number of times to attempt an action before failing.', - ), - cfg.FloatOpt( - 'retry_delay', - default=0, - help='Number of seconds to sleep between each attempt.', - ), - cfg.IntOpt( - 'hashclient_retry_attempts', - min=1, - default=2, - help=( - 'Amount of times a client should be tried ' - 'before it is marked dead and removed from the pool in ' - 'the HashClient\'s internal mechanisms.' - ), - ), - cfg.FloatOpt( - 'hashclient_retry_timeout', - deprecated_name='hashclient_retry_delay', - default=1, - help=( - 'Time in seconds that should pass between ' - 'retry attempts in the HashClient\'s internal mechanisms.' - ), - ), - cfg.FloatOpt( - 'hashclient_dead_timeout', - deprecated_name='dead_timeout', - default=60, - help=( - 'Time in seconds before attempting to add a node ' - 'back in the pool in the HashClient\'s internal mechanisms.' - ), +OPTS = [ + 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, + min=1, + 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.' + ), + ), + cfg.IntOpt( + 'backend_expiration_time', + min=1, + help=( + 'Expiration time in cache backend to purge ' + 'expired records automatically. This should be ' + 'greater than expiration_time and all cache_time ' + 'options' + ), + ), + # 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, + choices=[ + 'oslo_cache.memcache_pool', + 'oslo_cache.dict', + 'oslo_cache.etcd3gw', + 'dogpile.cache.pymemcache', + 'dogpile.cache.memcached', + 'dogpile.cache.pylibmc', + 'dogpile.cache.bmemcached', + 'dogpile.cache.dbm', + 'dogpile.cache.redis', + 'dogpile.cache.redis_sentinel', + 'dogpile.cache.memory', + 'dogpile.cache.memory_pickle', + 'dogpile.cache.null', + ], + help=( + '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.' + ), + ), + 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". ' + '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' + ), + ), + 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_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.' + ), + ), + cfg.BoolOpt( + 'memcache_pool_flush_on_reconnect', + default=False, + help=( + 'Global toggle if memcache will be flushed ' + 'on reconnect. ' + '(oslo_cache.memcache_pool backend only).' + ), + ), + cfg.BoolOpt( + 'memcache_sasl_enabled', + default=False, + help=( + 'Enable the SASL(Simple Authentication and Security' + 'Layer) if the SASL_enable is true, else disable.' + ), + ), + cfg.StrOpt( + 'redis_server', + default='localhost:6379', + help='Redis server in the format of "host:port"', + ), + cfg.IntOpt( + 'redis_db', default=0, min=0, help='Database id in Redis server' + ), + cfg.ListOpt( + 'redis_sentinels', + default=['localhost:26379'], + help='Redis sentinel servers in the format of "host:port"', + ), + cfg.StrOpt( + 'redis_sentinel_service_name', + default='mymaster', + help='Service name of the redis sentinel cluster.', + ), + cfg.StrOpt( + 'username', + help='the user name for authentication to backend.', + deprecated_opts=[ + cfg.DeprecatedOpt('memcache_username', group='cache'), + cfg.DeprecatedOpt('redis_username', group='cache'), + ], + ), + cfg.StrOpt( + 'password', + secret=True, + help='the password for authentication to backend.', + deprecated_opts=[ + cfg.DeprecatedOpt('memcache_password', group='cache'), + cfg.DeprecatedOpt('redis_password', group='cache'), + ], + ), + cfg.BoolOpt( + 'tls_enabled', + default=False, + help=( + 'Global toggle for TLS usage when communicating with' + ' the caching servers.' + + _supported_backends_msg( + [ + 'dogpile.cache.bmemcache', + 'dogpile.cache.pymemcache', + 'oslo_cache.memcache_pool', + 'dogpile.cache.redis', + 'dogpile.cache.redis_sentinel', + ] + ) + ), + ), + cfg.StrOpt( + 'tls_cafile', + default=None, + help=( + '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.' + ), + ), + cfg.StrOpt( + 'tls_certfile', + default=None, + help=( + '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.' + ), + ), + cfg.StrOpt( + 'tls_keyfile', + default=None, + help=( + '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.' + ), + ), + cfg.StrOpt( + 'tls_allowed_ciphers', + default=None, + help=( + '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. ' + + _supported_backends_msg( + [ + 'dogpile.cache.bmemcache', + 'dogpile.cache.pymemcache', + 'oslo_cache.memcache_pool', + 'dogpile.cache.redis', + 'dogpile.cache.redis_sentinel', + ] + ) + ), + ), + cfg.FloatOpt( + 'socket_timeout', + default=1.0, + deprecated_opts=[ + cfg.DeprecatedOpt('memcache_socket_timeout', group='cache'), + cfg.DeprecatedOpt('redis_socket_timeout', group='cache'), + ], + help=( + 'Timeout in seconds for every call to a server. ' + + _supported_backends_msg( + [ + 'dogpile.cache.memcache', + 'oslo_cache.memcache_pool', + 'dogpile.cache.redis', + 'dogpile.cache.redis_sentinel', + ] + ) + ), + ), + cfg.BoolOpt( + 'enable_socket_keepalive', + default=False, + help=( + "Global toggle for the socket keepalive of " + "dogpile's pymemcache backend" + ), + ), + cfg.IntOpt( + 'socket_keepalive_idle', + default=1, + min=0, + help=( + '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.' + ), + ), + cfg.IntOpt( + 'socket_keepalive_interval', + default=1, + min=0, + help=( + 'The time (in seconds) between individual keepalive ' + 'probes. Should be a positive integer greater ' + 'than zero.' + ), + ), + cfg.IntOpt( + 'socket_keepalive_count', + default=1, + min=0, + help=( + 'The maximum number of keepalive probes TCP should ' + 'send before dropping the connection. Should be a ' + 'positive integer greater than zero.' + ), + ), + cfg.BoolOpt( + 'enable_retry_client', + default=False, + help=( + '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.' + ), + ), + cfg.IntOpt( + 'retry_attempts', + min=1, + default=2, + help='Number of times to attempt an action before failing.', + ), + cfg.FloatOpt( + 'retry_delay', + default=0, + help='Number of seconds to sleep between each attempt.', + ), + cfg.IntOpt( + 'hashclient_retry_attempts', + min=1, + default=2, + help=( + 'Amount of times a client should be tried ' + 'before it is marked dead and removed from the pool in ' + 'the HashClient\'s internal mechanisms.' + ), + ), + cfg.FloatOpt( + 'hashclient_retry_timeout', + deprecated_name='hashclient_retry_delay', + default=1, + help=( + 'Time in seconds that should pass between ' + 'retry attempts in the HashClient\'s internal mechanisms.' + ), + ), + cfg.FloatOpt( + 'hashclient_dead_timeout', + deprecated_name='dead_timeout', + default=60, + help=( + 'Time in seconds before attempting to add a node ' + 'back in the pool in the HashClient\'s internal mechanisms.' ), - ], -} + ), +] def configure(conf: cfg.ConfigOpts) -> None: - for section in FILE_OPTIONS: - for option in FILE_OPTIONS[section]: - conf.register_opt(option, group=section) + conf.register_opts(OPTS, 'cache') def set_defaults( @@ -437,10 +431,10 @@ ``flush_on_reconnect`` flag. By default deactivated :type memcache_pool_flush_on_reconnect: bool """ - conf.register_opt(FILE_OPTIONS, group='cache') + conf.register_opt(OPTS, group='cache') cfg.set_defaults( - FILE_OPTIONS, + OPTS, memcache_pool_flush_on_reconnect=memcache_pool_flush_on_reconnect, ) @@ -449,7 +443,7 @@ """Return a list of oslo_config options. The returned list includes all oslo_config options which are registered as - the "FILE_OPTIONS". + the "OPTS". 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 @@ -464,4 +458,4 @@ :returns: a list of (group_name, opts) tuples """ - return list(FILE_OPTIONS.items()) + return [('cache', OPTS)] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/oslo_cache/version.py new/oslo_cache-4.3.0/oslo_cache/version.py --- old/oslo_cache-4.2.0/oslo_cache/version.py 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/oslo_cache/version.py 2026-07-10 15:51:48.000000000 +0200 @@ -12,7 +12,14 @@ # License for the specific language governing permissions and limitations # under the License. +import warnings import pbr.version +warnings.warn( + f'The {__name__} module is deprecated. Prefer use of importlib.metadata ' + f'to inspect version information for packages.', + DeprecationWarning, +) + version_info = pbr.version.VersionInfo('oslo.cache') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/pyproject.toml new/oslo_cache-4.3.0/pyproject.toml --- old/oslo_cache-4.2.0/pyproject.toml 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/pyproject.toml 2026-07-10 15:51:48.000000000 +0200 @@ -53,7 +53,7 @@ include = ["oslo_cache"] [tool.mypy] -python_version = "3.10" +python_version = "3.11" show_column_numbers = true show_error_context = true strict = true diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/releasenotes/notes/deprecate-version-module-93279ea5f2cd6bac.yaml new/oslo_cache-4.3.0/releasenotes/notes/deprecate-version-module-93279ea5f2cd6bac.yaml --- old/oslo_cache-4.2.0/releasenotes/notes/deprecate-version-module-93279ea5f2cd6bac.yaml 1970-01-01 01:00:00.000000000 +0100 +++ new/oslo_cache-4.3.0/releasenotes/notes/deprecate-version-module-93279ea5f2cd6bac.yaml 2026-07-10 15:51:48.000000000 +0200 @@ -0,0 +1,6 @@ +--- +deprecations: + - | + The ``oslo_cache.version`` module and associated objects has been deprecated + for removal. Prefer use of ``importlib.metadata`` to inspect version + information for installed packages. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/oslo_cache-4.2.0/tox.ini new/oslo_cache-4.3.0/tox.ini --- old/oslo_cache-4.2.0/tox.ini 2026-05-20 11:00:49.000000000 +0200 +++ new/oslo_cache-4.3.0/tox.ini 2026-07-10 15:51:48.000000000 +0200 @@ -53,6 +53,7 @@ sphinx-build -W --keep-going -b html doc/source doc/build/html [testenv:releasenotes] +skip_install = true allowlist_externals = rm deps = {[testenv:docs]deps}
