@@ -194,53 +194,9 @@ def message(self):
194194 return ""
195195
196196 def retrieve (self , * args , ** kwargs ):
197- update_flag = False
198- if self .status != "Ready" :
199- try :
200- resp_i = self ._scheduler .svcat .get_instance (
201- self .app .id , self .name ).json ()
202- self .status = resp_i .get ('status' , {}).\
203- get ('lastConditionState' )
204- self .options = resp_i .get ('spec' , {}).get ('parameters' , {})
205- update_flag = True
206- except KubeException as e :
207- logger .info ("retrieve instance info error: {}" .format (e ))
208- if self .binding != "Ready" :
209- try :
210- # We raise an exception when a resource doesn't exist
211- resp_b = self ._scheduler .svcat .get_binding (
212- self .app .id , self .name ).json ()
213- self .binding = resp_b .get ('status' , {}).\
214- get ('lastConditionState' )
215- update_flag = True
216- secret_name = resp_b .get ('spec' , {}).get ('secretName' )
217- if secret_name :
218- resp_s = self ._scheduler .secret .get (
219- self .app .id , secret_name ).json ()
220- self .data = resp_s .get ('data' , {})
221- update_flag = True
222- except KubeException as e :
223- logger .info ("retrieve binding info error: {}" .format (e ))
224- if update_flag is True :
197+ if self ._retrieve_status () or self ._retrieve_binding ():
225198 self .save ()
226- return self .status == "Ready"
227-
228- def detach_resource (self , * args , ** kwargs ):
229- if self .binding != "Ready" :
230- try :
231- resp_b = self ._scheduler .svcat .get_binding (
232- self .app .id , self .name ).json ()
233- secret_name = resp_b .get ('spec' , {}).get ('secretName' )
234- if secret_name :
235- self ._scheduler .secret .delete (self .app .id , secret_name )
236- self ._scheduler .svcat .delete_binding (
237- self .app .id , self .name )
238- except KubeException as e :
239- logger .info ("delete binding info error: {}" .format (e ))
240- self .binding = None
241-
242- if (self .status != "Ready" ) or (not self .binding ):
243- self .delete ()
199+ return self .status == self .binding == "Ready"
244200
245201 def to_measurements (self , timestamp : float ):
246202 return [{
@@ -252,3 +208,40 @@ def to_measurements(self, timestamp: float):
252208 "usage" : 1 ,
253209 "timestamp" : int (timestamp )
254210 }]
211+
212+ def _retrieve_status (self ):
213+ changed = False
214+ try :
215+ response = self ._scheduler .svcat .get_instance (
216+ self .app .id , self .name ).json ()
217+ status = response .get ('status' , {}).get ('lastConditionState' )
218+ options = response .get ('spec' , {}).get ('parameters' , {})
219+ if self .status != status :
220+ self .status = status
221+ changed = True
222+ if self .options != options :
223+ self .options = options
224+ changed = True
225+ except KubeException as e :
226+ logger .info ("retrieve instance info error: {}" .format (e ))
227+ return changed
228+
229+ def _retrieve_binding (self ):
230+ changed = False
231+ try :
232+ # We raise an exception when a resource doesn't exist
233+ response = self ._scheduler .svcat .get_binding (self .app .id , self .name ).json ()
234+ binding = response .get ('status' , {}).get ('lastConditionState' )
235+ secret_name = response .get ('spec' , {}).get ('secretName' )
236+ if self .binding != binding :
237+ self .binding = binding
238+ changed = True
239+ if secret_name :
240+ response = self ._scheduler .secret .get (self .app .id , secret_name ).json ()
241+ data = response .get ('data' , {})
242+ if self .data != data :
243+ self .data = data
244+ changed = True
245+ except KubeException as e :
246+ logger .info ("retrieve binding info error: {}" .format (e ))
247+ return changed
0 commit comments