Example #1
0
def test_active_check_execution(test_cfg, site, web):
    try:
        # TODO: Remove bytestr marker once the GUI uses Python 3
        web.set_ruleset(
            api_str_type("custom_checks"),
            {
                api_str_type("ruleset"): {
                    # Main folder
                    api_str_type(""): [
                        {
                            api_str_type("value"): {
                                api_str_type('service_description'):
                                u'\xc4ctive-Check',
                                api_str_type('command_line'):
                                api_str_type('echo "123"')
                            },
                            api_str_type("condition"): {},
                            api_str_type("options"): {},
                        },
                    ],
                }
            })
        web.activate_changes()

        site.schedule_check("test-host", u'\xc4ctive-Check', 0)

        result = site.live.query_row(
            u"GET services\nColumns: host_name description state plugin_output has_been_checked\nFilter: host_name = test-host\nFilter: description = \xc4ctive-Check"
        )
        print("Result: %r" % result)
        assert result[4] == 1
        assert result[0] == "test-host"
        assert result[1] == u'\xc4ctive-Check'
        assert result[2] == 0
        assert result[3] == "123"
    finally:
        # TODO: Remove bytestr marker once the GUI uses Python 3
        web.set_ruleset(
            api_str_type("custom_checks"),
            {
                api_str_type("ruleset"): {
                    api_str_type(""): [],  # -> folder
                }
            })
        web.activate_changes()
Example #2
0
def test_active_check_execution(test_cfg, site, web):  # noqa: F811 # pylint: disable=redefined-outer-name
    try:
        web.set_ruleset(
            "custom_checks",
            {
                "ruleset": {
                    # Main folder
                    "": [
                        {
                            "value": {
                                'service_description': '\xc4ctive-Check',
                                'command_line': 'echo "123"'
                            },
                            "condition": {},
                            "options": {},
                        },
                    ],
                }
            })
        web.activate_changes()

        site.schedule_check("test-host", u'\xc4ctive-Check', 0)

        result = site.live.query_row(
            u"GET services\nColumns: host_name description state plugin_output has_been_checked\nFilter: host_name = test-host\nFilter: description = \xc4ctive-Check"
        )
        print("Result: %r" % result)
        assert result[4] == 1
        assert result[0] == "test-host"
        assert result[1] == u'\xc4ctive-Check'
        assert result[2] == 0
        assert result[3] == "123"
    finally:
        web.set_ruleset(
            "custom_checks",
            {
                "ruleset": {
                    "": [],  # -> folder
                }
            })
        web.activate_changes()
Example #3
0
def test_active_check_macros(test_cfg, site, web):  # noqa: F811 # pylint: disable=redefined-outer-name
    macros = {
        "$HOSTADDRESS$":
        "127.0.0.1",
        "$HOSTNAME$":
        "test-host",
        "$_HOSTTAGS$":
        " ".join(
            sorted([
                "/wato/", "auto-piggyback", "ip-v4", "ip-v4-only", "lan",
                "no-agent", "no-snmp", "ping", "prod",
                "site:%s" % site.id
            ])),
        "$_HOSTADDRESS_4$":
        "127.0.0.1",
        "$_HOSTADDRESS_6$":
        "",
        "$_HOSTADDRESS_FAMILY$":
        "4",
        "$USER1$":
        "/omd/sites/%s/lib/nagios/plugins" % site.id,
        "$USER2$":
        "/omd/sites/%s/local/lib/nagios/plugins" % site.id,
        "$USER3$":
        site.id,
        "$USER4$":
        site.root,
    }

    def descr(var):
        return "Macro %s" % var.strip("$")

    ruleset = []
    for var, value in macros.items():
        ruleset.append({
            "value": {
                'service_description': descr(var),
                'command_line': 'echo "Output: %s"' % var,
            },
            "condition": {},
        })

    try:
        web.set_ruleset(
            "custom_checks",
            {
                "ruleset": {
                    # Main folder
                    "": ruleset,
                }
            })
        web.activate_changes()

        for var, value in macros.items():
            description = descr(var)
            logger.info(description)
            site.schedule_check("test-host", description, 0)

            logger.info("Get service row")
            row = site.live.query_row(
                "GET services\n"
                "Columns: host_name description state plugin_output has_been_checked\n"
                "Filter: host_name = test-host\n"
                "Filter: description = %s\n" % description)

            logger.info(row)
            name, description, state, plugin_output, has_been_checked = row

            assert name == "test-host"
            assert has_been_checked == 1
            assert state == 0

            expected_output = "Output: %s" % value
            # TODO: Cleanup difference between nagios/cmc
            if test_cfg.core == "nagios":
                expected_output = expected_output.strip()
                if var == "$_HOSTTAGS$":
                    splitted_output = plugin_output.split(" ")
                    plugin_output = splitted_output[0] + " " + " ".join(
                        sorted(splitted_output[1:]))

            assert expected_output == plugin_output, \
                "Macro %s has wrong value (%r instead of %r)" % (var, plugin_output, expected_output)

    finally:
        web.set_ruleset(
            "custom_checks",
            {
                "ruleset": {
                    "": [],  # -> folder
                }
            })
        web.activate_changes()