Added redrive policy options (#2245)

This commit is contained in:
Nadir 2016-09-04 08:45:35 +01:00 committed by René Moser
parent 06bd2a5ce2
commit e6678a7496

View file

@ -25,6 +25,7 @@ version_added: "2.0"
author: author:
- Alan Loi (@loia) - Alan Loi (@loia)
- Fernando Jose Pando (@nand0p) - Fernando Jose Pando (@nand0p)
- Nadir Lloret (@nadirollo)
requirements: requirements:
- "boto >= 2.33.0" - "boto >= 2.33.0"
options: options:
@ -69,13 +70,19 @@ options:
required: false required: false
default: null default: null
version_added: "2.1" version_added: "2.1"
redrive_policy:
description:
- json dict with the redrive_policy (see example)
required: false
default: null
version_added: "2.2"
extends_documentation_fragment: extends_documentation_fragment:
- aws - aws
- ec2 - ec2
""" """
EXAMPLES = ''' EXAMPLES = '''
# Create SQS queue # Create SQS queue with redrive policy
- sqs_queue: - sqs_queue:
name: my-queue name: my-queue
region: ap-southeast-2 region: ap-southeast-2
@ -85,6 +92,9 @@ EXAMPLES = '''
delivery_delay: 30 delivery_delay: 30
receive_message_wait_time: 20 receive_message_wait_time: 20
policy: "{{ json_dict }}" policy: "{{ json_dict }}"
redrive_policy:
maxReceiveCount: 5
deadLetterTargetArn: arn:aws:sqs:eu-west-1:123456789012:my-dead-queue
# Delete SQS queue # Delete SQS queue
- sqs_queue: - sqs_queue:
@ -112,6 +122,7 @@ def create_or_update_sqs_queue(connection, module):
delivery_delay=module.params.get('delivery_delay'), delivery_delay=module.params.get('delivery_delay'),
receive_message_wait_time=module.params.get('receive_message_wait_time'), receive_message_wait_time=module.params.get('receive_message_wait_time'),
policy=module.params.get('policy'), policy=module.params.get('policy'),
redrive_policy=module.params.get('redrive_policy')
) )
result = dict( result = dict(
@ -147,7 +158,8 @@ def update_sqs_queue(queue,
maximum_message_size=None, maximum_message_size=None,
delivery_delay=None, delivery_delay=None,
receive_message_wait_time=None, receive_message_wait_time=None,
policy=None): policy=None,
redrive_policy=None):
changed = False changed = False
changed = set_queue_attribute(queue, 'VisibilityTimeout', default_visibility_timeout, changed = set_queue_attribute(queue, 'VisibilityTimeout', default_visibility_timeout,
@ -162,6 +174,8 @@ def update_sqs_queue(queue,
check_mode=check_mode) or changed check_mode=check_mode) or changed
changed = set_queue_attribute(queue, 'Policy', policy, changed = set_queue_attribute(queue, 'Policy', policy,
check_mode=check_mode) or changed check_mode=check_mode) or changed
changed = set_queue_attribute(queue, 'RedrivePolicy', redrive_policy,
check_mode=check_mode) or changed
return changed return changed
@ -175,7 +189,7 @@ def set_queue_attribute(queue, attribute, value, check_mode=False):
existing_value = '' existing_value = ''
# convert dict attributes to JSON strings (sort keys for comparing) # convert dict attributes to JSON strings (sort keys for comparing)
if attribute is 'Policy': if attribute in ['Policy', 'RedrivePolicy']:
value = json.dumps(value, sort_keys=True) value = json.dumps(value, sort_keys=True)
if existing_value: if existing_value:
existing_value = json.dumps(json.loads(existing_value), sort_keys=True) existing_value = json.dumps(json.loads(existing_value), sort_keys=True)
@ -224,6 +238,7 @@ def main():
delivery_delay=dict(type='int'), delivery_delay=dict(type='int'),
receive_message_wait_time=dict(type='int'), receive_message_wait_time=dict(type='int'),
policy=dict(type='dict', required=False), policy=dict(type='dict', required=False),
redrive_policy=dict(type='dict', required=False),
)) ))
module = AnsibleModule( module = AnsibleModule(