feat: Add redis sentinel support

this allows setting of the redis sentinel settings defined here:
https://demo.netbox.dev/static/docs/configuration/required-settings/#using-redis-sentinel
This commit is contained in:
Joel T 2024-01-08 17:17:00 -05:00 committed by Joel Tague
parent ea81db4789
commit 5967295163

View File

@ -82,7 +82,29 @@ DATABASE = {
# Redis database settings. Redis is used for caching and for queuing background tasks such as webhook events. A separate
# configuration exists for each. Full connection details are required in both sections, and it is strongly recommended
# to use two separate database IDs.
REDIS = {
if 'REDIS_SENTINELS' in environ:
REDIS = {
'tasks': {
'SENTINELS': environ.get('REDIS_SENTINELS', ''),
'SENTINEL_SERVICE': environ.get('REDIS_SENTINEL_SERVICE', 'netbox'),
'SENTINEL_TIMEOUT': _environ_get_and_map('SENTINEL_TIMEOUT', 10, _AS_INT),
'PASSWORD': _read_secret('redis_password', environ.get('REDIS_PASSWORD', '')),
'DATABASE': _environ_get_and_map('REDIS_DATABASE', 0, _AS_INT),
'SSL': _environ_get_and_map('REDIS_SSL', 'False', _AS_BOOL),
'INSECURE_SKIP_TLS_VERIFY': _environ_get_and_map('REDIS_INSECURE_SKIP_TLS_VERIFY', 'False', _AS_BOOL),
},
'caching': {
'SENTINELS': environ.get('REDIS_SENTINELS', ''),
'SENTINEL_SERVICE': environ.get('REDIS_SENTINEL_SERVICE', 'netbox'),
'SENTINEL_TIMEOUT': _environ_get_and_map('SENTINEL_TIMEOUT', 10, _AS_INT),
'PASSWORD': _read_secret('redis_cache_password', environ.get('REDIS_CACHE_PASSWORD', environ.get('REDIS_PASSWORD', ''))),
'DATABASE': _environ_get_and_map('REDIS_CACHE_DATABASE', '1', _AS_INT),
'SSL': _environ_get_and_map('REDIS_CACHE_SSL', environ.get('REDIS_SSL', 'False'), _AS_BOOL),
'INSECURE_SKIP_TLS_VERIFY': _environ_get_and_map('REDIS_CACHE_INSECURE_SKIP_TLS_VERIFY', environ.get('REDIS_INSECURE_SKIP_TLS_VERIFY', 'False'), _AS_BOOL),
},
}
else
REDIS = {
'tasks': {
'HOST': environ.get('REDIS_HOST', 'localhost'),
'PORT': _environ_get_and_map('REDIS_PORT', 6379, _AS_INT),
@ -101,7 +123,7 @@ REDIS = {
'SSL': _environ_get_and_map('REDIS_CACHE_SSL', environ.get('REDIS_SSL', 'False'), _AS_BOOL),
'INSECURE_SKIP_TLS_VERIFY': _environ_get_and_map('REDIS_CACHE_INSECURE_SKIP_TLS_VERIFY', environ.get('REDIS_INSECURE_SKIP_TLS_VERIFY', 'False'), _AS_BOOL),
},
}
}
# This key is used for secure generation of random numbers and strings. It must never be exposed outside of this file.
# For optimal security, SECRET_KEY should be at least 50 characters in length and contain a mix of letters, numbers, and