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

Finished feature fix-check-comparision.

parents 643f78e6 d4f5413c
No related branches found
No related tags found
No related merge requests found
include brian_polling_manager/logging_default_config.json
...@@ -30,7 +30,7 @@ from typing import Union ...@@ -30,7 +30,7 @@ from typing import Union
import click import click
import jsonschema import jsonschema
from brian_polling_manager import inventory, interfaces from brian_polling_manager import inventory, interfaces, environment
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
...@@ -59,7 +59,8 @@ _DEFAULT_CONFIG = { ...@@ -59,7 +59,8 @@ _DEFAULT_CONFIG = {
'{interface} {ifIndex}'), '{interface} {ifIndex}'),
} }
}, },
'statedir': '/tmp/' 'statedir': '/tmp/',
'logging': environment.DEFAULT_LOGGING_FILENAME
} }
CONFIG_SCHEMA = { CONFIG_SCHEMA = {
...@@ -111,7 +112,8 @@ CONFIG_SCHEMA = { ...@@ -111,7 +112,8 @@ CONFIG_SCHEMA = {
'minItems': 1 'minItems': 1
}, },
'sensu': {'$ref': '#/definitions/sensu'}, 'sensu': {'$ref': '#/definitions/sensu'},
'statedir': {'type': 'string'} 'statedir': {'type': 'string'},
'logging': {'type': 'string'}
}, },
'required': ['inventory', 'sensu', 'statedir'], 'required': ['inventory', 'sensu', 'statedir'],
'additionalProperties': False 'additionalProperties': False
...@@ -186,7 +188,7 @@ class State(object): ...@@ -186,7 +188,7 @@ class State(object):
f.write(json.dumps(new_interfaces)) f.write(json.dumps(new_interfaces))
def _validate_config(ctx, param, value): def _validate_config(ctx, param, file):
""" """
loads, validates and returns configuration parameters loads, validates and returns configuration parameters
...@@ -195,12 +197,11 @@ def _validate_config(ctx, param, value): ...@@ -195,12 +197,11 @@ def _validate_config(ctx, param, value):
:param value: filename (string) :param value: filename (string)
:return: a dict containing configuration parameters :return: a dict containing configuration parameters
""" """
if value is None: if file is None:
config = _DEFAULT_CONFIG config = _DEFAULT_CONFIG
else: else:
try: try:
with open(value) as f: config = json.loads(file.read())
config = json.loads(f.read())
except (json.JSONDecodeError, jsonschema.ValidationError) as e: except (json.JSONDecodeError, jsonschema.ValidationError) as e:
raise click.BadParameter(str(e)) raise click.BadParameter(str(e))
...@@ -209,6 +210,8 @@ def _validate_config(ctx, param, value): ...@@ -209,6 +210,8 @@ def _validate_config(ctx, param, value):
except jsonschema.ValidationError as e: except jsonschema.ValidationError as e:
raise click.BadParameter(str(e)) raise click.BadParameter(str(e))
environment.setup_logging(config.get('logging', None))
return config return config
...@@ -216,13 +219,13 @@ def _validate_config(ctx, param, value): ...@@ -216,13 +219,13 @@ def _validate_config(ctx, param, value):
@click.option( @click.option(
'--config', '--config',
default=None, default=None,
type=click.STRING, type=click.File('r'),
callback=_validate_config, callback=_validate_config,
help='configuration filename') help='configuration filename')
@click.option( @click.option(
'--force/--no-force', '--force/--no-force',
default=False, default=False,
help="update even if inventory hasn't been updated") help="refresh inventory data even if it hasn't been updated")
def main(config, force): def main(config, force):
""" """
Update BRIAN snmp checks based on Inventory Provider data. Update BRIAN snmp checks based on Inventory Provider data.
...@@ -238,5 +241,4 @@ def main(config, force): ...@@ -238,5 +241,4 @@ def main(config, force):
if __name__ == '__main__': if __name__ == '__main__':
logging.basicConfig(level=logging.DEBUG)
main() main()
import json
import logging.config
import os
DEFAULT_LOGGING_FILENAME = os.path.join(
os.path.dirname(__file__),
'logging_default_config.json')
def setup_logging(filename=None):
"""
set up logging using the configured filename
"""
if not filename:
filename = DEFAULT_LOGGING_FILENAME
with open(filename) as f:
# TODO: this mac workaround should be removed ...
d = json.loads(f.read())
import platform
if platform.system() == 'Darwin':
d['handlers']['syslog_handler']['address'] = '/var/run/syslog'
logging.config.dictConfig(d)
# logging.config.dictConfig(json.loads(f.read()))
...@@ -46,8 +46,8 @@ def _make_check(check_params, interface): ...@@ -46,8 +46,8 @@ def _make_check(check_params, interface):
def _checks_match(a, b) -> bool: def _checks_match(a, b) -> bool:
# if a['command'] != b['command']: if a['command'] != b['command']:
# return False return False
if a['interval'] != b['interval']: if a['interval'] != b['interval']:
return False return False
if a['proxy_entity_name'] != b['proxy_entity_name']: if a['proxy_entity_name'] != b['proxy_entity_name']:
......
{
"version": 1,
"disable_existing_loggers": false,
"formatters": {
"simple": {
"format": "%(asctime)s - %(name)s (%(lineno)d) - %(levelname)s - %(message)s"
}
},
"handlers": {
"console": {
"class": "logging.StreamHandler",
"level": "DEBUG",
"formatter": "simple",
"stream": "ext://sys.stdout"
},
"syslog_handler": {
"class": "logging.handlers.SysLogHandler",
"level": "DEBUG",
"address": "/dev/log",
"facility": "user",
"formatter": "simple"
},
"info_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "INFO",
"formatter": "simple",
"filename": "info.log",
"maxBytes": 10485760,
"backupCount": 20,
"encoding": "utf8"
},
"error_file_handler": {
"class": "logging.handlers.RotatingFileHandler",
"level": "ERROR",
"formatter": "simple",
"filename": "errors.log",
"maxBytes": 10485760,
"backupCount": 20,
"encoding": "utf8"
}
},
"loggers": {
"brian_polling_manager": {
"level": "DEBUG",
"handlers": ["console", "syslog_handler"],
"propagate": false
}
},
"root": {
"level": "DEBUG",
"handlers": ["console", "syslog_handler"]
}
}
...@@ -23,7 +23,7 @@ def load_all_checks(params, namespace='default'): ...@@ -23,7 +23,7 @@ def load_all_checks(params, namespace='default'):
def create_check(params, check, namespace='default'): def create_check(params, check, namespace='default'):
logger.debug(f'creating missing check: {check["metadata"]["name"]}') logger.info(f'creating missing check: {check["metadata"]["name"]}')
url = random.choice(params['api-base']) url = random.choice(params['api-base'])
r = requests.post( r = requests.post(
f'{url}/api/core/v2/namespaces/{namespace}/checks', f'{url}/api/core/v2/namespaces/{namespace}/checks',
...@@ -37,7 +37,7 @@ def create_check(params, check, namespace='default'): ...@@ -37,7 +37,7 @@ def create_check(params, check, namespace='default'):
def update_check(params, check, namespace='default'): def update_check(params, check, namespace='default'):
name = check["metadata"]["name"] name = check["metadata"]["name"]
logger.debug(f'updating existing check: {name}') logger.info(f'updating existing check: {name}')
url = random.choice(params['api-base']) url = random.choice(params['api-base'])
r = requests.put( r = requests.put(
f'{url}/api/core/v2/namespaces/{namespace}/checks/{name}', f'{url}/api/core/v2/namespaces/{namespace}/checks/{name}',
...@@ -54,7 +54,7 @@ def delete_check(params, check, namespace='default'): ...@@ -54,7 +54,7 @@ def delete_check(params, check, namespace='default'):
name = check name = check
else: else:
name = check["metadata"]["name"] name = check["metadata"]["name"]
logger.debug(f'deleting unwanted check: {name}') logger.info(f'deleting unwanted check: {name}')
url = random.choice(params['api-base']) url = random.choice(params['api-base'])
r = requests.delete( r = requests.delete(
f'{url}/api/core/v2/namespaces/{namespace}/checks/{name}', f'{url}/api/core/v2/namespaces/{namespace}/checks/{name}',
......
...@@ -18,4 +18,5 @@ setup( ...@@ -18,4 +18,5 @@ setup(
'brian-polling-manager=brian_polling_manager.cli:main' 'brian-polling-manager=brian_polling_manager.cli:main'
] ]
}, },
include_package_data=True,
) )
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment