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 2022-06-07 11:45:28
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-oslo.cache (Old)
 and      /work/SRC/openSUSE:Factory/.python-oslo.cache.new.1548 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-oslo.cache"

Tue Jun  7 11:45:28 2022 rev:15 rq:981112 version:2.11.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-oslo.cache/python-oslo.cache.changes      
2021-12-13 20:50:52.100653036 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-oslo.cache.new.1548/python-oslo.cache.changes
    2022-06-07 11:45:45.535282048 +0200
@@ -1,0 +2,19 @@
+Tue Jun  7 08:41:59 UTC 2022 - [email protected]
+
+- update to version 2.11.0
+  - Add Python3 yoga unit tests
+  - Expose pymemcache's HashClient public params
+  - Add Python3 zed unit tests
+  - Add Python 3 only classifier
+  - fix typo
+  - Use the right backend for TLS tests
+  - Remove unnecessary unicode prefixes
+  - Drop pymongo useless and removed attribute
+  - Fix description of memcache_servers
+  - Update master for stable/xena
+  - Update master for stable/yoga
+  - Update python testing classifier
+  - Add socket keepalive options to oslo.cache
+  - Add retry mechanisms to oslo.cache
+
+-------------------------------------------------------------------

Old:
----
  oslo.cache-2.8.1.tar.gz

New:
----
  oslo.cache-2.11.0.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-oslo.cache.spec ++++++
--- /var/tmp/diff_new_pack.qUTxh6/_old  2022-06-07 11:45:45.943282618 +0200
+++ /var/tmp/diff_new_pack.qUTxh6/_new  2022-06-07 11:45:45.947282624 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-oslo.cache
 #
-# Copyright (c) 2021 SUSE LLC
+# Copyright (c) 2022 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -17,25 +17,24 @@
 
 
 Name:           python-oslo.cache
-Version:        2.8.1
+Version:        2.11.0
 Release:        0
 Summary:        Cache storage for Openstack projects
 License:        Apache-2.0
 Group:          Development/Languages/Python
 URL:            https://docs.openstack.org/oslo.cache
-Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.cache/oslo.cache-2.8.1.tar.gz
+Source0:        
https://files.pythonhosted.org/packages/source/o/oslo.cache/oslo.cache-2.11.0.tar.gz
 BuildRequires:  openstack-macros
-BuildRequires:  python3-dogpile.cache >= 1.1.2
-BuildRequires:  python3-mock
+BuildRequires:  python3-dogpile.cache >= 1.1.5
 BuildRequires:  python3-oslo.config >= 8.1.0
 BuildRequires:  python3-oslo.i18n >= 5.0.0
 BuildRequires:  python3-oslo.log >= 4.2.1
 BuildRequires:  python3-oslo.utils >= 4.2.0
 BuildRequires:  python3-oslotest
 BuildRequires:  python3-pbr
+BuildRequires:  python3-pymemcache
 BuildRequires:  python3-pymongo
 BuildRequires:  python3-python-memcached
-BuildRequires:  python3-six
 BuildRequires:  python3-stestr
 BuildArch:      noarch
 
@@ -47,13 +46,12 @@
 
 %package -n python3-oslo.cache
 Summary:        Cache storage for Openstack projects
-Requires:       python3-dogpile.cache >= 1.1.2
+Requires:       python3-dogpile.cache >= 1.1.5
 Requires:       python3-oslo.config >= 8.1.0
 Requires:       python3-oslo.i18n >= 5.0.0
 Requires:       python3-oslo.log >= 4.2.1
 Requires:       python3-oslo.utils >= 4.2.0
 Requires:       python3-python-memcached
-Requires:       python3-six
 
 %description -n python3-oslo.cache
 oslo.cache aims to provide a generic caching mechanism for OpenStack projects
@@ -71,7 +69,7 @@
 Documentation for the OpenStack Oslo cache library.
 
 %prep
-%autosetup -p1 -n oslo.cache-2.8.1
+%autosetup -p1 -n oslo.cache-2.11.0
 %py_req_cleanup
 
 %build
@@ -81,7 +79,7 @@
 %{py3_install}
 
 # generate html docs
-PBR_VERSION=2.8.1 %sphinx_build -b html doc/source doc/build/html
+PBR_VERSION=2.11.0 %sphinx_build -b html doc/source doc/build/html
 # remove the sphinx-build leftovers
 rm -rf doc/build/html/.{doctrees,buildinfo}
 

++++++ oslo.cache-2.8.1.tar.gz -> oslo.cache-2.11.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/.zuul.yaml 
new/oslo.cache-2.11.0/.zuul.yaml
--- old/oslo.cache-2.8.1/.zuul.yaml     2021-06-15 11:58:40.000000000 +0200
+++ new/oslo.cache-2.11.0/.zuul.yaml    2022-04-27 17:30:55.000000000 +0200
@@ -55,7 +55,7 @@
     templates:
       - check-requirements
       - lib-forward-testing-python3
-      - openstack-python3-xena-jobs
+      - openstack-python3-zed-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-2.8.1/AUTHORS 
new/oslo.cache-2.11.0/AUTHORS
--- old/oslo.cache-2.8.1/AUTHORS        2021-06-15 12:12:28.000000000 +0200
+++ new/oslo.cache-2.11.0/AUTHORS       2022-04-27 17:31:26.000000000 +0200
@@ -64,6 +64,7 @@
 Stephen Finucane <[email protected]>
 Steve Martinelli <[email protected]>
 Swapnil Kulkarni (coolsvap) <[email protected]>
+Takashi Kajinami <[email protected]>
 Tony Breeds <[email protected]>
 Tovin Seven <[email protected]>
 Vieri <[email protected]>
@@ -81,6 +82,7 @@
 melissaml <[email protected]>
 ricolin <[email protected]>
 root <root@newapps.(none)>
+songwenping <[email protected]>
 termie <[email protected]>
 wangqi <[email protected]>
 wangxiyuan <[email protected]>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/ChangeLog 
new/oslo.cache-2.11.0/ChangeLog
--- old/oslo.cache-2.8.1/ChangeLog      2021-06-15 12:12:28.000000000 +0200
+++ new/oslo.cache-2.11.0/ChangeLog     2022-04-27 17:31:26.000000000 +0200
@@ -1,6 +1,36 @@
 CHANGES
 =======
 
+2.11.0
+------
+
+* Remove unnecessary unicode prefixes
+* Fix description of memcache\_servers
+* Add Python3 zed unit tests
+* Update master for stable/yoga
+
+2.10.1
+------
+
+* Use the right backend for TLS tests
+* Add Python 3 only classifier
+
+2.10.0
+------
+
+* Expose pymemcache's HashClient public params
+* Add retry mechanisms to oslo.cache
+* Add socket keepalive options to oslo.cache
+
+2.9.0
+-----
+
+* Update python testing classifier
+* Drop pymongo useless and removed attribute
+* Add Python3 yoga unit tests
+* Update master for stable/xena
+* fix typo
+
 2.8.1
 -----
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/PKG-INFO 
new/oslo.cache-2.11.0/PKG-INFO
--- old/oslo.cache-2.8.1/PKG-INFO       2021-06-15 12:12:28.266253500 +0200
+++ new/oslo.cache-2.11.0/PKG-INFO      2022-04-27 17:31:26.557113000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: oslo.cache
-Version: 2.8.1
+Version: 2.11.0
 Summary: Cache storage for OpenStack projects.
 Home-page: https://docs.openstack.org/oslo.cache/latest
 Author: OpenStack
@@ -49,9 +49,12 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Requires-Python: >=3.6
 Provides-Extra: dogpile
 Provides-Extra: etcd3gw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/doc/requirements.txt 
new/oslo.cache-2.11.0/doc/requirements.txt
--- old/oslo.cache-2.8.1/doc/requirements.txt   2021-06-15 11:58:40.000000000 
+0200
+++ new/oslo.cache-2.11.0/doc/requirements.txt  2022-04-27 17:30:55.000000000 
+0200
@@ -11,6 +11,7 @@
 # For autodoc builds
 mock>=2.0.0 # BSD
 oslotest>=3.2.0 # Apache-2.0
+pymemcache>=3.5.0 # Apache-2.0
 python-binary-memcached>=0.29.0 # MIT
 python-memcached>=1.56 # PSF
 etcd3gw>=0.2.0 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/doc/source/conf.py 
new/oslo.cache-2.11.0/doc/source/conf.py
--- old/oslo.cache-2.8.1/doc/source/conf.py     2021-06-15 11:58:40.000000000 
+0200
+++ new/oslo.cache-2.11.0/doc/source/conf.py    2022-04-27 17:30:55.000000000 
+0200
@@ -46,8 +46,8 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'oslo.cache'
-copyright = u'2014, OpenStack Foundation'
+project = 'oslo.cache'
+copyright = '2014, OpenStack Foundation'
 
 # If true, '()' will be appended to :func: etc. cross-reference text.
 add_function_parentheses = True
