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 = { ...@@ -44,6 +44,16 @@ CONFIG_SCHEMA = {
"required": ["hostname", "port"], "required": ["hostname", "port"],
"additionalProperties": False "additionalProperties": False
}, },
"sentinel": {
"type": "object",
"properties": {
"hostname": {"type": "string"},
"port": {"type": "integer"},
"name": {"type": "string"}
},
"required": ["hostname", "port"],
"additionalProperties": False
},
"junosspace": { "junosspace": {
"api": {"type": "string"}, "api": {"type": "string"},
"username": {"type": "string"}, "username": {"type": "string"},
...@@ -74,14 +84,28 @@ CONFIG_SCHEMA = { ...@@ -74,14 +84,28 @@ CONFIG_SCHEMA = {
} }
} }
}, },
"required": [ "oneOf": [
"ops-db", {
"oid_list.conf", "required": [
"ssh", "ops-db",
"redis", "oid_list.conf",
"junosspace", "ssh",
"infinera-dna", "redis",
"coriant-tnms"], "junosspace",
"infinera-dna",
"coriant-tnms"]
},
{
"required": [
"ops-db",
"oid_list.conf",
"ssh",
"sentinel",
"junosspace",
"infinera-dna",
"coriant-tnms"]
}
],
"additionalProperties": False "additionalProperties": False
} }
......
...@@ -46,7 +46,7 @@ ...@@ -46,7 +46,7 @@
"loggers": { "loggers": {
"inventory_provider": { "inventory_provider": {
"level": "INFO", "level": "DEBUG",
"handlers": ["console", "syslog_handler"], "handlers": ["console", "syslog_handler"],
"propagate": false "propagate": false
}, },
......
...@@ -2,7 +2,7 @@ import functools ...@@ -2,7 +2,7 @@ import functools
import logging import logging
from flask import request, Response, current_app, g 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__) logger = logging.getLogger(__name__)
...@@ -10,10 +10,7 @@ logger = logging.getLogger(__name__) ...@@ -10,10 +10,7 @@ logger = logging.getLogger(__name__)
def get_redis(): def get_redis():
if 'redis_db' not in g: if 'redis_db' not in g:
config = current_app.config['INVENTORY_PROVIDER_CONFIG'] config = current_app.config['INVENTORY_PROVIDER_CONFIG']
g.redis_db = redis.StrictRedis( g.redis_db = tasks_get_redis(config)
host=config['redis']['hostname'],
port=config['redis']['port'])
return g.redis_db return g.redis_db
......
import redis import redis
import redis.sentinel
def get_redis(config): def get_redis(config):
return redis.StrictRedis( if 'sentinel' in config:
host=config['redis']['hostname'], sentinel = redis.sentinel.Sentinel([(
port=config['redis']['port']) 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(): ...@@ -157,7 +157,7 @@ def app_config():
def client(app_config, mocker): def client(app_config, mocker):
mocker.patch( mocker.patch(
'inventory_provider.routes.common.redis.StrictRedis', 'inventory_provider.tasks.common.redis.StrictRedis',
MockedRedis) MockedRedis)
os.environ["SETTINGS_FILENAME"] = app_config os.environ["SETTINGS_FILENAME"] = app_config
...@@ -166,19 +166,15 @@ def client(app_config, mocker): ...@@ -166,19 +166,15 @@ def client(app_config, mocker):
@pytest.fixture @pytest.fixture
def client_with_mocked_data(client, mocker): def mocked_redis(mocker):
mocker.patch( mocker.patch(
'inventory_provider.routes.common.redis.StrictRedis', 'inventory_provider.tasks.common.redis.StrictRedis',
MockedRedis) MockedRedis)
return client
@pytest.fixture @pytest.fixture
def mocked_redis(mocker): def client_with_mocked_data(client, mocked_redis):
mocker.patch( return client
'inventory_provider.routes.common.redis.StrictRedis',
MockedRedis)
NETIFACES_TEST_DATA_STRING = """{ 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