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
|
required: false
|
||||||
default: null
|
default: null
|
||||||
aliases: []
|
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" ]
|
requirements: [ "boto" ]
|
||||||
author: Bruce Pennypacker
|
author: Bruce Pennypacker
|
||||||
'''
|
'''
|
||||||
|
@ -142,7 +148,7 @@ except ImportError:
|
||||||
print "failed=True msg='boto required for this module'"
|
print "failed=True msg='boto required for this module'"
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def commit(changes):
|
def commit(changes, retry_interval):
|
||||||
"""Commit changes, but retry PriorRequestNotComplete errors."""
|
"""Commit changes, but retry PriorRequestNotComplete errors."""
|
||||||
retry = 10
|
retry = 10
|
||||||
while True:
|
while True:
|
||||||
|
@ -154,7 +160,7 @@ def commit(changes):
|
||||||
code = code.split("</Code>")[0]
|
code = code.split("</Code>")[0]
|
||||||
if code != 'PriorRequestNotComplete' or retry < 0:
|
if code != 'PriorRequestNotComplete' or retry < 0:
|
||||||
raise e
|
raise e
|
||||||
time.sleep(500)
|
time.sleep(retry_interval)
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ec2_argument_spec()
|
argument_spec = ec2_argument_spec()
|
||||||
|
@ -165,7 +171,8 @@ def main():
|
||||||
ttl = dict(required=False, default=3600),
|
ttl = dict(required=False, default=3600),
|
||||||
type = dict(choices=['A', 'CNAME', 'MX', 'AAAA', 'TXT', 'PTR', 'SRV', 'SPF', 'NS'], required=True),
|
type = dict(choices=['A', 'CNAME', 'MX', 'AAAA', 'TXT', 'PTR', 'SRV', 'SPF', 'NS'], required=True),
|
||||||
value = dict(required=False),
|
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)
|
module = AnsibleModule(argument_spec=argument_spec)
|
||||||
|
@ -176,6 +183,7 @@ def main():
|
||||||
record_in = module.params.get('record')
|
record_in = module.params.get('record')
|
||||||
type_in = module.params.get('type')
|
type_in = module.params.get('type')
|
||||||
value_in = module.params.get('value')
|
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)
|
ec2_url, aws_access_key, aws_secret_key, region = get_ec2_creds(module)
|
||||||
|
|
||||||
|
@ -258,7 +266,7 @@ def main():
|
||||||
change.add_value(v)
|
change.add_value(v)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
result = commit(changes)
|
result = commit(changes, retry_interval_in)
|
||||||
except boto.route53.exception.DNSServerError, e:
|
except boto.route53.exception.DNSServerError, e:
|
||||||
txt = e.body.split("<Message>")[1]
|
txt = e.body.split("<Message>")[1]
|
||||||
txt = txt.split("</Message>")[0]
|
txt = txt.split("</Message>")[0]
|
||||||
|
|
Loading…
Reference in a new issue