gws_indirect.py 1.36 KiB
import binascii
import hashlib
import json
from brian_polling_manager import sensu
def load_dscp32_checks(sensu_params):
def _is_dscp32_check(check):
name = check['metadata']['name']
return name.startswith('dscp32')
ifc_checks = filter(
_is_dscp32_check, sensu.load_all_checks(sensu_params))
return {c['metadata']['name']: c for c in ifc_checks}
class DSCP32CountersCheck(sensu.AbstractCheck):
def __init__(self, sensu_check_params, service):
super().__init__()
self.sensu_check_params = sensu_check_params
self.service = service
@sensu.AbstractCheck.name.getter
def name(self):
return f'dscp32-{self.service["name"]}'
@sensu.AbstractCheck.command.getter
def command(self):
return self.sensu_check_params['command'].format(
script=self.sensu_check_params['script'],
measurement=self.sensu_check_params['measurement'],
service=self.service['name'])
@sensu.AbstractCheck.proxy_entity_name.getter
def proxy_entity_name(self):
return self.service['hostname']
def refresh(sensu_params, services):
required_checks = [
DSCP32CountersCheck(sensu_params['dscp32-service-check'], s)
for s in services]
return sensu.refresh(
sensu_params,
required_checks,
load_dscp32_checks(sensu_params))