@ -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 [ ' CustomerGateway s ' ] :
if existing [ ' CustomerGateway ' ] :
results [ ' gateway ' ] = existing
results [ ' gateway ' ] = existing
if existing [ ' CustomerGateway s ' ] [ 0 ] [ ' Tags ' ] :
if existing [ ' CustomerGateway ' ] [ 0 ] [ ' Tags ' ] :
tag_array = existing [ ' CustomerGateway s ' ] [ 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 ' ] [ ' CustomerGateway s ' ] [ 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 [ ' CustomerGateway s ' ] :
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 [ ' CustomerGateway s ' ] [ 0 ] [ ' CustomerGatewayId ' ]
existing [ ' CustomerGateway ' ] [ 0 ] [ ' CustomerGatewayId ' ]
)
)
results [ ' changed ' ] = True
results [ ' changed ' ] = True