Skip to content

Commit d4dad5e

Browse files
authored
Datadog ReTrigger Event (#125)
* Adds the retriggered event * Add the test for the recreate event type
1 parent 61c08f1 commit d4dad5e

File tree

5 files changed

+45
-3
lines changed

5 files changed

+45
-3
lines changed

app/models/pager_tree/integrations/datadog/v3.rb

+10-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
module PagerTree::Integrations
22
class Datadog::V3 < Integration
3-
OPTIONS = []
3+
OPTIONS = [
4+
{key: :support_retriggered_event, type: :boolean, default: false}
5+
]
46
store_accessor :options, *OPTIONS.map { |x| x[:key] }.map(&:to_s), prefix: "option"
57

68
after_initialize do
9+
self.option_support_retriggered_event ||= false
710
end
811

912
def adapter_supports_incoming?
@@ -24,8 +27,12 @@ def adapter_thirdparty_id
2427

2528
def adapter_action
2629
case _transition
27-
when "Triggered" then :create
28-
when "Recovered" then :resolve
30+
when "Triggered"
31+
:create
32+
when "Recovered"
33+
:resolve
34+
when "Re-Triggered"
35+
self.option_support_retriggered_event == true ? :recreate : :other
2936
else
3037
:other
3138
end
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
<div class="grid grid-cols-1 gap-4">
2+
<div class="form-group group">
3+
<%= form.check_box :option_support_retriggered_event, class: "form-checkbox" %>
4+
<%= form.label :option_support_retriggered_event, class: "inline-block" %>
5+
<p class="form-hint md:inline-block"><%== t(".option_support_retriggered_event_hint_html") %></p>
6+
</div>
7+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<div class="sm:col-span-1">
2+
<dt class="text-sm font-medium text-gray-500">
3+
<%= t("activerecord.attributes.pager_tree/integrations/datadog/v3.option_support_retriggered_event") %>
4+
</dt>
5+
<dd class="mt-1 text-sm text-gray-900">
6+
<div class="flex items-center gap-2">
7+
<p class="text-sm truncate">
8+
<%= render partial: "shared/components/badge_enabled", locals: { enabled: integration.option_support_retriggered_event } %>
9+
</p>
10+
</div>
11+
</dd>
12+
</div>

config/locales/en.yml

+6
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ en:
3232
v3:
3333
form_options:
3434
option_webhook_secret_hint_html: "Cloudflare Webhook Secret"
35+
datadog:
36+
v3:
37+
form_options:
38+
option_support_retriggered_event_hint_html: "Create a new alert when the 'Re-Triggered' event is sent by Datadog"
3539
email:
3640
v3:
3741
form_options:
@@ -157,6 +161,8 @@ en:
157161
option_time_zone: "Display Time Zone"
158162
"pager_tree/integrations/cloudflare/v3":
159163
option_webhook_secret: "Webhook Secret"
164+
"pager_tree/integrations/datadog/v3":
165+
option_support_retriggered_event: "Retriggered Event"
160166
"pager_tree/integrations/email/v3":
161167
option_allow_spam: "Allow Spam"
162168
option_dedup_threads: "Dedup Threads"

test/models/pager_tree/integrations/datadog/v3_test.rb

+10
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,9 @@ class Datadog::V3Test < ActiveSupport::TestCase
3232
@resolve_request = @create_request.deep_dup
3333
@resolve_request[:ALERT_TRANSITION] = "Recovered"
3434

35+
@retriggered_request = @create_request.deep_dup
36+
@retriggered_request[:ALERT_TRANSITION] = "Re-Triggered"
37+
3538
@other_request = @create_request.deep_dup
3639
@other_request[:ALERT_TRANSITION] = "baaad"
3740
end
@@ -54,6 +57,13 @@ class Datadog::V3Test < ActiveSupport::TestCase
5457

5558
@integration.adapter_incoming_request_params = @other_request
5659
assert_equal :other, @integration.adapter_action
60+
61+
@integration.adapter_incoming_request_params = @retriggered_request
62+
assert_equal :other, @integration.adapter_action
63+
64+
@integration.option_support_retriggered_event = true
65+
@integration.adapter_incoming_request_params = @retriggered_request
66+
assert_equal :recreate, @integration.adapter_action
5767
end
5868

5969
test "adapter_thirdparty_id" do

0 commit comments

Comments
 (0)