Skip to content
Snippets Groups Projects
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))