Skip to content

Commit

Permalink
cloudwatchevent_rule should return false when there is no change done…
Browse files Browse the repository at this point in the history
… to the rule (#1589)

cloudwatchevent_rule should return false when there is no change done to the rule

SUMMARY

Fixes #1080
ISSUE TYPE

Bugfix Pull Request

COMPONENT NAME

plugins/modules/cloudwatchevent_rule.py
ADDITIONAL INFORMATION

Reviewed-by: GomathiselviS
Reviewed-by: Mark Chappell
Reviewed-by: Jill R
Reviewed-by: Alina Buzachis
(cherry picked from commit 614b792)
  • Loading branch information
taehopark32 authored and patchback[bot] committed Jul 4, 2023
1 parent 67eea8c commit a9906e7
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 0 deletions.
3 changes: 3 additions & 0 deletions changelogs/fragments/1589-return_false_when_no_change..yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
---
bugfixes:
- Fixes changed status to report False when no change has been made. The module had incorrectly always reported a change. (https://github.com/ansible-collections/amazon.aws/pull/1589)
12 changes: 12 additions & 0 deletions plugins/modules/cloudwatchevent_rule.py
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,18 @@ def _rule_matches_aws(self):
def _targets_to_put(self):
"""Returns a list of targets that need to be updated or added remotely"""
remote_targets = self.rule.list_targets()

# keys with none values must be scrubbed off of self.targets
temp = []
for t in self.targets:
if t["input_transformer"] is not None and t["input_transformer"]["input_template"] is not None:
# The remote_targets contain quotes, so add
# quotes to temp
val = t["input_transformer"]["input_template"]
t["input_transformer"]["input_template"] = '"' + val + '"'
temp.append(scrub_none_parameters(t))
self.targets = temp

return [t for t in self.targets if t not in remote_targets]

def _remote_target_ids_to_remove(self):
Expand Down
21 changes: 21 additions & 0 deletions tests/integration/targets/cloudwatchevent_rule/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,27 @@
that:
- event_rule_input_transformer_output.changed

- name: Create cloudwatch event rule with input transformer (idempotent)
cloudwatchevent_rule:
name: "{{ input_transformer_event_name }}"
description: "Event rule with input transformer configuration"
state: present
event_pattern: '{"source":["aws.ec2"],"detail-type":["EC2 Instance State-change Notification"],"detail":{"state":["pending"]}}'
targets:
- id: "{{ sns_topic_output.sns_topic.name }}"
arn: "{{ sns_topic_output.sns_topic.topic_arn }}"
input_transformer:
input_paths_map:
instance: "$.detail.instance-id"
state: "$.detail.state"
input_template: "<instance> is in state <state>"
register: event_rule_input_transformer_output

- name: Assert that no changes were made to the rule
assert:
that:
- event_rule_input_transformer_output is not changed

- name: Create cloudwatch event rule with inputs
cloudwatchevent_rule:
name: "{{ input_event_name }}"
Expand Down

0 comments on commit a9906e7

Please sign in to comment.