Add in a retry loop for route53 requests

The route53 api doesn't allow multiple overlapping requests, so if
it is still processing a previous request when the next comes in will
return an error.

Fixes #4085
pull/4421/head
Joost Cassee 11 years ago committed by James Cammarata
parent 7b9e877970
commit bd10aad71f

@ -120,6 +120,7 @@ EXAMPLES = '''
'''
import sys
import time
try:
import boto
@ -129,6 +130,20 @@ except ImportError:
print "failed=True msg='boto required for this module'"
sys.exit(1)
def commit(changes):
"""Commit changes, but retry PriorRequestNotComplete errors."""
retry = 10
while True:
try:
retry -= 1
return changes.commit()
except boto.route53.exception.DNSServerError, e:
code = e.body.split("<Code>")[1]
code = code.split("</Code>")[0]
if code != 'PriorRequestNotComplete' or retry < 0:
raise e
time.sleep(500)
def main():
module = AnsibleModule(
argument_spec = dict(
@ -240,7 +255,7 @@ def main():
change.add_value(v)
try:
result = changes.commit()
result = commit(changes)
except boto.route53.exception.DNSServerError, e:
txt = e.body.split("<Message>")[1]
txt = txt.split("</Message>")[0]

Loading…
Cancel
Save