@@ -247,6 +247,7 @@ class CitrixAdcCollector(object):
247247
248248 SUCCESS = 'SUCCESS'
249249 FAILURE = 'FAILURE'
250+ INVALID = 'INVALID'
250251
251252 def __init__ (self , nsip , metrics , username , password , protocol ,
252253 nitro_timeout , k8s_cic_prefix , ns_cert ):
@@ -274,7 +275,7 @@ def collect(self):
274275 data = {}
275276 self .stats_access_pending = True
276277 for entity in self .metrics .keys ():
277- logger .debug ('Collecting metric {} for {} ' .format (entity , self . nsip ))
278+ logger .debug ('Collecting metric {}' .format (entity ))
278279 try :
279280 status , entity_data = self .collect_data (entity )
280281 except Exception as e :
@@ -405,12 +406,16 @@ def collect_data(self, entity):
405406 return status , data [entity ]
406407 else :
407408 logger .info ('No metric data available for entity: {}' .format (entity ))
409+ if status == self .INVALID :
410+ logger .debug ('Invalid metric fetch for entity "{}" ' \
411+ 'with errorcode:{} ' .format (entity ,data ['errorcode' ]))
408412 return status , None
409413 else :
410414 logger .warning ('Unable to fetch data for entity: {}' .format (entity ))
411415 return status , None
412416 except Exception as e :
413417 logger .error ('Error in fetching entity {}' .format (e ))
418+ return self .FAILURE , None
414419
415420 def get_svc_grp_services_stats (self ):
416421 '''Fetches stats for services'''
@@ -489,14 +494,20 @@ def ns_session_get(self, url):
489494 r = self .ns_session .get (
490495 url , verify = self .ns_cert , timeout = self .nitro_timeout )
491496 data = r .json ()
492- if data ['errorcode' ] == 0 :
493- return self .SUCCESS , data
494- elif data ['errorcode' ] in [NSERR_SESSION_EXPIRED , NSERR_AUTHTIMEOUT ]:
495- self .ns_session_clear ()
496- if self .login ():
497- return 'retry' , None
498- else :
499- return self .FAILURE , None
497+ if data :
498+ if 'errorcode' in data :
499+ if data ['errorcode' ] == 0 :
500+ return self .SUCCESS , data
501+ elif data ['errorcode' ] in [NSERR_SESSION_EXPIRED , NSERR_AUTHTIMEOUT ]:
502+ self .ns_session_clear ()
503+ if self .login ():
504+ return 'retry' , None
505+ else :
506+ return self .FAILURE , None
507+ else :
508+ return self .INVALID , data
509+ else :
510+ return self .FAILURE , None
500511 except requests .exceptions .RequestException as err :
501512 logger .error ('Stat Access Error {}' .format (err ))
502513 except Exception as e :
0 commit comments