Skip to content
Snippets Groups Projects
Commit 55e75995 authored by Erik Reid's avatar Erik Reid
Browse files

support sentinel for finding redis master

parent 25a8cab4
No related branches found
No related tags found
No related merge requests found
......@@ -44,6 +44,16 @@ CONFIG_SCHEMA = {
"required": ["hostname", "port"],
"additionalProperties": False
},
"sentinel": {
"type": "object",
"properties": {
"hostname": {"type": "string"},
"port": {"type": "integer"},
"name": {"type": "string"}
},
"required": ["hostname", "port"],
"additionalProperties": False
},
"junosspace": {
"api": {"type": "string"},
"username": {"type": "string"},
......@@ -74,14 +84,28 @@ CONFIG_SCHEMA = {
}
}
},
"required": [
"ops-db",
"oid_list.conf",
"ssh",
"redis",
"junosspace",
"infinera-dna",
"coriant-tnms"],
"oneOf": [
{
"required": [
"ops-db",
"oid_list.conf",
"ssh",
"redis",
"junosspace",
"infinera-dna",
"coriant-tnms"]
},
{
"required": [
"ops-db",
"oid_list.conf",
"ssh",
"sentinel",
"junosspace",
"infinera-dna",
"coriant-tnms"]
}
],
"additionalProperties": False
}
......
......@@ -46,7 +46,7 @@
"loggers": {
"inventory_provider": {
"level": "INFO",
"level": "DEBUG",
"handlers": ["console", "syslog_handler"],
"propagate": false
},
......
......@@ -2,7 +2,7 @@ import functools
import logging
from flask import request, Response, current_app, g
import redis
from inventory_provider.tasks.common import get_redis as tasks_get_redis
logger = logging.getLogger(__name__)
......@@ -10,10 +10,7 @@ logger = logging.getLogger(__name__)
def get_redis():
if 'redis_db' not in g:
config = current_app.config['INVENTORY_PROVIDER_CONFIG']
g.redis_db = redis.StrictRedis(
host=config['redis']['hostname'],
port=config['redis']['port'])
g.redis_db = tasks_get_redis(config)
return g.redis_db
......
import redis
import redis.sentinel
def get_redis(config):
return redis.StrictRedis(
host=config['redis']['hostname'],
port=config['redis']['port'])
if 'sentinel' in config:
sentinel = redis.sentinel.Sentinel([(
config['sentinel']['hostname'],
config['sentinel']['port'])],
socket_timeout=0.1)
return sentinel.master_for(
config['sentinel']['name'],
socket_timeout=0.1)
else:
return redis.StrictRedis(
host=config['redis']['hostname'],
port=config['redis']['port'])
......@@ -157,7 +157,7 @@ def app_config():
def client(app_config, mocker):
mocker.patch(
'inventory_provider.routes.common.redis.StrictRedis',
'inventory_provider.tasks.common.redis.StrictRedis',
MockedRedis)
os.environ["SETTINGS_FILENAME"] = app_config
......@@ -166,19 +166,15 @@ def client(app_config, mocker):
@pytest.fixture
def client_with_mocked_data(client, mocker):
def mocked_redis(mocker):
mocker.patch(
'inventory_provider.routes.common.redis.StrictRedis',
'inventory_provider.tasks.common.redis.StrictRedis',
MockedRedis)
return client
@pytest.fixture
def mocked_redis(mocker):
mocker.patch(
'inventory_provider.routes.common.redis.StrictRedis',
MockedRedis)
def client_with_mocked_data(client, mocked_redis):
return client
NETIFACES_TEST_DATA_STRING = """{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment