Modification of describe_gateways key so that it is consistent with w… (#2936)
* Modification of describe_gateways key so that it is consistent with what create_gateway returns. Also added AnsibleModule spec to require bgp_ip on state=present as defined in the doc * Don't remove CustomerGateways key to preserve backward compatibility
This commit is contained in:
parent
4cb3e87ca4
commit
e07c71dd99
1 changed files with 25 additions and 13 deletions
|
@ -44,6 +44,9 @@ options:
|
||||||
required: false
|
required: false
|
||||||
default: present
|
default: present
|
||||||
choices: [ 'present', 'absent' ]
|
choices: [ 'present', 'absent' ]
|
||||||
|
notes:
|
||||||
|
- Return values contain customer_gateway and customer_gateways keys which are identical dicts. You should use
|
||||||
|
customer_gateway. See U(https://github.com/ansible/ansible-modules-extras/issues/2773) for details.
|
||||||
extends_documentation_fragment:
|
extends_documentation_fragment:
|
||||||
- aws
|
- aws
|
||||||
- ec2
|
- ec2
|
||||||
|
@ -182,18 +185,24 @@ class Ec2CustomerGatewayManager:
|
||||||
)
|
)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
argument_spec = ec2_argument_spec()
|
argument_spec = ec2_argument_spec()
|
||||||
argument_spec.update(
|
argument_spec.update(
|
||||||
dict(
|
dict(
|
||||||
bgp_asn = dict(required=False, type='int'),
|
bgp_asn=dict(required=False, type='int'),
|
||||||
ip_address = dict(required=True),
|
ip_address=dict(required=True),
|
||||||
name = dict(required=True),
|
name=dict(required=True),
|
||||||
state = dict(default='present', choices=['present', 'absent']),
|
state=dict(default='present', choices=['present', 'absent']),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
module = AnsibleModule(argument_spec=argument_spec, supports_check_mode=True)
|
module = AnsibleModule(argument_spec=argument_spec,
|
||||||
|
supports_check_mode=True,
|
||||||
|
required_if=[
|
||||||
|
('state', 'present', ['bgp_arn'])
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
if not HAS_BOTOCORE:
|
if not HAS_BOTOCORE:
|
||||||
module.fail_json(msg='botocore is required.')
|
module.fail_json(msg='botocore is required.')
|
||||||
|
@ -208,19 +217,22 @@ def main():
|
||||||
name = module.params.get('name')
|
name = module.params.get('name')
|
||||||
|
|
||||||
existing = gw_mgr.describe_gateways(module.params['ip_address'])
|
existing = gw_mgr.describe_gateways(module.params['ip_address'])
|
||||||
|
# describe_gateways returns a key of CustomerGateways where as create_gateway returns a
|
||||||
|
# key of CustomerGateway. For consistency, change it here
|
||||||
|
existing['CustomerGateway'] = existing['CustomerGateways']
|
||||||
|
|
||||||
results = dict(changed=False)
|
results = dict(changed=False)
|
||||||
if module.params['state'] == 'present':
|
if module.params['state'] == 'present':
|
||||||
if existing['CustomerGateways']:
|
if existing['CustomerGateway']:
|
||||||
results['gateway']=existing
|
results['gateway'] = existing
|
||||||
if existing['CustomerGateways'][0]['Tags']:
|
if existing['CustomerGateway'][0]['Tags']:
|
||||||
tag_array = existing['CustomerGateways'][0]['Tags']
|
tag_array = existing['CustomerGateway'][0]['Tags']
|
||||||
for key, value in enumerate(tag_array):
|
for key, value in enumerate(tag_array):
|
||||||
if value['Key'] == 'Name':
|
if value['Key'] == 'Name':
|
||||||
current_name = value['Value']
|
current_name = value['Value']
|
||||||
if current_name != name:
|
if current_name != name:
|
||||||
results['name'] = gw_mgr.tag_cgw_name(
|
results['name'] = gw_mgr.tag_cgw_name(
|
||||||
results['gateway']['CustomerGateways'][0]['CustomerGatewayId'],
|
results['gateway']['CustomerGateway'][0]['CustomerGatewayId'],
|
||||||
module.params['name'],
|
module.params['name'],
|
||||||
)
|
)
|
||||||
results['changed'] = True
|
results['changed'] = True
|
||||||
|
@ -237,11 +249,11 @@ def main():
|
||||||
results['changed'] = True
|
results['changed'] = True
|
||||||
|
|
||||||
elif module.params['state'] == 'absent':
|
elif module.params['state'] == 'absent':
|
||||||
if existing['CustomerGateways']:
|
if existing['CustomerGateway']:
|
||||||
results['gateway']=existing
|
results['gateway'] = existing
|
||||||
if not module.check_mode:
|
if not module.check_mode:
|
||||||
results['gateway'] = gw_mgr.ensure_cgw_absent(
|
results['gateway'] = gw_mgr.ensure_cgw_absent(
|
||||||
existing['CustomerGateways'][0]['CustomerGatewayId']
|
existing['CustomerGateway'][0]['CustomerGatewayId']
|
||||||
)
|
)
|
||||||
results['changed'] = True
|
results['changed'] = True
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue