diff --git a/agent_based/netbox_reports.py b/agent_based/netbox_reports.py index dad708e..305cd50 100644 --- a/agent_based/netbox_reports.py +++ b/agent_based/netbox_reports.py @@ -39,6 +39,7 @@ from datetime import datetime + def parse_netbox_reports(string_table): parsed = {} @@ -64,48 +65,52 @@ def parse_netbox_reports(string_table): # print (parsed) return parsed + register.agent_section( name = "netbox_reports", parse_function = parse_netbox_reports, ) + def discover_netbox_reports(section): for name in section: yield Service(item=name) + def check_netbox_reports(item, params, section): report = section[item] now = datetime.now() - if not 'last_run' in report: + if 'last_run' not in report: yield Result(state=State.UNKNOWN, summary=(f"Report \"{item}\" not yet executed")) else: age = now - report['last_run'] yield from check_levels( - value=age.total_seconds(), - levels_upper=params.get('maxage', None), - render_func=lambda f: render.timespan(f if f > 0 else -f), - label='Last Run' if age.total_seconds() > 0 else "Last Run in", - ) + value=age.total_seconds(), + levels_upper=params.get('maxage', None), + render_func=lambda f: render.timespan(f if f > 0 else -f), + label='Last Run' if age.total_seconds() > 0 else "Last Run in", + ) for test_name in report: if test_name == 'last_run': continue yield Result(state = State.OK, summary = f"{test_name}", - details = f"{test_name}: {report[test_name]['result']}") + details = f"{test_name}: {report[test_name]['result']}") if report[test_name]['result']['warning'] > 0: - yield Result (state = State.WARN, - summary = f"Warning: {report[test_name]['result']['warning']}") + yield Result(state = State.WARN, + summary = f"Warning: {report[test_name]['result']['warning']}") if report[test_name]['result']['failure'] > 0: - yield Result (state = State.WARN, - summary = f"Failure: {report[test_name]['result']['failure']}") + yield Result(state = State.WARN, + summary = f"Failure: {report[test_name]['result']['failure']}") for key, value in report[test_name]['result'].items(): - yield Metric (f"{test_name}_{key}", value) + yield Metric(f"{test_name}_{key}", value) + register.check_plugin( name = "netbox_reports", @@ -113,5 +118,5 @@ def check_netbox_reports(item, params, section): discovery_function = discover_netbox_reports, check_function = check_netbox_reports, check_ruleset_name = "netbox_reports", - check_default_parameters = {'maxage': (2*24*3600, 7*24*3600)}, -) \ No newline at end of file + check_default_parameters = {'maxage': (2 * 24 * 3600, 7 * 24 * 3600)}, +) diff --git a/web/plugins/wato/check_parameters_netbox_reports.py b/web/plugins/wato/check_parameters_netbox_reports.py index 0a7657d..0b99d7f 100644 --- a/web/plugins/wato/check_parameters_netbox_reports.py +++ b/web/plugins/wato/check_parameters_netbox_reports.py @@ -33,6 +33,7 @@ RulespecGroupCheckParametersApplications, ) + def _item_spec_netbox_reports(): return TextAscii(title=_('Name of the Netbox Report'), allow_empty=False) @@ -63,4 +64,4 @@ def _parameter_valuespec_netbox_reports(): match_type='dict', parameter_valuespec=_parameter_valuespec_netbox_reports, title=lambda: _('Netbox Reports'), - )) \ No newline at end of file + )) diff --git a/web/plugins/wato/datasource_netbox.py b/web/plugins/wato/datasource_netbox.py index 753fb37..e01fece 100644 --- a/web/plugins/wato/datasource_netbox.py +++ b/web/plugins/wato/datasource_netbox.py @@ -59,4 +59,4 @@ def _valuespec_special_agents_netbox(): group=RulespecGroupDatasourceProgramsApps, name='special_agents:netbox', valuespec=_valuespec_special_agents_netbox, - )) \ No newline at end of file + ))