@@ -252,3 +252,56 @@ def snapshot(self, description="snapshot", target_dn="") -> bool:
252252 else :
253253 self .__logger .error (f'snapshot creation not succesfull: { response } ' )
254254 return False
255+
256+ # ==============================================================================
257+ # subscribe
258+ # ==============================================================================
259+ def subscribe (
260+ self , subscription_dn : str , timeout : int = 60 , query_parameters : list = []
261+ ) -> {}:
262+ query_parameters .append ("subscription=yes" )
263+ query_parameters .append (f"refresh-timeout={ timeout } " )
264+
265+ endpoint = f"{ self .baseUrl } { str (subscription_dn )} ?{ '&' .join (query_parameters )} "
266+ self .__logger .debug (f"Subscribe to: { endpoint } " )
267+
268+ response = self .session .get (endpoint , verify = False )
269+ if response .status_code == 200 :
270+ self .__logger .debug (f"Successful subscribed to APIC: { response .json ()} " )
271+ return response .json ()
272+ elif response .status_code == 400 :
273+ resp_text = (
274+ f"400: { response .json ()['imdata' ][0 ]['error' ]['attributes' ]['text' ]} "
275+ )
276+ self .__logger .error (f"Error 400 during get occured: { resp_text } " )
277+ return response .json ()
278+ else :
279+ self .__logger .error (f"Error during get occured: { response .json ()} " )
280+ response .raise_for_status ()
281+ return response .json ()
282+
283+ # ==============================================================================
284+ # subscription_refresh
285+ # ==============================================================================
286+ def subscription_refresh (self , subscription_id : str ) -> {}:
287+ query_parameters = [f"id={ subscription_id } " ]
288+
289+ endpoint = (
290+ f"{ self .baseUrl } /subscriptionRefresh.json?{ '&' .join (query_parameters )} "
291+ )
292+ self .__logger .debug (f"Refresh subscription: { subscription_id } " )
293+
294+ response = self .session .post (endpoint , verify = False )
295+ if response .status_code == 200 :
296+ self .__logger .debug (f"Successful subscribed to APIC: { response .json ()} " )
297+ return response .json ()
298+ elif response .status_code == 400 :
299+ resp_text = (
300+ f"400: { response .json ()['imdata' ][0 ]['error' ]['attributes' ]['text' ]} "
301+ )
302+ self .__logger .error (f"Error 400 during get occured: { resp_text } " )
303+ return response .json ()
304+ else :
305+ self .__logger .error (f"Error during get occured: { response .json ()} " )
306+ response .raise_for_status ()
307+ return response .json ()
0 commit comments