@@ -79,8 +79,8 @@
 latex_documents = [
     ('index',
      '%s.tex' % project,
-     u'%s Documentation' % project,
-     u'OpenStack Foundation', 'manual'),
+     '%s Documentation' % project,
+     'OpenStack Foundation', 'manual'),
 ]
 
 intersphinx_mapping = {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/oslo.cache.egg-info/PKG-INFO 
new/oslo.cache-2.11.0/oslo.cache.egg-info/PKG-INFO
--- old/oslo.cache-2.8.1/oslo.cache.egg-info/PKG-INFO   2021-06-15 
12:12:28.000000000 +0200
+++ new/oslo.cache-2.11.0/oslo.cache.egg-info/PKG-INFO  2022-04-27 
17:31:26.000000000 +0200
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: oslo.cache
-Version: 2.8.1
+Version: 2.11.0
 Summary: Cache storage for OpenStack projects.
 Home-page: https://docs.openstack.org/oslo.cache/latest
 Author: OpenStack
@@ -49,9 +49,12 @@
 Classifier: License :: OSI Approved :: Apache Software License
 Classifier: Operating System :: POSIX :: Linux
 Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3 :: Only
 Classifier: Programming Language :: Python :: 3
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Requires-Python: >=3.6
 Provides-Extra: dogpile
 Provides-Extra: etcd3gw
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/oslo.cache.egg-info/SOURCES.txt 
new/oslo.cache-2.11.0/oslo.cache.egg-info/SOURCES.txt
--- old/oslo.cache-2.8.1/oslo.cache.egg-info/SOURCES.txt        2021-06-15 
12:12:28.000000000 +0200
+++ new/oslo.cache-2.11.0/oslo.cache.egg-info/SOURCES.txt       2022-04-27 
17:31:26.000000000 +0200
@@ -85,6 +85,9 @@
 releasenotes/notes/fix-memcache-pool-backend-b9e6aaab08075d68.yaml
 releasenotes/notes/lower_socket_timeout-ff5680a6be23bdb2.yaml
 releasenotes/notes/memcache_socket_timeout-a7db772f052c107e.yaml
+releasenotes/notes/pymemcache_hashclient_configure-f6f48c5ca38bce47.yaml
+releasenotes/notes/pymemcache_retry_mecchanisms-fa969d1ac6f64096.yaml
+releasenotes/notes/pymemcache_socket_keepalive-f91c69770961e2b6.yaml
 
releasenotes/notes/switch-from-python-memcached-to-pymemcache-566e70b224f92b73.yaml
 releasenotes/source/conf.py
 releasenotes/source/index.rst
@@ -99,6 +102,8 @@
 releasenotes/source/ussuri.rst
 releasenotes/source/victoria.rst
 releasenotes/source/wallaby.rst
+releasenotes/source/xena.rst
+releasenotes/source/yoga.rst
 releasenotes/source/_static/.placeholder
 releasenotes/source/_templates/.placeholder
 releasenotes/source/locale/de/LC_MESSAGES/releasenotes.po
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/oslo.cache.egg-info/pbr.json 
new/oslo.cache-2.11.0/oslo.cache.egg-info/pbr.json
--- old/oslo.cache-2.8.1/oslo.cache.egg-info/pbr.json   2021-06-15 
12:12:28.000000000 +0200
+++ new/oslo.cache-2.11.0/oslo.cache.egg-info/pbr.json  2022-04-27 
17:31:26.000000000 +0200
@@ -1 +1 @@
-{"git_version": "40946a9", "is_release": true}
\ No newline at end of file
+{"git_version": "2d610d0", "is_release": true}
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/oslo.cache.egg-info/requires.txt 
new/oslo.cache-2.11.0/oslo.cache.egg-info/requires.txt
--- old/oslo.cache-2.8.1/oslo.cache.egg-info/requires.txt       2021-06-15 
12:12:28.000000000 +0200
+++ new/oslo.cache-2.11.0/oslo.cache.egg-info/requires.txt      2022-04-27 
17:31:26.000000000 +0200
@@ -1,10 +1,11 @@
-dogpile.cache>=1.1.2
+dogpile.cache>=1.1.5
 oslo.config>=8.1.0
 oslo.i18n>=5.0.0
 oslo.log>=4.2.1
 oslo.utils>=4.2.0
 
 [dogpile]
+pymemcache>=3.5.0
 python-memcached>=1.56
 
 [etcd3gw]
@@ -20,7 +21,7 @@
 oslotest>=3.2.0
 pifpaf>=0.10.0
 pre-commit>=2.6.0
-pymemcache>=3.4.0
+pymemcache>=3.5.0
 pymongo!=3.1,>=3.0.2
 python-binary-memcached>=0.29.0
 python-memcached>=1.56
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/oslo_cache/_opts.py 
new/oslo.cache-2.11.0/oslo_cache/_opts.py
--- old/oslo.cache-2.8.1/oslo_cache/_opts.py    2021-06-15 11:58:40.000000000 
+0200
+++ new/oslo.cache-2.11.0/oslo_cache/_opts.py   2022-04-27 17:30:55.000000000 
+0200
@@ -76,17 +76,18 @@
                          'to false.'),
         cfg.ListOpt('memcache_servers', default=['localhost:11211'],
                     help='Memcache servers in the format of "host:port". '
-                         '(dogpile.cache.memcached and '
-                         'oslo_cache.memcache_pool backends only). '
-                         'If 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``) '
+                         '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 default '
-                         'address family used will be ``inet`` which '
-                         'correspond to IPv4'),
+                         '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'
@@ -137,7 +138,7 @@
         cfg.StrOpt('tls_keyfile',
                    default=None,
                    help='Path to a single file containing the client\'s'
-                   ' private key in. Otherwhise the private key will be taken'
+                   ' 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',
@@ -146,6 +147,65 @@
                    ' the TLS context. It should be a string in the OpenSSL'
                    ' cipher list format. If not specified, all OpenSSL enabled'
                    ' ciphers will be available.'),
