@@ -257,9 +257,23 @@ def getFss(fsx):
257257
258258 # The initial amount of time to sleep if there is a rate limit exception.
259259 sleep = .125
260- response = fsx .describe_file_systems ()
261- fss = response ['FileSystems' ]
262- nextToken = response .get ('NextToken' )
260+ while True :
261+ try :
262+ response = fsx .describe_file_systems ()
263+ fss = response ['FileSystems' ]
264+ nextToken = response .get ('NextToken' )
265+ sleep = .125
266+ break
267+ except botocore .exceptions .ClientError as e :
268+ if e .response ['Error' ]['Code' ] == 'TooManyRequestsException' :
269+ sleep = sleep * 2 # Exponential backoff.
270+ if sleep > 5 :
271+ raise e
272+ print (f"Sleeping for { sleep } seconds for initial file systems." )
273+ time .sleep (sleep )
274+ else :
275+ raise e
276+
263277 while nextToken :
264278 try :
265279 response = fsx .describe_file_systems (NextToken = nextToken )
@@ -271,7 +285,7 @@ def getFss(fsx):
271285 sleep = sleep * 2 # Exponential backoff.
272286 if sleep > 5 :
273287 raise e
274- print (f"Sleeping for { sleep } seconds for file systems." )
288+ print (f"Sleeping for { sleep } seconds for additional file systems." )
275289 time .sleep (sleep )
276290 else :
277291 raise e
@@ -286,9 +300,23 @@ def getVolumes(fsx):
286300
287301 # The initial amount of time to sleep if there is a rate limit exception.
288302 sleep = .125
289- response = fsx .describe_volumes ()
290- volumes = response ['Volumes' ]
291- nextToken = response .get ('NextToken' )
303+ while True :
304+ try :
305+ response = fsx .describe_volumes ()
306+ volumes = response ['Volumes' ]
307+ nextToken = response .get ('NextToken' )
308+ sleep = .125
309+ break
310+ except botocore .exceptions .ClientError as e :
311+ if e .response ['Error' ]['Code' ] == 'TooManyRequestsException' :
312+ sleep = sleep * 2 # Exponential backoff.
313+ if sleep > 5 :
314+ raise e
315+ print (f"Sleeping for { sleep } seconds for initial volumes." )
316+ time .sleep (sleep )
317+ else :
318+ raise e
319+
292320 while nextToken :
293321 try :
294322 response = fsx .describe_volumes (NextToken = nextToken )
@@ -300,7 +328,7 @@ def getVolumes(fsx):
300328 sleep = sleep * 2 # Exponential backoff.
301329 if sleep > 5 :
302330 raise e
303- print (f"Sleeping for { sleep } seconds for volumes." )
331+ print (f"Sleeping for { sleep } seconds for additional volumes." )
304332 time .sleep (sleep )
305333 else :
306334 raise e
@@ -316,9 +344,23 @@ def getAlarms(cw):
316344
317345 # The initial amount of time to sleep if there is a rate limit exception.
318346 sleep = .125
319- response = cw .describe_alarms ()
320- alarms = response ['MetricAlarms' ]
321- nextToken = response .get ('NextToken' )
347+ while True :
348+ try :
349+ response = cw .describe_alarms ()
350+ alarms = response ['MetricAlarms' ]
351+ nextToken = response .get ('NextToken' )
352+ sleep = .125
353+ break
354+ except botocore .exceptions .ClientError as e :
355+ if e .response ['Error' ]['Code' ] == 'TooManyRequestsException' :
356+ sleep = sleep * 2
357+ if sleep > 5 :
358+ raise e
359+ print (f"Sleeping for { sleep } seconds for initial alarms." )
360+ time .sleep (sleep )
361+ else :
362+ raise e
363+
322364 while nextToken :
323365 try :
324366 response = cw .describe_alarms (NextToken = nextToken )
@@ -330,7 +372,7 @@ def getAlarms(cw):
330372 sleep = sleep * 2 # Exponential backoff.
331373 if sleep > 5 :
332374 raise e
333- print (f"Sleeping for { sleep } seconds for alarms." )
375+ print (f"Sleeping for { sleep } seconds for additional alarms." )
334376 time .sleep (sleep )
335377 else :
336378 raise e
0 commit comments