From edd10f7a9c149f70d1d92a12d691a0d230aebba5 Mon Sep 17 00:00:00 2001 From: Corey Bryant Date: Thu, 29 Sep 2022 11:51:52 -0400 Subject: [PATCH] Allow bmemcached to be optional for memcache_pool This allows oslo_cache.memcache_pool to be used without the python-binary-memcached package being installed, as it is only required if sasl_enabled is set to True. Closes-Bug: #1991250 Change-Id: I7e6cc83864be68e946d86b1f4b44847b95ea8b05 --- oslo_cache/backends/memcache_pool.py | 10 +++++++++- releasenotes/notes/bug-1991250-23bc3463273e5a91.yaml | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/bug-1991250-23bc3463273e5a91.yaml diff --git a/oslo_cache/backends/memcache_pool.py b/oslo_cache/backends/memcache_pool.py index fa640dc3..cf68a884 100644 --- a/oslo_cache/backends/memcache_pool.py +++ b/oslo_cache/backends/memcache_pool.py @@ -19,7 +19,13 @@ import functools from dogpile.cache.backends import memcached as memcached_backend -from oslo_cache import _bmemcache_pool +try: + from oslo_cache import _bmemcache_pool +except ImportError as e: + if str(e) == "No module named 'bmemcached'": + _bmemcache_pool = None + else: + raise from oslo_cache import _memcache_pool @@ -57,6 +63,8 @@ class PooledMemcachedBackend(memcached_backend.MemcachedBackend): def __init__(self, arguments): super(PooledMemcachedBackend, self).__init__(arguments) if arguments.get('sasl_enabled', False): + if not _bmemcache_pool: + raise ImportError("python-binary-memcached package is missing") self.client_pool = _bmemcache_pool.BMemcacheClientPool( self.url, arguments, diff --git a/releasenotes/notes/bug-1991250-23bc3463273e5a91.yaml b/releasenotes/notes/bug-1991250-23bc3463273e5a91.yaml new file mode 100644 index 00000000..43316ed4 --- /dev/null +++ b/releasenotes/notes/bug-1991250-23bc3463273e5a91.yaml @@ -0,0 +1,7 @@ +--- +fixes: + - | + [`bug 1991250 `_] + The python-binary-memcached package is only required if sasl_enabled=True. + When sasl_enabled=False (default), the memcache_pool backend can be used + without the python-binary-memcached package installed.