+        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 attemots.'),
+        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_delay',
+            default=1,
+            help='Time in seconds that should pass between '
+            'retry attempts in the HashClient\'s internal mechanisms.'),
+        cfg.FloatOpt(
+            'dead_timeout',
+            default=60,
+            help='Time in seconds before attempting to add a node '
+            'back in the pool in the HashClient\'s internal mechanisms.'),
     ],
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/oslo_cache/core.py 
new/oslo.cache-2.11.0/oslo_cache/core.py
--- old/oslo.cache-2.8.1/oslo_cache/core.py     2021-06-15 11:58:40.000000000 
+0200
+++ new/oslo.cache-2.11.0/oslo_cache/core.py    2022-04-27 17:30:55.000000000 
+0200
@@ -188,6 +188,54 @@
 
         conf_dict['%s.arguments.tls_context' % prefix] = tls_context
 
+    # NOTE(hberaud): Pymemcache support socket keepalive, If it is enable in
+    # our config then configure it to enable this feature.
+    # The socket keepalive feature means that pymemcache will be able to check
+    # your connected socket and determine whether the connection is still up
+    # and running or if it has broken.
+    # This could be used by users who want to handle fine grained failures.
+    if conf.cache.enable_socket_keepalive:
+        if conf.cache.backend != 'dogpile.cache.pymemcache':
+            msg = _(
+                "Socket keepalive is only supported by the "
+                "'dogpile.cache.pymemcache' backend."
+            )
+            raise exception.ConfigurationError(msg)
+        import pymemcache
+        socket_keepalive = pymemcache.KeepaliveOpts(
+            idle=conf.cache.socket_keepalive_idle,
+            intvl=conf.cache.socket_keepalive_interval,
+            cnt=conf.cache.socket_keepalive_count)
+        # As with the TLS context above, the config dict below will be
+        # consumed by dogpile.cache that will be used as a proxy between
+        # oslo.cache and pymemcache.
+        conf_dict['%s.arguments.socket_keepalive' % prefix] = socket_keepalive
+
+    # NOTE(hberaud): The pymemcache library comes with retry mechanisms that
+    # can be used to wrap all kind of pymemcache clients. The retry wrapper
+    # allow you to define how many attempts to make and how long to wait
+    # between attempts. The section below will pass our config
+    # to dogpile.cache to setup the pymemcache retry client wrapper.
+    if conf.cache.enable_retry_client:
+        if conf.cache.backend != 'dogpile.cache.pymemcache':
+            msg = _(
+                "Retry client is only supported by the "
+                "'dogpile.cache.pymemcache' backend."
+            )
+            raise exception.ConfigurationError(msg)
+        import pymemcache
+        conf_dict['%s.arguments.enable_retry_client' % prefix] = True
+        conf_dict['%s.arguments.retry_attempts' % prefix] = \
+            conf.cache.retry_attempts
+        conf_dict['%s.arguments.retry_delay' % prefix] = \
+            conf.cache.retry_delay
+        conf_dict['%s.arguments.hashclient_retry_attempts' % prefix] = \
+            conf.cache.hashclient_retry_attempts
+        conf_dict['%s.arguments.hashclient_retry_delay' % prefix] = \
+            conf.cache.hashclient_retry_delay
+        conf_dict['%s.arguments.dead_timeout' % prefix] = \
+            conf.cache.dead_timeout
+
     return conf_dict
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.cache-2.8.1/oslo_cache/tests/unit/test_cache_backend_mongo.py 
new/oslo.cache-2.11.0/oslo_cache/tests/unit/test_cache_backend_mongo.py
--- old/oslo.cache-2.8.1/oslo_cache/tests/unit/test_cache_backend_mongo.py      
2021-06-15 11:58:40.000000000 +0200
+++ new/oslo.cache-2.11.0/oslo_cache/tests/unit/test_cache_backend_mongo.py     
2022-04-27 17:30:55.000000000 +0200
@@ -261,8 +261,6 @@
     import pymongo
     if pymongo.MongoClient is not MockMongoClient:
         pymongo.MongoClient = MockMongoClient
-    if pymongo.MongoReplicaSetClient is not MockMongoClient:
-        pymongo.MongoClient = MockMongoClient
 
 
 class MyTransformer(mongo.BaseTransform):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.cache-2.8.1/oslo_cache/tests/unit/test_cache_basics.py 
new/oslo.cache-2.11.0/oslo_cache/tests/unit/test_cache_basics.py
--- old/oslo.cache-2.8.1/oslo_cache/tests/unit/test_cache_basics.py     
2021-06-15 11:58:40.000000000 +0200
+++ new/oslo.cache-2.11.0/oslo_cache/tests/unit/test_cache_basics.py    
2022-04-27 17:30:55.000000000 +0200
@@ -21,6 +21,7 @@
 from dogpile.cache import proxy
 from oslo_config import cfg
 from oslo_utils import uuidutils
+from pymemcache import KeepaliveOpts
 
 from oslo_cache import _opts
 from oslo_cache import core as cache
@@ -280,7 +281,7 @@
         self.config_fixture.config(group='cache',
                                    enabled=True,
                                    config_prefix='test_prefix',
-                                   backend='oslo_cache.dict',
+                                   backend='dogpile.cache.pymemcache',
                                    tls_cafile='path_to_ca_file',
                                    tls_keyfile='path_to_key_file',
                                    tls_certfile='path_to_cert_file',
@@ -298,7 +299,7 @@
         self.config_fixture.config(group='cache',
                                    enabled=True,
                                    config_prefix='test_prefix',
-                                   backend='oslo_cache.dict',
+                                   backend='dogpile.cache.pymemcache',
                                    tls_enabled=True)
 
         fake_context = mock.Mock()
@@ -322,7 +323,7 @@
         self.config_fixture.config(group='cache',
                                    enabled=True,
                                    config_prefix='test_prefix',
-                                   backend='oslo_cache.dict',
+                                   backend='dogpile.cache.pymemcache',
                                    tls_enabled=True,
                                    tls_cafile='path_to_ca_file',
                                    tls_keyfile='path_to_key_file',
@@ -352,6 +353,210 @@
                 config_dict['test_prefix.arguments.tls_context'],
             )
 
+    def test_cache_pymemcache_socket_kalive_enabled_with_wrong_backend(self):
+        """Validate we build a config without the retry option when retry
+        is disabled.
+        """
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='oslo_cache.dict',
+                                   enable_socket_keepalive=True)
+
+        self.assertRaises(
+            exception.ConfigurationError,
+            cache._build_cache_config,
+            self.config_fixture.conf
+        )
+
+    def test_cache_pymemcache_socket_keepalive_disabled(self):
+        """Validate we build a dogpile.cache dict config without keepalive."""
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   socket_keepalive_idle=2,
+                                   socket_keepalive_interval=2,
+                                   socket_keepalive_count=2)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        self.assertFalse(
+            self.config_fixture.conf.cache.enable_socket_keepalive)
+        self.assertNotIn(
+            'test_prefix.arguments.socket_keepalive', config_dict)
+
+    def test_cache_pymemcache_socket_keepalive_enabled(self):
+        """Validate we build a dogpile.cache dict config with keepalive."""
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   enable_socket_keepalive=True)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        self.assertTrue(
+            self.config_fixture.conf.cache.enable_socket_keepalive)
+
+        self.assertIsInstance(
+            config_dict['test_prefix.arguments.socket_keepalive'],
+            KeepaliveOpts
+        )
+
+    def test_cache_pymemcache_socket_keepalive_with_config(self):
+        """Validate we build a socket keepalive with the right config."""
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   enable_socket_keepalive=True,
+                                   socket_keepalive_idle=12,
+                                   socket_keepalive_interval=38,
+                                   socket_keepalive_count=42)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        self.assertTrue(
+            self.config_fixture.conf.cache.enable_socket_keepalive)
+
+        self.assertTrue(
+            config_dict['test_prefix.arguments.socket_keepalive'],
+            KeepaliveOpts
+        )
+        self.assertEqual(
+            12,
+            config_dict['test_prefix.arguments.socket_keepalive'].idle
+        )
+        self.assertEqual(
+            38,
+            config_dict['test_prefix.arguments.socket_keepalive'].intvl
+        )
+        self.assertEqual(
+            42,
+            config_dict['test_prefix.arguments.socket_keepalive'].cnt
+        )
+
+    def test_cache_pymemcache_retry_enabled_with_wrong_backend(self):
+        """Validate we build a config without the retry option when retry
+        is disabled.
+        """
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='oslo_cache.dict',
+                                   enable_retry_client=True,
+                                   retry_attempts=2,
+                                   retry_delay=2)
+
+        self.assertRaises(
+            exception.ConfigurationError,
+            cache._build_cache_config,
+            self.config_fixture.conf
+        )
+
+    def test_cache_pymemcache_retry_disabled(self):
+        """Validate we build a config without the retry option when retry
+        is disabled.
+        """
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   retry_attempts=2,
+                                   retry_delay=2)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        opts = ['enable_retry_client', 'retry_attempts', 'retry_delay']
+
+        for el in opts:
+            self.assertNotIn('test_prefix.arguments.{}'.format(el),
+                             config_dict)
+
+    def test_cache_pymemcache_retry_enabled(self):
+        """Validate we build a dogpile.cache dict config with retry."""
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   enable_retry_client=True)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        opts = ['enable_retry_client', 'retry_attempts', 'retry_delay']
+
+        for el in opts:
+            self.assertIn('test_prefix.arguments.{}'.format(el), config_dict)
+
+    def test_cache_pymemcache_retry_with_opts(self):
+        """Validate we build a valid config for the retry client."""
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   enable_retry_client=True,
+                                   retry_attempts=42,
+                                   retry_delay=42)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        self.assertTrue(
+            self.config_fixture.conf.cache.enable_retry_client)
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.retry_attempts'],
+            42
+        )
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.retry_delay'],
+            42
+        )
+
+    def test_cache_pymemcache_retry_with_extra_opts(self):
+        """Validate we build a valid config for the retry client."""
+        self.config_fixture.config(group='cache',
+                                   enabled=True,
+                                   config_prefix='test_prefix',
+                                   backend='dogpile.cache.pymemcache',
+                                   enable_retry_client=True,
+                                   retry_attempts=42,
+                                   retry_delay=42,
+                                   hashclient_retry_attempts=100,
+                                   hashclient_retry_delay=100,
+                                   dead_timeout=100)
+
+        config_dict = cache._build_cache_config(self.config_fixture.conf)
+
+        self.assertTrue(
+            self.config_fixture.conf.cache.enable_retry_client)
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.retry_attempts'],
+            42
+        )
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.retry_delay'],
+            42
+        )
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.hashclient_retry_attempts'],
+            100
+        )
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.hashclient_retry_delay'],
+            100
+        )
+
+        self.assertEqual(
+            config_dict['test_prefix.arguments.dead_timeout'],
+            100
+        )
+
     def test_cache_dictionary_config_builder_flush_on_reconnect_enabled(self):
         """Validate we build a sane dogpile.cache dictionary config."""
         self.config_fixture.config(group='cache',
@@ -431,7 +636,7 @@
 class UTF8KeyManglerTests(test_cache.BaseTestCase):
 
     def test_key_is_utf8_encoded(self):
-        key = u'f??k??1'
+        key = 'f??k??1'
         encoded = cache._sha1_mangle_key(key)
         self.assertIsNotNone(encoded)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.cache-2.8.1/releasenotes/notes/pymemcache_hashclient_configure-f6f48c5ca38bce47.yaml
 
new/oslo.cache-2.11.0/releasenotes/notes/pymemcache_hashclient_configure-f6f48c5ca38bce47.yaml
--- 
old/oslo.cache-2.8.1/releasenotes/notes/pymemcache_hashclient_configure-f6f48c5ca38bce47.yaml
       1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.cache-2.11.0/releasenotes/notes/pymemcache_hashclient_configure-f6f48c5ca38bce47.yaml
      2022-04-27 17:30:55.000000000 +0200
@@ -0,0 +1,8 @@
+---
+features:
+  - |
+    Add new options (``hashclient_retry_attempts``, ``hashclient_retry_delay``,
+    ``dead_timeout``) to allow to configure pymemcache's HashClient use
+    through dogpile.cache's pymemcache backend. Those options expose
+    pymemcache params that allow to configure the failover for memcached
+    cluster.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.cache-2.8.1/releasenotes/notes/pymemcache_retry_mecchanisms-fa969d1ac6f64096.yaml
 
new/oslo.cache-2.11.0/releasenotes/notes/pymemcache_retry_mecchanisms-fa969d1ac6f64096.yaml
--- 
old/oslo.cache-2.8.1/releasenotes/notes/pymemcache_retry_mecchanisms-fa969d1ac6f64096.yaml
  1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.cache-2.11.0/releasenotes/notes/pymemcache_retry_mecchanisms-fa969d1ac6f64096.yaml
 2022-04-27 17:30:55.000000000 +0200
@@ -0,0 +1,5 @@
+---
+features:
+  - |
+    Add new options (``enable_retry_client``, ``retry_attempts``,
+    ``retry_delay``) to add retry mechanisms to the pymemcache backend.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/oslo.cache-2.8.1/releasenotes/notes/pymemcache_socket_keepalive-f91c69770961e2b6.yaml
 
new/oslo.cache-2.11.0/releasenotes/notes/pymemcache_socket_keepalive-f91c69770961e2b6.yaml
--- 
old/oslo.cache-2.8.1/releasenotes/notes/pymemcache_socket_keepalive-f91c69770961e2b6.yaml
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/oslo.cache-2.11.0/releasenotes/notes/pymemcache_socket_keepalive-f91c69770961e2b6.yaml
  2022-04-27 17:30:55.000000000 +0200
@@ -0,0 +1,6 @@
+---
+features:
+  - |
+    New options (``enable_socket_keepalive``, ``socket_keepalive_idle``,
+    ``socket_keepalive_interval``, ``socket_keepalive_count``) allow to use
+    and configure pymemcache's socket keepalive capabilities.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/releasenotes/source/conf.py 
new/oslo.cache-2.11.0/releasenotes/source/conf.py
--- old/oslo.cache-2.8.1/releasenotes/source/conf.py    2021-06-15 
11:58:40.000000000 +0200
+++ new/oslo.cache-2.11.0/releasenotes/source/conf.py   2022-04-27 
17:30:55.000000000 +0200
@@ -58,8 +58,8 @@
 master_doc = 'index'
 
 # General information about the project.
-project = u'oslo.cache Release Notes'
-copyright = u'2016, oslo.cache Developers'
+project = 'oslo.cache Release Notes'
+copyright = '2016, oslo.cache Developers'
 
 # Release notes do not need a version in the title, they span
 # multiple versions.
@@ -208,8 +208,8 @@
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
     ('index', 'oslo.cacheReleaseNotes.tex',
-     u'oslo.cache Release Notes Documentation',
-     u'oslo.cache Developers', 'manual'),
+     'oslo.cache Release Notes Documentation',
+     'oslo.cache Developers', 'manual'),
 ]
 
 # The name of an image file (relative to this directory) to place at the top of
@@ -238,8 +238,8 @@
 # (source start file, name, description, authors, manual section).
 man_pages = [
     ('index', 'oslo.cacheReleaseNotes',
-     u'oslo.cache Release Notes Documentation',
-     [u'oslo.cache Developers'], 1)
+     'oslo.cache Release Notes Documentation',
+     ['oslo.cache Developers'], 1)
 ]
 
 # If true, show URL addresses after external links.
@@ -252,8 +252,8 @@
 #  dir menu entry, description, category)
 texinfo_documents = [
     ('index', 'oslo.cacheReleaseNotes',
-     u'oslo.cache Release Notes Documentation',
-     u'oslo.cache Developers', 'oslo.cacheReleaseNotes',
+     'oslo.cache Release Notes Documentation',
+     'oslo.cache Developers', 'oslo.cacheReleaseNotes',
      'One line description of project.',
      'Miscellaneous'),
 ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/releasenotes/source/index.rst 
new/oslo.cache-2.11.0/releasenotes/source/index.rst
--- old/oslo.cache-2.8.1/releasenotes/source/index.rst  2021-06-15 
11:58:40.000000000 +0200
+++ new/oslo.cache-2.11.0/releasenotes/source/index.rst 2022-04-27 
17:30:55.000000000 +0200
@@ -6,6 +6,8 @@
    :maxdepth: 1
 
    unreleased
+   yoga
+   xena
    wallaby
    victoria
    ussuri
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/releasenotes/source/xena.rst 
new/oslo.cache-2.11.0/releasenotes/source/xena.rst
--- old/oslo.cache-2.8.1/releasenotes/source/xena.rst   1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.cache-2.11.0/releasenotes/source/xena.rst  2022-04-27 
17:30:55.000000000 +0200
@@ -0,0 +1,6 @@
+=========================
+Xena Series Release Notes
+=========================
+
+.. release-notes::
+   :branch: stable/xena
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/releasenotes/source/yoga.rst 
new/oslo.cache-2.11.0/releasenotes/source/yoga.rst
--- old/oslo.cache-2.8.1/releasenotes/source/yoga.rst   1970-01-01 
01:00:00.000000000 +0100
+++ new/oslo.cache-2.11.0/releasenotes/source/yoga.rst  2022-04-27 
17:30:55.000000000 +0200
@@ -0,0 +1,6 @@
+=========================
+Yoga Series Release Notes
+=========================
+
+.. release-notes::
+   :branch: stable/yoga
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/requirements.txt 
new/oslo.cache-2.11.0/requirements.txt
--- old/oslo.cache-2.8.1/requirements.txt       2021-06-15 11:58:40.000000000 
+0200
+++ new/oslo.cache-2.11.0/requirements.txt      2022-04-27 17:30:55.000000000 
+0200
@@ -2,7 +2,7 @@
 # of appearance. Changing the order has an impact on the overall integration
 # process, which may cause wedges in the gate later.
 
-dogpile.cache>=1.1.2 # BSD
+dogpile.cache>=1.1.5 # BSD
 oslo.config>=8.1.0 # Apache-2.0
 oslo.i18n>=5.0.0 # Apache-2.0
 oslo.log>=4.2.1 # Apache-2.0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/setup.cfg 
new/oslo.cache-2.11.0/setup.cfg
--- old/oslo.cache-2.8.1/setup.cfg      2021-06-15 12:12:28.270253400 +0200
+++ new/oslo.cache-2.11.0/setup.cfg     2022-04-27 17:31:26.557113000 +0200
@@ -14,9 +14,12 @@
        License :: OSI Approved :: Apache Software License
        Operating System :: POSIX :: Linux
        Programming Language :: Python
+       Programming Language :: Python :: 3 :: Only
        Programming Language :: Python :: 3
        Programming Language :: Python :: 3.6
        Programming Language :: Python :: 3.7
+       Programming Language :: Python :: 3.8
+       Programming Language :: Python :: 3.9
 
 [files]
 packages = 
@@ -34,6 +37,7 @@
 [extras]
 dogpile = 
        python-memcached>=1.56 # PSF
+       pymemcache>=3.5.0 # Apache-2.0
 mongo = 
        pymongo!=3.1,>=3.0.2 # Apache-2.0
 etcd3gw = 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/oslo.cache-2.8.1/test-requirements.txt 
new/oslo.cache-2.11.0/test-requirements.txt
--- old/oslo.cache-2.8.1/test-requirements.txt  2021-06-15 11:58:40.000000000 
+0200
+++ new/oslo.cache-2.11.0/test-requirements.txt 2022-04-27 17:30:55.000000000 
+0200
@@ -8,7 +8,7 @@
 bandit>=1.6.0,<1.7.0 # Apache-2.0
 stestr>=2.0.0 # Apache-2.0
 pre-commit>=2.6.0 # MIT
-pymemcache>=3.4.0 # Apache-2.0
+pymemcache>=3.5.0 # Apache-2.0
 python-binary-memcached>=0.29.0 # MIT
 python-memcached>=1.56 # PSF
 pymongo!=3.1,>=3.0.2 # Apache-2.0

Reply via email to