예제 #1
0
 def test_multiple_responses(self):
     """
     Test that the add_response and all_responses mechanism is working
     """
     plugin = self.Klass()
     r1 = Response(pycinga.OK, "foo")
     r2 = Response(pycinga.CRITICAL, "bar")
     r3 = Response(pycinga.OK, "baz")
     plugin.add_response(r1)
     plugin.add_response(r2)
     plugin.add_response(r3)
     assert pycinga.CRITICAL == plugin.all_responses().status
     assert "bar OK: foo, baz" == plugin.all_responses().message
    def parseResult(self, data):
        failed_repls = []
        for result in data:
            if result["status"] != "running":
                msg = "%s %s %s %s" % (
                    result["node"],
                    result["vhost"],
                    result["exchange"],
                    result["status"],
                )
                failed_repls.append(msg)

        if failed_repls:
            return Response(CRITICAL, (", ".join(failed_repls)))

        return Response(OK, "federation links are all up")
예제 #3
0
    def test_multiple_responses_default(self):
        """
        Test that the default parameter to all_responses is working
        """

        plugin = self.Klass()
        assert pycinga.OK == plugin.all_responses().status

        r1 = Response(pycinga.UNKNOWN, "default test")
        assert r1.status == plugin.all_responses(r1).status
        assert r1.message == plugin.all_responses(r1).message
    def parseResult(self, data):
        nodeData = None
        #        for result in data:
        #            if string.split(result['name'], '@')[1] in self.options.hostname:
        #                nodeData = result
        if len(data) > 0:
            nodeData = data[0]

        if nodeData:
            if self.options.type == "mem":
                if nodeData["mem_alarm"] is True:
                    return Response(CRITICAL, "memory alarm triggered!")
                self.percentage = nodeData[self.options.type + "_used"] / (
                    nodeData[self.options.type + "_limit"] / 100.0)
            if self.options.type == "disk":
                if nodeData["disk_free_alarm"] is True:
                    return Response(CRITICAL, "disk alarm triggered!")
                self.percentage = nodeData[
                    self.options.type + "_free_limit"] / (
                        nodeData[self.options.type + "_free"] / 100.0)
            if self.options.type == "network_partitions":
                if len(nodeData["partitions"]) > 0:
                    return Response(CRITICAL, "network partition detected!")
                self.percentage = len(nodeData["partitions"])

            if self.options.type == "fd":
                self.percentage = nodeData[self.options.type + "_used"] / (
                    nodeData[self.options.type + "_total"] / 100.0)

            if self.options.type == "proc":
                self.percentage = nodeData[self.options.type + "_used"] / (
                    nodeData[self.options.type + "_total"] / 100.0)

            if self.options.type == "sockets":
                self.percentage = nodeData[self.options.type + "_used"] / (
                    nodeData[self.options.type + "_total"] / 100.0)

            return self.response_for_value(
                self.percentage, self.options.type + " usage is " +
                str(self.percentage) + " used ")
        return Response(WARNING, "No node data found!")
    def check(self):
        """
        returns a response and perf data for this check
        """
        try:
            self.rabbit_error = 0
            self.rabbit_note = "action performed successfully"

            if not self.testOptions():
                return Response(UNKNOWN, "Incorrect check config" + self.rabbit_note)

            if (
                not self.options.hostname
                or not self.options.port
                or not self.options.username
                or not self.options.password
                or not self.testOptions()
            ):
                return Response(UNKNOWN, "Incorrect missing options")

            if not self.makeUrl():
                return Response(UNKNOWN, "Error with URL")

            response = self.parseJson(self.doApiGet())

            if response is None:
                return Response(UNKNOWN, "The server did not respond")

            for queue in response:
                self.generateQueueUrl(queue["name"])

                if self.rabbit_error > 0:
                    return Response(CRITICAL, self.rabbit_note)

                data = self.parseJson(self.doApiGet())

                if self.rabbit_error > 0:
                    return Response(CRITICAL, self.rabbit_note)

                result = self.parseResult(data)

                self.setPerformanceData(data, result, queue["name"])
                print result
        except Exception as e:
            return Response(UNKNOWN, "Error occurred:" + str(e))
 def parseResult(self, data):
     for node in data:
         if len(node["partitions"]) != 0:
             return Response(CRITICAL, "Partition found %s" % node["name"])
     return Response(OK, "No partitions found")
 def parseResult(self, data):
     if len(data) == self.options.nodes:
         return Response(OK, "%i Nodes present" % self.options.nodes)
     return Response(
         CRITICAL, "Nodes expected %i, but found %i" % (self.options.nodes, len(data))
     )
 def parseResult(self, data):
     return Response(UNKNOWN, "No result set!")
예제 #9
0
 def parseResult(self, data):
     if data["status"] == "ok":
         return Response(OK, "Response status was ok")
     return Response(CRITICAL, data["status"])