[stable-2.7] Support version 3 of the redis python library (#49445)

* Support version 3 of the redis python library. Fixes #49341

* Document 2.4.5 minimum redis-py version
(cherry picked from commit 77de219)

Co-authored-by: Matt Martz <matt@sivel.net>
This commit is contained in:
Matt Martz 2018-12-05 12:08:53 -06:00 committed by Toshio Kuratomi
parent 1af07cc38f
commit acdd4cbfcd
2 changed files with 9 additions and 4 deletions

View file

@ -0,0 +1,2 @@
bugfixes:
- redis cache - Support version 3 of the redis python library (https://github.com/ansible/ansible/issues/49341)

View file

@ -11,7 +11,7 @@ DOCUMENTATION = '''
- This cache uses JSON formatted, per host records saved in Redis.
version_added: "1.9"
requirements:
- redis (python lib)
- redis>=2.4.5 (python lib)
options:
_uri:
description:
@ -48,9 +48,9 @@ from ansible.errors import AnsibleError
from ansible.plugins.cache import BaseCacheModule
try:
from redis import StrictRedis
from redis import StrictRedis, VERSION
except ImportError:
raise AnsibleError("The 'redis' python module is required for the redis fact cache, 'pip install redis'")
raise AnsibleError("The 'redis' python module (version 2.4.5 or newer) is required for the redis fact cache, 'pip install redis'")
class CacheModule(BaseCacheModule):
@ -99,7 +99,10 @@ class CacheModule(BaseCacheModule):
else:
self._db.set(self._make_key(key), value2)
self._db.zadd(self._keys_set, time.time(), key)
if VERSION[0] == 2:
self._db.zadd(self._keys_set, time.time(), key)
else:
self._db.zadd(self._keys_set, {key: time.time()})
self._cache[key] = value
def _expire_keys(self):