Skip to content

Commit 7056310

Browse files
committed
Adds support for associating tags with Monitor
1 parent d232ddf commit 7056310

File tree

6 files changed

+75
-29
lines changed

6 files changed

+75
-29
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
## 2.24.1 (Unreleased)
22
FEATURES:
33
* **New Resource:** sumologic_metrics_search (GH-528)
4+
* resource/sumologic_monitor: Added support for associating tags with a Monitor.
5+
46
BUG FIXES:
57
* Enforce non-empty string validation of `default_normalized_domain` and `domain_mappings` in cse_entity_normalization resource. (GH-540)
68

sumologic/resource_sumologic_monitors_library_monitor.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ func getMonitorBaseSchema() map[string]*schema.Schema {
3333
ValidateFunc: validation.All(
3434
validation.StringDoesNotContainAny("/"),
3535
validation.StringMatch(regexp.MustCompile(`(?s)^[^\ ].*[^\ ]$`),
36-
"name must not contain leading or trailing spaces"),
36+
"name must not contain leading or trailing spaces"),
3737
),
3838
},
3939

@@ -406,6 +406,14 @@ func getMonitorSchema() map[string]*schema.Schema {
406406
Optional: true,
407407
Computed: true,
408408
},
409+
410+
"tags": {
411+
Type: schema.TypeMap,
412+
Optional: true,
413+
Elem: &schema.Schema{
414+
Type: schema.TypeString,
415+
},
416+
},
409417
}
410418

411419
for k, v := range additionalAttributes {
@@ -804,6 +812,7 @@ func resourceSumologicMonitorsLibraryMonitorRead(d *schema.ResourceData, meta in
804812
d.Set("alert_name", monitor.AlertName)
805813
d.Set("slo_id", monitor.SloID)
806814
d.Set("notification_group_fields", monitor.NotificationGroupFields)
815+
d.Set("tags", monitor.Tags)
807816

808817
// set notifications
809818
notifications := make([]interface{}, len(monitor.Notifications))
@@ -1570,6 +1579,7 @@ func resourceToMonitorsLibraryMonitor(d *schema.ResourceData) MonitorsLibraryMon
15701579
AlertName: d.Get("alert_name").(string),
15711580
SloID: d.Get("slo_id").(string),
15721581
NotificationGroupFields: notificationGroupFields,
1582+
Tags: d.Get("tags").(map[string]interface{}),
15731583
}
15741584
}
15751585

sumologic/resource_sumologic_monitors_library_monitor_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,8 @@ func TestAccSumologicMonitorsLibraryMonitor_create(t *testing.T) {
282282
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.0", testGroupFields[0]),
283283
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.1", testGroupFields[1]),
284284
resource.TestCheckResourceAttr("sumologic_monitor.test", "obj_permission.#", "2"),
285+
resource.TestCheckResourceAttr("sumologic_monitor.test", "tags.application", "sumologic"),
286+
resource.TestCheckResourceAttr("sumologic_monitor.test", "tags.team", "metrics"),
285287
testAccCheckMonitorsLibraryMonitorFGPBackend("sumologic_monitor.test", t, genExpectedPermStmtsMonitor),
286288
),
287289
},
@@ -512,6 +514,7 @@ func TestAccSumologicMonitorsLibraryMonitor_update(t *testing.T) {
512514
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.0", testGroupFields[0]),
513515
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.1", testGroupFields[1]),
514516
resource.TestCheckResourceAttr("sumologic_monitor.test", "obj_permission.#", "2"),
517+
resource.TestCheckResourceAttr("sumologic_monitor.test", "tags.team", "metrics"),
515518
testAccCheckMonitorsLibraryMonitorFGPBackend("sumologic_monitor.test", t, genExpectedPermStmtsMonitor),
516519
),
517520
},
@@ -535,6 +538,7 @@ func TestAccSumologicMonitorsLibraryMonitor_update(t *testing.T) {
535538
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.0", testUpdatedGroupFields[0]),
536539
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.1", testUpdatedGroupFields[1]),
537540
resource.TestCheckResourceAttr("sumologic_monitor.test", "obj_permission.#", "1"),
541+
resource.TestCheckResourceAttr("sumologic_monitor.test", "tags.team", "monitor"),
538542
// 1, instead of 2
539543
testAccCheckMonitorsLibraryMonitorFGPBackend("sumologic_monitor.test", t, genExpectedPermStmtsForMonitorUpdate),
540544
),
@@ -833,6 +837,10 @@ resource "sumologic_monitor" "test" {
833837
}
834838
playbook = "This is a test playbook"
835839
alert_name = "Alert from {{Name}}"
840+
tags = {
841+
team = "metrics"
842+
application = "sumologic"
843+
}
836844
notification_group_fields = ["groupingField1", "groupingField2"]
837845
obj_permission {
838846
subject_type = "role"
@@ -956,6 +964,10 @@ resource "sumologic_monitor" "test" {
956964
}
957965
playbook = "This is an updated test playbook"
958966
alert_name = "Updated Alert from {{Name}}"
967+
tags = {
968+
team = "monitor"
969+
application = "sumologic"
970+
}
959971
notification_group_fields = ["groupingField3", "groupingField4"]
960972
obj_permission {
961973
subject_type = "role"

sumologic/resource_sumologic_slo.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ func resourceSumologicSLO() *schema.Resource {
164164
Schema: map[string]*schema.Schema{
165165

166166
"name": {
167-
Type: schema.TypeString,
168-
Required: true,
167+
Type: schema.TypeString,
168+
Required: true,
169169
ValidateFunc: validation.StringDoesNotContainAny("/"),
170170
},
171171
"description": {

sumologic/sumologic_monitors_library_monitor.go

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -123,32 +123,33 @@ func (s *Client) MoveMonitorsLibraryMonitor(monitorID string, newParentID string
123123

124124
// ---------- TYPES ----------
125125
type MonitorsLibraryMonitor struct {
126-
ID string `json:"id,omitempty"`
127-
IsSystem bool `json:"isSystem"`
128-
Type string `json:"type"`
129-
Queries []MonitorQuery `json:"queries,omitempty"`
130-
ParentID string `json:"parentId"`
131-
Name string `json:"name"`
132-
IsMutable bool `json:"isMutable"`
133-
Version int `json:"version"`
134-
Notifications []MonitorNotification `json:"notifications,omitempty"`
135-
CreatedBy string `json:"createdBy"`
136-
MonitorType string `json:"monitorType"`
137-
EvaluationDelay string `json:"evaluationDelay,omitempty"`
138-
IsLocked bool `json:"isLocked"`
139-
Description string `json:"description"`
140-
CreatedAt string `json:"createdAt"`
141-
Triggers []TriggerCondition `json:"triggers,omitempty"`
142-
ModifiedAt string `json:"modifiedAt"`
143-
ContentType string `json:"contentType"`
144-
ModifiedBy string `json:"modifiedBy"`
145-
IsDisabled bool `json:"isDisabled"`
146-
Status []string `json:"status"`
147-
GroupNotifications bool `json:"groupNotifications"`
148-
Playbook string `json:"playbook,omitempty"`
149-
AlertName string `json:"alertName,omitempty"`
150-
SloID string `json:"sloId,omitempty"`
151-
NotificationGroupFields []string `json:"notificationGroupFields,omitempty"`
126+
ID string `json:"id,omitempty"`
127+
IsSystem bool `json:"isSystem"`
128+
Type string `json:"type"`
129+
Queries []MonitorQuery `json:"queries,omitempty"`
130+
ParentID string `json:"parentId"`
131+
Name string `json:"name"`
132+
IsMutable bool `json:"isMutable"`
133+
Version int `json:"version"`
134+
Notifications []MonitorNotification `json:"notifications,omitempty"`
135+
CreatedBy string `json:"createdBy"`
136+
MonitorType string `json:"monitorType"`
137+
EvaluationDelay string `json:"evaluationDelay,omitempty"`
138+
IsLocked bool `json:"isLocked"`
139+
Description string `json:"description"`
140+
CreatedAt string `json:"createdAt"`
141+
Triggers []TriggerCondition `json:"triggers,omitempty"`
142+
ModifiedAt string `json:"modifiedAt"`
143+
ContentType string `json:"contentType"`
144+
ModifiedBy string `json:"modifiedBy"`
145+
IsDisabled bool `json:"isDisabled"`
146+
Status []string `json:"status"`
147+
GroupNotifications bool `json:"groupNotifications"`
148+
Playbook string `json:"playbook,omitempty"`
149+
AlertName string `json:"alertName,omitempty"`
150+
SloID string `json:"sloId,omitempty"`
151+
NotificationGroupFields []string `json:"notificationGroupFields,omitempty"`
152+
Tags map[string]interface{} `json:"tags"`
152153
}
153154

154155
type MonitorQuery struct {

website/docs/r/monitor.html.markdown

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,10 @@ resource "sumologic_monitor" "tf_logs_monitor_1" {
4242
content_type = "Monitor"
4343
monitor_type = "Logs"
4444
evaluation_delay = "5m"
45+
tags = {
46+
"team" = "monitoring"
47+
"application" = "sumologic"
48+
}
4549
4650
queries {
4751
row_id = "A"
@@ -110,6 +114,10 @@ resource "sumologic_monitor" "tf_metrics_monitor_1" {
110114
content_type = "Monitor"
111115
monitor_type = "Metrics"
112116
evaluation_delay = "1m"
117+
tags = {
118+
"team" = "monitoring"
119+
"application" = "sumologic"
120+
}
113121
114122
queries {
115123
row_id = "A"
@@ -160,6 +168,10 @@ resource "sumologic_monitor" "tf_slo_monitor_1" {
160168
monitor_type = "Slo"
161169
slo_id = "0000000000000009"
162170
evaluation_delay = "5m"
171+
tags = {
172+
"team" = "monitoring"
173+
"application" = "sumologic"
174+
}
163175
164176
trigger_conditions {
165177
slo_sli_condition {
@@ -193,6 +205,10 @@ resource "sumologic_monitor" "tf_slo_monitor_2" {
193205
monitor_type = "Slo"
194206
slo_id = "0000000000000009"
195207
evaluation_delay = "5m"
208+
tags = {
209+
"team" = "monitoring"
210+
"application" = "sumologic"
211+
}
196212
197213
trigger_conditions {
198214
slo_burn_rate_condition {
@@ -253,6 +269,10 @@ resource "sumologic_monitor" "tf_logs_monitor_2" {
253269
is_disabled = false
254270
content_type = "Monitor"
255271
monitor_type = "Logs"
272+
tags = {
273+
"team" = "monitoring"
274+
"application" = "sumologic"
275+
}
256276
queries {
257277
row_id = "A"
258278
query = "_sourceCategory=event-action info"
@@ -333,6 +353,7 @@ The following arguments are supported:
333353
- `Logs`: A logs query monitor.
334354
- `Metrics`: A metrics query monitor.
335355
- `Slo`: A SLO based monitor.
356+
- `tags` - (Optional) A map defining tag keys and tag values for the Monitor.
336357
- `evaluation_delay` - (Optional) Evaluation delay as a string consists of the following elements:
337358
1. `<number>`: number of time units,
338359
2. `<time_unit>`: time unit; possible values are: `h` (hour), `m` (minute), `s` (second).

0 commit comments

Comments
 (0)