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
|
||||
default: present
|
||||
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:
|
||||
- aws
|
||||
- ec2
|
||||
|
@ -182,18 +185,24 @@ class Ec2CustomerGatewayManager:
|
|||
)
|
||||
return response
|
||||
|
||||
|
||||
def main():
|
||||
argument_spec = ec2_argument_spec()
|
||||
argument_spec.update(
|
||||
dict(
|
||||
bgp_asn = dict(required=False, type='int'),
|
||||
ip_address = dict(required=True),
|
||||
name = dict(required=True),
|
||||
state = dict(default='present', choices=['present', 'absent']),
|
||||
bgp_asn=dict(required=False, type='int'),
|
||||
ip_address=dict(required=True),
|
||||
name=dict(required=True),
|
||||
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:
|
||||
module.fail_json(msg='botocore is required.')
|
||||
|
@ -208,19 +217,22 @@ def main():
|
|||
name = module.params.get('name')
|
||||
|
||||
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)
|
||||
if module.params['state'] == 'present':
|
||||
if existing['CustomerGateways']:
|
||||
results['gateway']=existing
|
||||
if existing['CustomerGateways'][0]['Tags']:
|
||||
tag_array = existing['CustomerGateways'][0]['Tags']
|
||||
if existing['CustomerGateway']:
|
||||
results['gateway'] = existing
|
||||
if existing['CustomerGateway'][0]['Tags']:
|
||||
tag_array = existing['CustomerGateway'][0]['Tags']
|
||||
for key, value in enumerate(tag_array):
|
||||
if value['Key'] == 'Name':
|
||||
current_name = value['Value']
|
||||
if current_name != name:
|
||||
results['name'] = gw_mgr.tag_cgw_name(
|
||||
results['gateway']['CustomerGateways'][0]['CustomerGatewayId'],
|
||||
results['gateway']['CustomerGateway'][0]['CustomerGatewayId'],
|
||||
module.params['name'],
|
||||
)
|
||||
results['changed'] = True
|
||||
|
@ -237,11 +249,11 @@ def main():
|
|||
results['changed'] = True
|
||||
|
||||
elif module.params['state'] == 'absent':
|
||||
if existing['CustomerGateways']:
|
||||
results['gateway']=existing
|
||||
if existing['CustomerGateway']:
|
||||
results['gateway'] = existing
|
||||
if not module.check_mode:
|
||||
results['gateway'] = gw_mgr.ensure_cgw_absent(
|
||||
existing['CustomerGateways'][0]['CustomerGatewayId']
|
||||
existing['CustomerGateway'][0]['CustomerGatewayId']
|
||||
)
|
||||
results['changed'] = True
|
||||
|
||||
|
|
Loading…
Reference in a new issue