-
Bjarke Madsen authoredBjarke Madsen authored
interfaces.py 1.80 KiB
import logging
import re
from brian_polling_manager import sensu
logger = logging.getLogger(__name__)
def load_ifc_checks(sensu_params):
def _is_ifc_check(check):
name = check['metadata']['name']
# check-* is the old-style name (add to the returned
# data so it can be deleted)
return re.match(r'^(check|ifc)-[^-]+\.geant\.net-.+$', name)
ifc_checks = filter(_is_ifc_check, sensu.load_all_checks(sensu_params))
return {c['metadata']['name']: c for c in ifc_checks}
class InterfaceCheck(sensu.AbstractCheck):
def __init__(self, ifc_check_params, interface):
super().__init__()
self.ifc_check_params = ifc_check_params
self.interface = interface
@sensu.AbstractCheck.name.getter
def name(self):
ifc_name = self.interface['name'].replace('/', '-').replace(':', '.')
return f'ifc-{self.interface["router"]}-{ifc_name}'
@sensu.AbstractCheck.command.getter
def command(self):
return self.ifc_check_params['command'].format(
script=self.ifc_check_params['script'],
measurement=self.ifc_check_params['measurement'],
# TODO: add community string to /poller/interfaces response
# (cf. POL1-339)
community='0pBiFbD',
hostname=self.interface['router'],
interface=self.interface['name'],
ifIndex=self.interface['snmp-index'])
@sensu.AbstractCheck.proxy_entity_name.getter
def proxy_entity_name(self):
return self.interface['router']
def refresh(sensu_params, inventory_interfaces):
required_checks = [
InterfaceCheck(sensu_params['interface-check'], ifc)
for ifc in inventory_interfaces]
return sensu.refresh(
sensu_params,
required_checks,
load_ifc_checks(sensu_params))