@@ -21,17 +21,18 @@ def extract_value_from_prometheus_response(expression,response,filterdict=dict()
2121 if response ['data' ]['resultType' ]== 'vector' :
2222 result = [ x for x in response ['data' ]['result' ]
2323 if x .get ('metric' ,None ) is not None and is_subdict (filterdict ,x ['metric' ]) ]
24+ if isinstance (expression ,list ):
25+ log .debug ('Multiple results in prometheus response for expression "{0}": "{1}"'
26+ .format (expression ,str (result )))
27+ return [ x .get ('metric' ,dict ()).get (expression [1 ]) \
28+ for x in result if x .get ('metric' ,dict ()).get (expression [1 ])]
2429 if len (result )< 1 :
2530 raise Exception ('No results found in prometheus response for expression "{0}": "{1}"'
2631 .format (expression ,str (result )))
27- log .debug ('Multiple results in prometheus response for expression "{0}": "{1}"'
28- .format (expression ,str (result )))
29- if not isinstance (expression ,list ):
30- raise Exception ('Multiple results in prometheus response for expression "{0}": "{1}"'
31- .format (expression ,str (result )))
32- else :
33- return [ x .get ('metric' ,dict ()).get (expression [1 ]) \
34- for x in result if x .get ('metric' ,dict ()).get (expression [1 ])]
32+ if not result [0 ].get ('value' ):
33+ raise Exception ('Unrecognised result in prometheus response for expression "{0}": "{1}"'
34+ .format (expression ,str (result [0 ])))
35+ value = result [0 ]['value' ]
3536 else :
3637 value = response ['data' ]['result' ]
3738 if not isinstance (value ,list ) or \
0 commit comments