Checmk 2.0.0p5 - Fehler bei "Parameters for this service"

Hallo Checkmk Kollegen,

bin aktuell dabei unsere Check-Plugins auf die neue API umzubauen.
Wir haben dabei viele Versions Prüfungen die per WATO Regel konfiguriert werden.

In den meisten Regeln wird nur eine Value angegeben, aber in einigen wenigen auch mehrere.
Die Regeln funktionieren ohne Probleme und können über das WATO fehlerfrei aufgerufen werden.

Hier zwei Beispiele:
Eine Value

Mehrere Values

Wenn man jedoch über das Action Menu am Service geht und sich “Parameters for this service” anzeigen lässt, werden die Parameters nur korrekt angezeigt, wenn ich nur eine Value in der Regel habe.

Habe ich mehrere Values in der Regel bekomme ich folgenden Fehler:

“Failed to process rule #0 of ruleset “Allowed netman version” in folder “Main directory”. The value of a rule is incompatible to the current rule specification. You can try fix this by opening the rule for editing and save the rule again without modification.”

Hier wieder die Screenshots der zwei Beispiele:
Eine Value

Mehrere Values

Die Regel habe ich wie in der Fehlermeldung beschrieben natürlich schon neu gespeichert. Jedoch ohne Veränderung.

Hier noch der Code für die WATO Erweiterung. Evtl. habe ich hier einen Fehler.

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from cmk.gui.i18n import _

from cmk.gui.valuespec import (
    Dictionary,
    TextAscii,
)

from cmk.gui.plugins.wato import (
    CheckParameterRulespecWithoutItem,
    rulespec_registry,
)

from custom_rulespec import RulespecGroupCheckParametersEdekaCustom


def _parameter_valuespec_netman_version():
    return ListOf(
        Dictionary(
            elements=[("netman_version", TextAscii(title=_("Netman version"))),],
        )
    )


rulespec_registry.register(
    CheckParameterRulespecWithoutItem(
        check_group_name="netman_version",
        group=RulespecGroupCheckParametersEdekaCustom,
        match_type="dict",
        parameter_valuespec=_parameter_valuespec_netman_version,
        title=lambda: _("Allowed netman version"),
    )
)

Vielen Dank vorab für die Hilfe.

Gruß
Gino

Der Fehler ist auch “korrekt” so. Warum ist das eine “ListOf → Dictionary”?
Eine “ListOf” einzelnen Elementen würde doch reichen.
Das Problem ist bei dir bestehen die Parameter aus zwei Dictionaries welche identisch sind bis auf den Inhalt, da hat das System bei der Anzeige ein Problem.

Würde hier sowas machen wie in dem Beispiel hier.

def _parameter_valuespec_cpu_utilization_cluster():
    return ListOf(
        Tuple(elements=[
            Integer(title=_("Equal or more than"), unit=_("nodes")),
            Tuple(
                elements=[
                    Percentage(title=_("Warning at a utilization of"), default_value=90.0),
                    Percentage(title=_("Critical at a utilization of"), default_value=95.0)
                ],
                title=_("Alert on too high CPU utilization"),
            )
        ]),
        help=_(
            "Configure levels for averaged CPU utilization depending on number of cluster nodes. "
            "The CPU utilization sums up the percentages of CPU time that is used "
            "for user processes and kernel routines over all available cores within "
            "the last check interval. The possible range is from 0% to 100%"),
        title=_("Memory Usage"),
        add_label=_("Add limits"),
    )

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.