From 9c583cd3bb541aca4cda5c71b1cd2724c2f91163 Mon Sep 17 00:00:00 2001 From: smutel <12967891+smutel@users.noreply.github.com> Date: Sat, 11 Dec 2021 18:30:39 +0100 Subject: [PATCH] feat: Able to connect to sentinel with a password --- docs/configuration/required-settings.md | 3 +++ netbox/netbox/settings.py | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/configuration/required-settings.md b/docs/configuration/required-settings.md index a62d14fef..b4f0ee1e8 100644 --- a/docs/configuration/required-settings.md +++ b/docs/configuration/required-settings.md @@ -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, diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py index 40c31b74d..c4a18ebab 100644 --- a/netbox/netbox/settings.py +++ b/netbox/netbox/settings.py @@ -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: