feat: Able to connect to sentinel with a password

This commit is contained in:
smutel 2021-12-11 18:30:39 +01:00
parent 5b0c79629e
commit 9c583cd3bb
2 changed files with 9 additions and 1 deletions

View File

@ -108,6 +108,7 @@ above and the addition of three new keys.
of the Redis server and port for each sentinel instance to connect to
* `SENTINEL_SERVICE`: Name of the master / service to connect to
* `SENTINEL_TIMEOUT`: Connection timeout, in seconds
* `SENTINEL_PASSWORD`: Password to connect to sentinel (if set)
Example:
@ -117,6 +118,7 @@ REDIS = {
'SENTINELS': [('mysentinel.redis.example.com', 6379)],
'SENTINEL_SERVICE': 'netbox',
'SENTINEL_TIMEOUT': 10,
'SENTINEL_PASSWORD': '',
'PASSWORD': '',
'DATABASE': 0,
'SSL': False,
@ -127,6 +129,7 @@ REDIS = {
('othersentinel.redis.example.com', 6379)
],
'SENTINEL_SERVICE': 'netbox',
'SENTINEL_PASSWORD': '',
'PASSWORD': '',
'DATABASE': 1,
'SSL': False,

View File

@ -218,6 +218,7 @@ TASKS_REDIS_USING_SENTINEL = all([
])
TASKS_REDIS_SENTINEL_SERVICE = TASKS_REDIS.get('SENTINEL_SERVICE', 'default')
TASKS_REDIS_SENTINEL_TIMEOUT = TASKS_REDIS.get('SENTINEL_TIMEOUT', 10)
TASKS_REDIS_SENTINEL_PASSWORD = TASKS_REDIS.get('SENTINEL_PASSWORD', '')
TASKS_REDIS_PASSWORD = TASKS_REDIS.get('PASSWORD', '')
TASKS_REDIS_DATABASE = TASKS_REDIS.get('DATABASE', 0)
TASKS_REDIS_SSL = TASKS_REDIS.get('SSL', False)
@ -234,6 +235,7 @@ CACHING_REDIS_DATABASE = REDIS['caching'].get('DATABASE', 0)
CACHING_REDIS_PASSWORD = REDIS['caching'].get('PASSWORD', '')
CACHING_REDIS_SENTINELS = REDIS['caching'].get('SENTINELS', [])
CACHING_REDIS_SENTINEL_SERVICE = REDIS['caching'].get('SENTINEL_SERVICE', 'default')
CACHING_REDIS_SENTINEL_PASSWORD = REDIS['caching'].get('SENTINEL_PASSWORD', '')
CACHING_REDIS_PROTO = 'rediss' if REDIS['caching'].get('SSL', False) else 'redis'
CACHING_REDIS_SKIP_TLS_VERIFY = REDIS['caching'].get('INSECURE_SKIP_TLS_VERIFY', False)
@ -252,6 +254,8 @@ if CACHING_REDIS_SENTINELS:
CACHES['default']['LOCATION'] = f'{CACHING_REDIS_PROTO}://{CACHING_REDIS_SENTINEL_SERVICE}/{CACHING_REDIS_DATABASE}'
CACHES['default']['OPTIONS']['CLIENT_CLASS'] = 'django_redis.client.SentinelClient'
CACHES['default']['OPTIONS']['SENTINELS'] = CACHING_REDIS_SENTINELS
if CACHING_REDIS_SENTINEL_PASSWORD != '':
CACHES['default']['OPTIONS']['SENTINEL_KWARGS'] = {"password": CACHING_REDIS_SENTINEL_PASSWORD}
if CACHING_REDIS_SKIP_TLS_VERIFY:
CACHES['default']['OPTIONS'].setdefault('CONNECTION_POOL_KWARGS', {})
CACHES['default']['OPTIONS']['CONNECTION_POOL_KWARGS']['ssl_cert_reqs'] = False
@ -559,7 +563,8 @@ if TASKS_REDIS_USING_SENTINEL:
'PASSWORD': TASKS_REDIS_PASSWORD,
'SOCKET_TIMEOUT': None,
'CONNECTION_KWARGS': {
'socket_connect_timeout': TASKS_REDIS_SENTINEL_TIMEOUT
'socket_connect_timeout': TASKS_REDIS_SENTINEL_TIMEOUT,
'password': TASKS_REDIS_SENTINEL_PASSWORD
},
}
else: