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

moved some reusable code to sensu module

parent 020af674
Branches
Tags
No related merge requests found
...@@ -43,37 +43,13 @@ class InterfaceCheck(sensu.AbstractCheck): ...@@ -43,37 +43,13 @@ class InterfaceCheck(sensu.AbstractCheck):
return self.interface['router'] return self.interface['router']
def refresh(sensu_params, state): def refresh(sensu_params, inventory_interfaces):
current_ifc_checks = load_ifc_checks(sensu_params)
created = 0
updated = 0
required_checks = [ required_checks = [
InterfaceCheck(sensu_params['interface-check'], ifc) InterfaceCheck(sensu_params['interface-check'], ifc)
for ifc in state.interfaces] for ifc in inventory_interfaces]
for expected_check in required_checks:
if expected_check.name not in current_ifc_checks:
sensu.create_check(sensu_params, expected_check.to_dict())
created += 1
elif not sensu.AbstractCheck.match_check_dicts(
current_ifc_checks[expected_check.name],
expected_check.to_dict()):
sensu.update_check(sensu_params, expected_check.to_dict())
updated += 1
wanted_checks = {check.name for check in required_checks}
extra_checks = set(current_ifc_checks.keys()) - wanted_checks
for name in extra_checks:
sensu.delete_check(sensu_params, name)
# cf. main.REFRESH_RESULT_SCHEMA return sensu.refresh(
return { sensu_params,
'checks': len(current_ifc_checks), required_checks,
'input': len(required_checks), load_ifc_checks(sensu_params))
'created': created,
'updated': updated,
'deleted': len(extra_checks)
}
...@@ -80,7 +80,7 @@ def refresh(config, force=False): ...@@ -80,7 +80,7 @@ def refresh(config, force=False):
# state.gws_direct = inventory.load_gws_direct_interfaces( # state.gws_direct = inventory.load_gws_direct_interfaces(
# config['inventory']) # config['inventory'])
result = { result = {
'interfaces': interfaces.refresh(config['sensu'], state), 'interfaces': interfaces.refresh(config['sensu'], state.interfaces),
# 'gws direct': gws_direct.refresh(config['sensu'], state) # 'gws direct': gws_direct.refresh(config['sensu'], state)
} }
......
...@@ -168,3 +168,43 @@ class AbstractCheck(object): ...@@ -168,3 +168,43 @@ class AbstractCheck(object):
if a['metadata']['namespace'] != b['metadata']['namespace']: if a['metadata']['namespace'] != b['metadata']['namespace']:
return False return False
return True return True
def refresh(sensu_params, required_checks, current_checks):
"""
update any current_checks that are not present in required_checks
remove any extras
:param sensu_params:
:param required_checks: list of AbstractCheck instances
:param current_checks: dict of {name:check_dict} from sensu
:return: dict with change counts
"""
# cf. main.REFRESH_RESULT_SCHEMA
result = {
'checks': len(current_checks),
'input': len(required_checks),
'created': 0,
'updated': 0,
'deleted': None
}
for expected_check in required_checks:
if expected_check.name not in current_checks:
create_check(sensu_params, expected_check.to_dict())
result['created'] += 1
elif not AbstractCheck.match_check_dicts(
current_checks[expected_check.name],
expected_check.to_dict()):
update_check(sensu_params, expected_check.to_dict())
result['updated'] += 1
wanted_checks = {check.name for check in required_checks}
extra_checks = set(current_checks.keys()) - wanted_checks
for name in extra_checks:
delete_check(sensu_params, name)
result['deleted'] = len(extra_checks)
return result
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment