summaryrefslogtreecommitdiffstats
path: root/ansible_collections/community/aws/plugins/modules/sns.py
diff options
context:
space:
mode:
Diffstat (limited to 'ansible_collections/community/aws/plugins/modules/sns.py')
-rw-r--r--ansible_collections/community/aws/plugins/modules/sns.py89
1 files changed, 42 insertions, 47 deletions
diff --git a/ansible_collections/community/aws/plugins/modules/sns.py b/ansible_collections/community/aws/plugins/modules/sns.py
index f72bbfa49..62c440c1f 100644
--- a/ansible_collections/community/aws/plugins/modules/sns.py
+++ b/ansible_collections/community/aws/plugins/modules/sns.py
@@ -4,11 +4,7 @@
# Copyright: (c) 2014, Michael J. Schultz <mjschultz@gmail.com>
# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt)
-from __future__ import absolute_import, division, print_function
-__metaclass__ = type
-
-
-DOCUMENTATION = '''
+DOCUMENTATION = r"""
module: sns
short_description: Send Amazon Simple Notification Service messages
version_added: 1.0.0
@@ -96,12 +92,12 @@ options:
version_added: 5.4.0
extends_documentation_fragment:
-- amazon.aws.ec2
-- amazon.aws.aws
-- amazon.aws.boto3
-'''
+ - amazon.aws.region.modules
+ - amazon.aws.common.modules
+ - amazon.aws.boto3
+"""
-EXAMPLES = """
+EXAMPLES = r"""
- name: Send default notification message via SNS
community.aws.sns:
msg: '{{ inventory_hostname }} has completed the play.'
@@ -139,7 +135,7 @@ EXAMPLES = """
delegate_to: localhost
"""
-RETURN = """
+RETURN = r"""
msg:
description: Human-readable diagnostic information
returned: always
@@ -159,32 +155,33 @@ sequence_number:
import json
try:
- from botocore.exceptions import BotoCoreError, ClientError
+ from botocore.exceptions import BotoCoreError
+ from botocore.exceptions import ClientError
except ImportError:
- pass # Handled by AnsibleAWSModule
+ pass # Handled by AnsibleAWSModule
-from ansible_collections.amazon.aws.plugins.module_utils.core import AnsibleAWSModule
+from ansible_collections.community.aws.plugins.module_utils.modules import AnsibleCommunityAWSModule as AnsibleAWSModule
from ansible_collections.community.aws.plugins.module_utils.sns import topic_arn_lookup
def main():
protocols = [
- 'http',
- 'https',
- 'email',
- 'email_json',
- 'sms',
- 'sqs',
- 'application',
- 'lambda',
+ "http",
+ "https",
+ "email",
+ "email_json",
+ "sms",
+ "sqs",
+ "application",
+ "lambda",
]
argument_spec = dict(
- msg=dict(required=True, aliases=['default']),
+ msg=dict(required=True, aliases=["default"]),
subject=dict(),
topic=dict(required=True),
- message_attributes=dict(type='dict'),
- message_structure=dict(choices=['json', 'string'], default='json'),
+ message_attributes=dict(type="dict"),
+ message_structure=dict(choices=["json", "string"], default="json"),
message_group_id=dict(),
message_deduplication_id=dict(),
)
@@ -195,50 +192,48 @@ def main():
module = AnsibleAWSModule(argument_spec=argument_spec)
sns_kwargs = dict(
- Message=module.params['msg'],
- Subject=module.params['subject'],
- MessageStructure=module.params['message_structure'],
+ Message=module.params["msg"],
+ Subject=module.params["subject"],
+ MessageStructure=module.params["message_structure"],
)
- if module.params['message_attributes']:
- if module.params['message_structure'] != 'string':
+ if module.params["message_attributes"]:
+ if module.params["message_structure"] != "string":
module.fail_json(msg='message_attributes is only supported when the message_structure is "string".')
- sns_kwargs['MessageAttributes'] = module.params['message_attributes']
+ sns_kwargs["MessageAttributes"] = module.params["message_attributes"]
if module.params["message_group_id"]:
sns_kwargs["MessageGroupId"] = module.params["message_group_id"]
if module.params["message_deduplication_id"]:
sns_kwargs["MessageDeduplicationId"] = module.params["message_deduplication_id"]
- dict_msg = {
- 'default': sns_kwargs['Message']
- }
+ dict_msg = {"default": sns_kwargs["Message"]}
for p in protocols:
if module.params[p]:
- if sns_kwargs['MessageStructure'] != 'json':
+ if sns_kwargs["MessageStructure"] != "json":
module.fail_json(msg='Protocol-specific messages are only supported when message_structure is "json".')
- dict_msg[p.replace('_', '-')] = module.params[p]
+ dict_msg[p.replace("_", "-")] = module.params[p]
- client = module.client('sns')
+ client = module.client("sns")
- topic = module.params['topic']
- if ':' in topic:
+ topic = module.params["topic"]
+ if ":" in topic:
# Short names can't contain ':' so we'll assume this is the full ARN
- sns_kwargs['TopicArn'] = topic
+ sns_kwargs["TopicArn"] = topic
else:
- sns_kwargs['TopicArn'] = topic_arn_lookup(client, module, topic)
+ sns_kwargs["TopicArn"] = topic_arn_lookup(client, module, topic)
- if not sns_kwargs['TopicArn']:
- module.fail_json(msg='Could not find topic: {0}'.format(topic))
+ if not sns_kwargs["TopicArn"]:
+ module.fail_json(msg=f"Could not find topic: {topic}")
- if sns_kwargs['MessageStructure'] == 'json':
- sns_kwargs['Message'] = json.dumps(dict_msg)
+ if sns_kwargs["MessageStructure"] == "json":
+ sns_kwargs["Message"] = json.dumps(dict_msg)
try:
result = client.publish(**sns_kwargs)
except (BotoCoreError, ClientError) as e:
- module.fail_json_aws(e, msg='Failed to publish message')
+ module.fail_json_aws(e, msg="Failed to publish message")
sns_result = dict(msg="OK", message_id=result["MessageId"])
@@ -248,5 +243,5 @@ def main():
module.exit_json(**sns_result)
-if __name__ == '__main__':
+if __name__ == "__main__":
main()