@@ -116,6 +116,27 @@ def _refresh_credentials(self) -> None:
116116 except Exception :
117117 logging .exception ("Failed to refresh assume role" )
118118
119+ def _request_with_refresh (self , * , method , url , data = None , params = None , headers = None , verify = False ):
120+ resp = self .signed_request (
121+ method = method ,
122+ url = url ,
123+ data = data ,
124+ params = params ,
125+ verify = verify ,
126+ headers = headers ,
127+ )
128+ if resp is not None and resp .status_code == 403 :
129+ self ._refresh_credentials ()
130+ resp = self .signed_request (
131+ method = method ,
132+ url = url ,
133+ data = data ,
134+ params = params ,
135+ verify = verify ,
136+ headers = headers ,
137+ )
138+ return resp
139+
119140 def _custom_query (self , query : str , params : dict = None ):
120141 """
121142 Send a custom query to a Prometheus Host.
@@ -136,24 +157,14 @@ def _custom_query(self, query: str, params: dict = None):
136157 data = None
137158 query = str (query )
138159 # using the query API to get raw data
139- response = self .signed_request (
160+ response = self ._request_with_refresh (
140161 method = "POST" ,
141162 url = "{0}/api/v1/query" .format (self .url ),
142163 data = {** {"query" : query }, ** params },
143164 params = {},
144165 verify = self .ssl_verification ,
145166 headers = self .headers ,
146167 )
147- if response is not None and response .status_code == 403 :
148- self ._refresh_credentials ()
149- response = self .signed_request (
150- method = "POST" ,
151- url = "{0}/api/v1/query" .format (self .url ),
152- data = {** {"query" : query }, ** params },
153- params = {},
154- verify = self .ssl_verification ,
155- headers = self .headers ,
156- )
157168 return response
158169
159170 def safe_custom_query_range (
@@ -185,7 +196,7 @@ def safe_custom_query_range(
185196 params = params or {}
186197
187198 query = str (query )
188- response = self .signed_request (
199+ response = self ._request_with_refresh (
189200 method = "POST" ,
190201 url = "{0}/api/v1/query_range" .format (self .url ),
191202 data = {
@@ -195,18 +206,6 @@ def safe_custom_query_range(
195206 params = {},
196207 headers = self .headers ,
197208 )
198- if response is not None and response .status_code == 403 :
199- self ._refresh_credentials ()
200- response = self .signed_request (
201- method = "POST" ,
202- url = "{0}/api/v1/query_range" .format (self .url ),
203- data = {
204- ** {"query" : query , "start" : start , "end" : end , "step" : step },
205- ** params ,
206- },
207- params = {},
208- headers = self .headers ,
209- )
210209 if response .status_code == 200 :
211210 return response .json ()["data" ]
212211 else :
0 commit comments