New option for route53: retry_interval
The current (hard-coded) retry interval of 500 seconds can cause ansible to have excessive run-times in the case of many domains. `retry_interval` provides a way to customize the wait between retries of calls to route53.
This commit is contained in:
parent
4be891f68c
commit
fe74cb0ad0
1 changed files with 12 additions and 4 deletions
|
@ -78,6 +78,12 @@ options:
|
|||
required: false
|
||||
default: null
|
||||
aliases: []
|
||||
retry_interval:
|
||||
description:
|
||||
- In the case that route53 is still servicing a prior request, this module will wait and try again after this many seconds. If you have many domain names, the default of 500 seconds may be too long.
|
||||
required: false
|
||||
default: 500
|
||||
aliases: []
|
||||
requirements: [ "boto" ]
|
||||
author: Bruce Pennypacker
|
||||
'''
|
||||
|
@ -142,7 +148,7 @@ except ImportError:
|
|||
print "failed=True msg='boto required for this module'"
|
||||
sys.exit(1)
|
||||
|
||||
def commit(changes):
|
||||
def commit(changes, retry_interval):
|
||||
"""Commit changes, but retry PriorRequestNotComplete errors."""
|
||||
retry = 10
|
||||
while True:
|
||||
|
@ -154,7 +160,7 @@ def commit(changes):
|
|||
code = code.split("</Code>")[0]
|
||||
if code != 'PriorRequestNotComplete' or retry < 0:
|
||||
raise e
|
||||
time.sleep(500)
|
||||
time.sleep(retry_interval)
|
||||
|
||||
def main():
|
||||
argument_spec = ec2_argument_spec()
|
||||
|
@ -165,7 +171,8 @@ def main():
|
|||
ttl = dict(required=False, default=3600),
|
||||
type = dict(choices=['A', 'CNAME', 'MX', 'AAAA', 'TXT', 'PTR', 'SRV', 'SPF', 'NS'], required=True),
|
||||
value = dict(required=False),
|
||||
overwrite = dict(required=False, type='bool')
|
||||
overwrite = dict(required=False, type='bool'),
|
||||
retry_interval = dict(required=False, default=500)
|
||||
)
|
||||
)
|
||||
module = AnsibleModule(argument_spec=argument_spec)
|
||||
|
@ -176,6 +183,7 @@ def main():
|
|||
record_in = module.params.get('record')
|
||||
type_in = module.params.get('type')
|
||||
value_in = module.params.get('value')
|
||||
retry_interval_in = module.params.get('retry_interval')
|
||||
|
||||
ec2_url, aws_access_key, aws_secret_key, region = get_ec2_creds(module)
|
||||
|
||||
|
@ -258,7 +266,7 @@ def main():
|
|||
change.add_value(v)
|
||||
|
||||
try:
|
||||
result = commit(changes)
|
||||
result = commit(changes, retry_interval_in)
|
||||
except boto.route53.exception.DNSServerError, e:
|
||||
txt = e.body.split("<Message>")[1]
|
||||
txt = txt.split("</Message>")[0]
|
||||
|
|
Loading…
Reference in a new issue