mirror of
https://github.com/drewkerrigan/nagios-http-json.git
synced 2024-11-22 10:23:50 +01:00
Merge pull request #7 from kovacshuni/arrays
Changing form [] to () because of Nagios issues. Fixes.
This commit is contained in:
commit
9aa7ed57aa
@ -89,10 +89,14 @@ optional arguments:
|
|||||||
(key,UnitOfMeasure,Min,Max).
|
(key,UnitOfMeasure,Min,Max).
|
||||||
-s, --ssl HTTPS mode.
|
-s, --ssl HTTPS mode.
|
||||||
-f SEPARATOR, --field_separator SEPARATOR
|
-f SEPARATOR, --field_separator SEPARATOR
|
||||||
Json Field separator, defaults to "."
|
Json Field separator, defaults to "." ; Select element
|
||||||
|
in an array with "(" ")"
|
||||||
-d, --debug Debug mode.
|
-d, --debug Debug mode.
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Access a specific JSON field by following this syntax: `alpha.beta.gamma(3).theta.omega(0)`
|
||||||
|
Dots are field separators (changeable), parantheses are for entering arrays.
|
||||||
|
|
||||||
More info about Nagios Range format and Units of Measure can be found at [https://nagios-plugins.org/doc/guidelines.html](https://nagios-plugins.org/doc/guidelines.html).
|
More info about Nagios Range format and Units of Measure can be found at [https://nagios-plugins.org/doc/guidelines.html](https://nagios-plugins.org/doc/guidelines.html).
|
||||||
|
|
||||||
### Docker Info Example Plugin
|
### Docker Info Example Plugin
|
||||||
|
@ -45,6 +45,8 @@ class JsonHelper:
|
|||||||
def __init__(self, json_data, separator):
|
def __init__(self, json_data, separator):
|
||||||
self.data = json_data
|
self.data = json_data
|
||||||
self.separator = separator
|
self.separator = separator
|
||||||
|
self.arrayOpener = '('
|
||||||
|
self.arrayCloser = ')'
|
||||||
|
|
||||||
def getSubElement(self, key, data):
|
def getSubElement(self, key, data):
|
||||||
separatorIndex = key.find(self.separator)
|
separatorIndex = key.find(self.separator)
|
||||||
@ -56,9 +58,12 @@ class JsonHelper:
|
|||||||
return (None, 'not_found')
|
return (None, 'not_found')
|
||||||
|
|
||||||
def getSubArrayElement(self, key, data):
|
def getSubArrayElement(self, key, data):
|
||||||
subElemKey = key[:key.find('[')]
|
subElemKey = key[:key.find(self.arrayOpener)]
|
||||||
index = int(key[key.find('[') + 1:key.find(']')])
|
index = int(key[key.find(self.arrayOpener) + 1:key.find(self.arrayCloser)])
|
||||||
remainingKey = key[key.find('].') + 2:]
|
remainingKey = key[key.find(self.arrayCloser + self.separator) + 2:]
|
||||||
|
if key.find(self.arrayCloser + self.separator) == -1:
|
||||||
|
remainingKey = key[key.find(self.arrayCloser) + 1:]
|
||||||
|
|
||||||
if subElemKey in data:
|
if subElemKey in data:
|
||||||
if index < len(data[subElemKey]):
|
if index < len(data[subElemKey]):
|
||||||
return self.get(remainingKey, data[subElemKey][index])
|
return self.get(remainingKey, data[subElemKey][index])
|
||||||
@ -81,8 +86,8 @@ class JsonHelper:
|
|||||||
if len(key) <= 0:
|
if len(key) <= 0:
|
||||||
return data
|
return data
|
||||||
|
|
||||||
if key.find(self.separator) != -1 and key.find('[') != -1 :
|
if key.find(self.separator) != -1 and key.find(self.arrayOpener) != -1 :
|
||||||
if key.find(self.separator) < key.find('[') :
|
if key.find(self.separator) < key.find(self.arrayOpener) :
|
||||||
return self.getSubElement(key, data)
|
return self.getSubElement(key, data)
|
||||||
else:
|
else:
|
||||||
return self.getSubArrayElement(key, data)
|
return self.getSubArrayElement(key, data)
|
||||||
@ -90,7 +95,7 @@ class JsonHelper:
|
|||||||
if key.find(self.separator) != -1 :
|
if key.find(self.separator) != -1 :
|
||||||
return self.getSubElement(key, data)
|
return self.getSubElement(key, data)
|
||||||
else:
|
else:
|
||||||
if key.find('[') != -1 :
|
if key.find(self.arrayOpener) != -1 :
|
||||||
return self.getSubArrayElement(key, data)
|
return self.getSubArrayElement(key, data)
|
||||||
else:
|
else:
|
||||||
if key in data:
|
if key in data:
|
||||||
@ -196,7 +201,7 @@ def parseArgs():
|
|||||||
More information about Range format and units of measure for nagios can be found at https://nagios-plugins.org/doc/guidelines.html\
|
More information about Range format and units of measure for nagios can be found at https://nagios-plugins.org/doc/guidelines.html\
|
||||||
Additional formats for this parameter are: (key), (key,UnitOfMeasure), (key,UnitOfMeasure,Min,Max).')
|
Additional formats for this parameter are: (key), (key,UnitOfMeasure), (key,UnitOfMeasure,Min,Max).')
|
||||||
parser.add_argument('-s', '--ssl', action='store_true', help='HTTPS mode.')
|
parser.add_argument('-s', '--ssl', action='store_true', help='HTTPS mode.')
|
||||||
parser.add_argument('-f', '--field_separator', dest='separator', help='Json Field separator, defaults to "."')
|
parser.add_argument('-f', '--field_separator', dest='separator', help='Json Field separator, defaults to "." ; Select element in an array with "(" ")"')
|
||||||
parser.add_argument('-d', '--debug', action='store_true', help='Debug mode.')
|
parser.add_argument('-d', '--debug', action='store_true', help='Debug mode.')
|
||||||
|
|
||||||
return parser.parse_args()
|
return parser.parse_args()
|
||||||
|
Loading…
Reference in New Issue
Block a user