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
pull/41420/merge
Matt Martz 6 years ago committed by GitHub
parent be8b08f946
commit 77de219836
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

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

@ -11,7 +11,7 @@ DOCUMENTATION = '''
- This cache uses JSON formatted, per host records saved in Redis. - This cache uses JSON formatted, per host records saved in Redis.
version_added: "1.9" version_added: "1.9"
requirements: requirements:
- redis (python lib) - redis>=2.4.5 (python lib)
options: options:
_uri: _uri:
description: description:
@ -48,9 +48,9 @@ from ansible.errors import AnsibleError
from ansible.plugins.cache import BaseCacheModule from ansible.plugins.cache import BaseCacheModule
try: try:
from redis import StrictRedis from redis import StrictRedis, VERSION
except ImportError: 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): class CacheModule(BaseCacheModule):
@ -99,7 +99,10 @@ class CacheModule(BaseCacheModule):
else: else:
self._db.set(self._make_key(key), value2) 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 self._cache[key] = value
def _expire_keys(self): def _expire_keys(self):

Loading…
Cancel
Save