mirror of
https://github.com/drewkerrigan/nagios-http-json.git
synced 2024-11-22 10:23:50 +01:00
Merge pull request #6 from kovacshuni/arrays
Arrays are supported as well. format: `alpha.beta[2].gamma.theta[0]`
This commit is contained in:
commit
c678dfd518
@ -46,6 +46,27 @@ class JsonHelper:
|
|||||||
self.data = json_data
|
self.data = json_data
|
||||||
self.separator = separator
|
self.separator = separator
|
||||||
|
|
||||||
|
def getSubElement(self, key, data):
|
||||||
|
separatorIndex = key.find(self.separator)
|
||||||
|
partialKey = key[:separatorIndex]
|
||||||
|
remainingKey = key[separatorIndex + 1:]
|
||||||
|
if partialKey in data:
|
||||||
|
return self.get(remainingKey, data[partialKey])
|
||||||
|
else:
|
||||||
|
return (None, 'not_found')
|
||||||
|
|
||||||
|
def getSubArrayElement(self, key, data):
|
||||||
|
subElemKey = key[:key.find('[')]
|
||||||
|
index = int(key[key.find('[') + 1:key.find(']')])
|
||||||
|
remainingKey = key[key.find('].') + 2:]
|
||||||
|
if subElemKey in data:
|
||||||
|
if index < len(data[subElemKey]):
|
||||||
|
return self.get(remainingKey, data[subElemKey][index])
|
||||||
|
else:
|
||||||
|
return (None, 'not_found')
|
||||||
|
else:
|
||||||
|
return (None, 'not_found')
|
||||||
|
|
||||||
def equals(self, key, value): return self.exists(key) and str(self.get(key)) == value
|
def equals(self, key, value): return self.exists(key) and str(self.get(key)) == value
|
||||||
def lte(self, key, value): return self.exists(key) and float(self.get(key)) <= float(value)
|
def lte(self, key, value): return self.exists(key) and float(self.get(key)) <= float(value)
|
||||||
def gte(self, key, value): return self.exists(key) and float(self.get(key)) >= float(value)
|
def gte(self, key, value): return self.exists(key) and float(self.get(key)) >= float(value)
|
||||||
@ -57,13 +78,25 @@ class JsonHelper:
|
|||||||
else:
|
else:
|
||||||
data = self.data
|
data = self.data
|
||||||
|
|
||||||
if self.separator in key:
|
if len(key) <= 0:
|
||||||
return self.get(key[key.find(self.separator) + 1:], data[key[:key.find(self.separator)]])
|
return data
|
||||||
else:
|
|
||||||
if key in data:
|
if key.find(self.separator) != -1 and key.find('[') != -1 :
|
||||||
return data[key]
|
if key.find(self.separator) < key.find('[') :
|
||||||
|
return self.getSubElement(key, data)
|
||||||
else:
|
else:
|
||||||
return (None, 'not_found')
|
return self.getSubArrayElement(key, data)
|
||||||
|
else:
|
||||||
|
if key.find(self.separator) != -1 :
|
||||||
|
return self.getSubElement(key, data)
|
||||||
|
else:
|
||||||
|
if key.find('[') != -1 :
|
||||||
|
return self.getSubArrayElement(key, data)
|
||||||
|
else:
|
||||||
|
if key in data:
|
||||||
|
return data[key]
|
||||||
|
else:
|
||||||
|
return (None, 'not_found')
|
||||||
|
|
||||||
class JsonRuleProcessor:
|
class JsonRuleProcessor:
|
||||||
"""Perform checks and gather values from a JSON dict given rules and metrics definitions"""
|
"""Perform checks and gather values from a JSON dict given rules and metrics definitions"""
|
||||||
|
Loading…
Reference in New Issue
Block a user