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