Skip to content

Commit

Permalink
Cleanup - use is_boto3_error_(message|code) (ansible-collections#268)
Browse files Browse the repository at this point in the history
* Reorder imports
* Make use of is_boto3_error_message
* Mass-migration over to is_boto3_error_code
* Remove unused imports
* unused vars in exception
* Improve consistency around catching BotoCoreError and ClientError
* Remove unused imports
* Remove unused 'PolicyError' from iam_policy_info
* Avoid catching botocore.exceptions.ClientError when we only want some error codes
* Import camel_dict_to_snake_dict/snake_dict_to_camel_dict from ansible.module_utils.common.dict_transformations

This commit was initially merged in https://github.com/ansible-collections/community.aws
See: ansible-collections/community.aws@4cf52ef
  • Loading branch information
tremble authored and abikouo committed Oct 15, 2024
1 parent ebff9a0 commit e5bd49f
Showing 1 changed file with 13 additions and 20 deletions.
33 changes: 13 additions & 20 deletions plugins/modules/ec2_vpc_egress_igw.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,16 @@
sample: vpc-012345678
'''


from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule
from ansible_collections.amazon.aws.plugins.module_utils.ec2 import camel_dict_to_snake_dict

try:
import botocore
except ImportError:
pass # caught by AnsibleAWSModule

from ansible.module_utils.common.dict_transformations import camel_dict_to_snake_dict

from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule
from ansible_collections.amazon.aws.plugins.module_utils.core import is_boto3_error_code


def delete_eigw(module, conn, eigw_id):
"""
Expand All @@ -79,14 +80,9 @@ def delete_eigw(module, conn, eigw_id):

try:
response = conn.delete_egress_only_internet_gateway(DryRun=module.check_mode, EgressOnlyInternetGatewayId=eigw_id)
except botocore.exceptions.ClientError as e:
# When boto3 method is run with DryRun=True it returns an error on success
# We need to catch the error and return something valid
if e.response.get('Error', {}).get('Code') == "DryRunOperation":
changed = True
else:
module.fail_json_aws(e, msg="Could not delete Egress-Only Internet Gateway {0} from VPC {1}".format(eigw_id, module.vpc_id))
except botocore.exceptions.BotoCoreError as e:
except is_boto3_error_code('DryRunOperation'):
changed = True
except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: # pylint: disable=duplicate-except
module.fail_json_aws(e, msg="Could not delete Egress-Only Internet Gateway {0} from VPC {1}".format(eigw_id, module.vpc_id))

if not module.check_mode:
Expand All @@ -108,16 +104,13 @@ def create_eigw(module, conn, vpc_id):

try:
response = conn.create_egress_only_internet_gateway(DryRun=module.check_mode, VpcId=vpc_id)
except botocore.exceptions.ClientError as e:
except is_boto3_error_code('DryRunOperation'):
# When boto3 method is run with DryRun=True it returns an error on success
# We need to catch the error and return something valid
if e.response.get('Error', {}).get('Code') == "DryRunOperation":
changed = True
elif e.response.get('Error', {}).get('Code') == "InvalidVpcID.NotFound":
module.fail_json_aws(e, msg="invalid vpc ID '{0}' provided".format(vpc_id))
else:
module.fail_json_aws(e, msg="Could not create Egress-Only Internet Gateway for vpc ID {0}".format(vpc_id))
except botocore.exceptions.BotoCoreError as e:
changed = True
except is_boto3_error_code('InvalidVpcID.NotFound') as e: # pylint: disable=duplicate-except
module.fail_json_aws(e, msg="invalid vpc ID '{0}' provided".format(vpc_id))
except (botocore.exceptions.ClientError, botocore.exceptions.BotoCoreError) as e: # pylint: disable=duplicate-except
module.fail_json_aws(e, msg="Could not create Egress-Only Internet Gateway for vpc ID {0}".format(vpc_id))

if not module.check_mode:
Expand Down

0 comments on commit e5bd49f

Please sign in to comment.