From 6514f066ce702de30c257fb177dc3dbc6c788fc2 Mon Sep 17 00:00:00 2001 From: lbuhleie Date: Fri, 24 Apr 2026 11:01:02 +0200 Subject: [PATCH 1/2] Added option to disable the discovery of disabled mssql jobs --- cmk/plugins/mssql/agent_based/mssql_jobs.py | 14 +++++-- .../mssql/rulesets/mssql_jobs_discovery.py | 42 +++++++++++++++++++ 2 files changed, 52 insertions(+), 4 deletions(-) create mode 100644 cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py diff --git a/cmk/plugins/mssql/agent_based/mssql_jobs.py b/cmk/plugins/mssql/agent_based/mssql_jobs.py index 00543a2c0b2..28ffef6ada2 100644 --- a/cmk/plugins/mssql/agent_based/mssql_jobs.py +++ b/cmk/plugins/mssql/agent_based/mssql_jobs.py @@ -193,10 +193,12 @@ def parse_mssql_jobs(string_table: StringTable) -> Mapping[str, JobSpec]: return section -def discover_mssql_jobs(section: Mapping[str, JobSpec]) -> DiscoveryResult: - for job_name in section: - if job_name: - yield Service(item=job_name) +def discover_mssql_jobs(params: dict[str, bool], section: Mapping[str, JobSpec]) -> DiscoveryResult: + for job_name, job_specs in section.items(): + if not params.get("discover_schedule_disabled") and not job_specs.schedule_enabled: + continue + else: + yield Service(item=job_name) def check_mssql_jobs( @@ -256,4 +258,8 @@ def _calc_job_result(job_specs: JobSpec, params: Mapping[str, Any]) -> Result: "status_disabled_schedule": 0, "status_missing_jobs": 2, }, + discovery_ruleset_name="mssql_jobs_discovery", + discovery_default_parameters={ + "discover_schedule_disabled": True, + } ) diff --git a/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py b/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py new file mode 100644 index 00000000000..a3b44bddde5 --- /dev/null +++ b/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +from cmk.rulesets.v1 import ( + Title, + Label, +) + +from cmk.rulesets.v1.form_specs import ( + Dictionary, + DictElement, + BooleanChoice, + DefaultValue, +) + +from cmk.rulesets.v1.rule_specs import ( + Topic, + DiscoveryParameters, +) + + + +def _parameter_form_mssql_jobs_discovery() -> Dictionary: + return Dictionary( + title=Title("MSSQL Jobs Discovery"), + elements={ + "discover_schedule_disabled": DictElement( + parameter_form=BooleanChoice( + label=Label("Discover jobs with disabled Scheduler"), + prefill=DefaultValue(True) + ), + required=True, + ), + }, + ) + + +rule_spec_mssql_jobs_discovery = DiscoveryParameters( + name="mssql_jobs_discovery", + title=Title("MSSQL Jobs Discovery"), + topic=Topic.APPLICATIONS, + parameter_form=_parameter_form_mssql_jobs_discovery, +) From bff5a0a5250a730d760d032b8126251afab4baac Mon Sep 17 00:00:00 2001 From: lbuhleie Date: Fri, 24 Apr 2026 12:13:32 +0200 Subject: [PATCH 2/2] Fixed formatting --- cmk/plugins/mssql/agent_based/mssql_jobs.py | 4 ++-- cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py | 12 +++++------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/cmk/plugins/mssql/agent_based/mssql_jobs.py b/cmk/plugins/mssql/agent_based/mssql_jobs.py index 28ffef6ada2..2d901002c58 100644 --- a/cmk/plugins/mssql/agent_based/mssql_jobs.py +++ b/cmk/plugins/mssql/agent_based/mssql_jobs.py @@ -198,7 +198,7 @@ def discover_mssql_jobs(params: dict[str, bool], section: Mapping[str, JobSpec]) if not params.get("discover_schedule_disabled") and not job_specs.schedule_enabled: continue else: - yield Service(item=job_name) + yield Service(item=job_name) def check_mssql_jobs( @@ -261,5 +261,5 @@ def _calc_job_result(job_specs: JobSpec, params: Mapping[str, Any]) -> Result: discovery_ruleset_name="mssql_jobs_discovery", discovery_default_parameters={ "discover_schedule_disabled": True, - } + }, ) diff --git a/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py b/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py index a3b44bddde5..8fef6178f6f 100644 --- a/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py +++ b/cmk/plugins/mssql/rulesets/mssql_jobs_discovery.py @@ -1,32 +1,30 @@ #!/usr/bin/env python3 from cmk.rulesets.v1 import ( - Title, Label, + Title, ) from cmk.rulesets.v1.form_specs import ( - Dictionary, - DictElement, BooleanChoice, DefaultValue, + DictElement, + Dictionary, ) from cmk.rulesets.v1.rule_specs import ( - Topic, DiscoveryParameters, + Topic, ) - def _parameter_form_mssql_jobs_discovery() -> Dictionary: return Dictionary( title=Title("MSSQL Jobs Discovery"), elements={ "discover_schedule_disabled": DictElement( parameter_form=BooleanChoice( - label=Label("Discover jobs with disabled Scheduler"), - prefill=DefaultValue(True) + label=Label("Discover jobs with disabled Scheduler"), prefill=DefaultValue(True) ), required=True, ),