Guard against too old boto library

route53 creates Record objects using `health check` and `failover`
parameters. Those parameters only became available in boto 2.28.0.
As some prominent LTS Linux releases (e.g.: Ubuntu 14.04) only ship
older boto versions (e.g.: 2.20.1 for Ubuntu 14.04), users are getting
unhelpful error messages like

  TypeError: __init__() got an unexpected keyword argument 'health_check'

when running Ansible 2 against their LTS install's default boto.
We improve upon this error message by checking the boto version
beforehand.

Fixes ansible/ansible#13646
pull/18777/head
Christian Aistleitner 9 years ago committed by Matt Clay
parent 50622b4e6a
commit 51e3c6c49b

@ -274,10 +274,12 @@ EXAMPLES = '''
'''
MINIMUM_BOTO_VERSION = '2.28.0'
WAIT_RETRY_SLEEP = 5 # how many seconds to wait between propagation status polls
import time
import distutils.version
try:
import boto
@ -391,6 +393,9 @@ def main():
if not HAS_BOTO:
module.fail_json(msg='boto required for this module')
if distutils.version.StrictVersion(boto.__version__) < distutils.version.StrictVersion(MINIMUM_BOTO_VERSION):
module.fail_json(msg='Found boto in version %s, but >= %s is required' % (boto.__version__, MINIMUM_BOTO_VERSION))
command_in = module.params.get('command')
zone_in = module.params.get('zone').lower()
hosted_zone_id_in = module.params.get('hosted_zone_id')

Loading…
Cancel
Save