Merge branch 'issue-1' of gs-gitlab:tools/heimdall into issue-1
This commit is contained in:
commit
ff032c832e
105
source/logic/checks/generic_remote.py
Normal file
105
source/logic/checks/generic_remote.py
Normal file
|
|
@ -0,0 +1,105 @@
|
||||||
|
class implementation_check_kind_generic_remote(interface_check_kind):
|
||||||
|
|
||||||
|
'''
|
||||||
|
[implementation]
|
||||||
|
'''
|
||||||
|
def parameters_schema(self):
|
||||||
|
return {
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": False,
|
||||||
|
"properties": {
|
||||||
|
"host" : {
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
|
"user" : {
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
|
"ssh_key" : {
|
||||||
|
"type" : "string"
|
||||||
|
},
|
||||||
|
"mount_point" : {
|
||||||
|
"type" : "string",
|
||||||
|
"default" : "/"
|
||||||
|
},
|
||||||
|
"threshold" : {
|
||||||
|
"type" : "integer",
|
||||||
|
"default" : 95,
|
||||||
|
"description" : "maximaler Füllstand in Prozent"
|
||||||
|
},
|
||||||
|
"strict" : {
|
||||||
|
"type" : "boolean",
|
||||||
|
"default" : False
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"host", "user", "ssh_key"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
'''
|
||||||
|
[implementation]
|
||||||
|
'''
|
||||||
|
def normalize_conf_node(self, node):
|
||||||
|
if not "host" in node \
|
||||||
|
or not "user" in node \
|
||||||
|
or not "ssh_key" in node:
|
||||||
|
raise ValueError("MISSING STUFF!")
|
||||||
|
if not "mount_point" in node:
|
||||||
|
node["mount_point"] = "/"
|
||||||
|
if not "threshold" in node:
|
||||||
|
node["threshold"] = 95
|
||||||
|
if not "strict" in node:
|
||||||
|
node["strict"] = "/"
|
||||||
|
|
||||||
|
return node
|
||||||
|
|
||||||
|
'''
|
||||||
|
[implementation]
|
||||||
|
'''
|
||||||
|
def run(self, parameters):
|
||||||
|
SSH_COMMAND=string_coin("ssh -i {{ssh_key}} {{user}}@{{host}} \"df {{mount_point}} | tr -s ' '\"", parameters)
|
||||||
|
|
||||||
|
retval=shell_command(SSH_COMMAND)
|
||||||
|
|
||||||
|
if retval["return_code"] > 0:
|
||||||
|
return {
|
||||||
|
"condition" : enum_condition.unknown,
|
||||||
|
"info" : {
|
||||||
|
"error" : retval["stderr"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else:
|
||||||
|
parts=retval["stdout"].split("\n")[-1].split(" ")
|
||||||
|
ret={
|
||||||
|
"device" : parts[0],
|
||||||
|
"used" : parts[2],
|
||||||
|
"avail" : parts[3],
|
||||||
|
"perc" : int(parts[4][:-1])
|
||||||
|
}
|
||||||
|
|
||||||
|
if ret["perc"] > parameters["threshold"]:
|
||||||
|
return {
|
||||||
|
"condition": (
|
||||||
|
enum_condition.critical
|
||||||
|
if parameters["strict"] else
|
||||||
|
enum_condition.warning
|
||||||
|
),
|
||||||
|
"info": {
|
||||||
|
"mount_point": parameters["mount_point"],
|
||||||
|
"device": ret["device"],
|
||||||
|
"used": ret["used"], # ToDo: Humanlesbarkeit herstellen
|
||||||
|
"available": ret["avail"], # ToDo: Humanlesbarkeit herstellen
|
||||||
|
"percentage": str(ret["perc"]) + "%",
|
||||||
|
"host" : parameters["host"],
|
||||||
|
"faults": [
|
||||||
|
translation_get("checks.generic_remote.overflow")
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
else:
|
||||||
|
return {
|
||||||
|
"condition": enum_condition.ok,
|
||||||
|
"info" : {}
|
||||||
|
}
|
||||||
Loading…
Reference in a new issue