@@ -400,7 +400,19 @@ def _modify(self, **patch):
400400 raise AttemptedMutationOfReadOnly (msg )
401401
402402 patch = self ._prepare_request_json (patch )
403- response = session .patch (patch_uri , json = patch , ** requests_params )
403+
404+ # Handles ConnectionAborted errors
405+ for i in range (0 , 30 ):
406+ try :
407+ response = session .patch (patch_uri , json = patch , ** requests_params )
408+ break
409+ except ConnectionError as ex :
410+ if 'Connection aborted' in str (ex ) and i < 29 :
411+ time .sleep (1 )
412+ continue
413+ else :
414+ raise
415+
404416 self ._local_update (response .json ())
405417
406418 def modify (self , ** patch ):
@@ -574,7 +586,7 @@ def _update(self, **kwargs):
574586 #
575587 # @see https://github.com/F5Networks/f5-ansible/issues/317
576588 # @see https://github.com/requests/requests/issues/2364
577- for _ in range (0 , 30 ):
589+ for i in range (0 , 30 ):
578590 try :
579591 response = session .put (update_uri , json = data_dict , ** requests_params )
580592 self ._meta_data = temp_meta
@@ -586,7 +598,7 @@ def _update(self, **kwargs):
586598 self ._local_update (response .json ())
587599 raise
588600 except ConnectionError as ex :
589- if 'Connection aborted' in str (ex ):
601+ if 'Connection aborted' in str (ex ) and i < 29 :
590602 time .sleep (1 )
591603 continue
592604 else :
@@ -630,7 +642,18 @@ def _refresh(self, **kwargs):
630642 else :
631643 uri = self ._meta_data ['uri' ]
632644
633- response = refresh_session .get (uri , ** requests_params )
645+ # Handles ConnectionAborted errors
646+ for i in range (0 , 30 ):
647+ try :
648+ response = refresh_session .get (uri , ** requests_params )
649+ break
650+ except ConnectionError as ex :
651+ if 'Connection aborted' in str (ex ) and i < 29 :
652+ time .sleep (1 )
653+ continue
654+ else :
655+ raise
656+
634657 self ._local_update (response .json ())
635658
636659 def refresh (self , ** kwargs ):
@@ -967,7 +990,17 @@ def _create(self, **kwargs):
967990 kwargs = self ._prepare_request_json (kwargs )
968991
969992 # Invoke the REST operation on the device.
970- response = session .post (_create_uri , json = kwargs , ** requests_params )
993+ # Handles ConnectionAborted errors
994+ for i in range (0 , 30 ):
995+ try :
996+ response = session .post (_create_uri , json = kwargs , ** requests_params )
997+ break
998+ except ConnectionError as ex :
999+ if 'Connection aborted' in str (ex ) and i < 29 :
1000+ time .sleep (1 )
1001+ continue
1002+ else :
1003+ raise
9711004
9721005 # Make new instance of self
9731006 result = self ._produce_instance (response )
@@ -1036,7 +1069,19 @@ def _load(self, **kwargs):
10361069 for key1 , key2 in self ._meta_data ['reduction_forcing_pairs' ]:
10371070 kwargs = self ._reduce_boolean_pair (kwargs , key1 , key2 )
10381071 kwargs = self ._check_for_python_keywords (kwargs )
1039- response = refresh_session .get (base_uri , ** kwargs )
1072+
1073+ # Handles ConnectionAborted errors
1074+ for i in range (0 , 30 ):
1075+ try :
1076+ response = refresh_session .get (base_uri , ** kwargs )
1077+ break
1078+ except ConnectionError as ex :
1079+ if 'Connection aborted' in str (ex ) and i < 29 :
1080+ time .sleep (1 )
1081+ continue
1082+ else :
1083+ raise
1084+
10401085 # Make new instance of self
10411086 return self ._produce_instance (response )
10421087
@@ -1076,7 +1121,18 @@ def _delete(self, **kwargs):
10761121 if not force :
10771122 self ._check_generation ()
10781123
1079- response = session .delete (delete_uri , ** requests_params )
1124+ # Handles ConnectionAborted errors
1125+ for i in range (0 , 30 ):
1126+ try :
1127+ response = session .delete (delete_uri , ** requests_params )
1128+ break
1129+ except ConnectionError as ex :
1130+ if 'Connection aborted' in str (ex ) and i < 29 :
1131+ time .sleep (1 )
1132+ continue
1133+ else :
1134+ raise
1135+
10801136 if response .status_code == 200 :
10811137 self .__dict__ = {'deleted' : True }
10821138
@@ -1138,13 +1194,23 @@ def _exists(self, **kwargs):
11381194 base_uri = self ._meta_data ['container' ]._meta_data ['uri' ]
11391195 kwargs .update (requests_params )
11401196
1141- try :
1142- session .get (base_uri , ** kwargs )
1143- except HTTPError as err :
1144- if err .response .status_code == 404 :
1145- return False
1146- else :
1147- raise
1197+ # Handles ConnectionAborted errors
1198+ for i in range (0 , 30 ):
1199+ try :
1200+ session .get (base_uri , ** kwargs )
1201+ break
1202+ except HTTPError as err :
1203+ if err .response .status_code == 404 :
1204+ return False
1205+ else :
1206+ raise
1207+ except ConnectionError as ex :
1208+ if 'Connection aborted' in str (ex ) and i < 29 :
1209+ time .sleep (1 )
1210+ continue
1211+ else :
1212+ raise
1213+
11481214 return True
11491215
11501216
0 commit comments