Skip to content

Commit 8bd8330

Browse files
committed
Merge branch 'master' into bugfix/SUMO-193330-monitor-folder-update
2 parents a0b9b35 + f6a49e1 commit 8bd8330

File tree

9 files changed

+164
-64
lines changed

9 files changed

+164
-64
lines changed

.github/workflows/test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ jobs:
3737
- name: Set up Go
3838
uses: actions/[email protected]
3939
with:
40-
go-version: '1.16'
40+
go-version: '1.17'
4141
id: go
4242

4343
- name: Check out code into the Go module directory
@@ -66,7 +66,7 @@ jobs:
6666
- name: Set up Go
6767
uses: actions/[email protected]
6868
with:
69-
go-version: '1.16'
69+
go-version: '1.17'
7070
id: go
7171

7272
- name: Check out code into the Go module directory

.go-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.16.6
1+
1.17.0

CHANGELOG.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,16 @@
1-
## 2.17.0 (Unreleased)
1+
## 2.17.1 (Unreleased)
2+
3+
4+
## 2.17.0 (July 26, 2022)
25
FEATURES:
36
* **New Resource:** sumologic_cse_entity_entity_group_configuration (GH-376)
47
* **New Resource:** sumologic_cse_inventory_entity_group_configuration (GH-376)
5-
8+
* Add new optional `notification_group_fields` field to resource/sumologic_monitor (GH-403)
69
* Add new optional `obj_permission` set to resource/sumologic_monitor for Fine Grain Permission (FGP) support (GH-397)
10+
* Add use_versioned_api parameter for s3 source (GH-401)
11+
12+
BUG FIXES:
13+
* Default to NIL for optional timezome field in SumoLogic source (GH-392)
714

815
BUG FIXES:
916
* Allow Monitor move between Monitor folders (GH-405)

go.mod

Lines changed: 71 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,90 @@
11
module github.com/SumoLogic/terraform-provider-sumologic
22

3-
go 1.16
3+
go 1.17
4+
5+
require (
6+
github.com/go-errors/errors v1.4.0
7+
github.com/hashicorp/go-retryablehttp v0.7.0
8+
github.com/hashicorp/terraform-plugin-sdk v1.17.2
9+
)
410

511
require (
612
cloud.google.com/go v0.88.0 // indirect
13+
cloud.google.com/go/storage v1.10.0 // indirect
14+
github.com/Masterminds/goutils v1.1.0 // indirect
15+
github.com/Masterminds/semver v1.5.0 // indirect
16+
github.com/Masterminds/sprig v2.22.0+incompatible // indirect
17+
github.com/agext/levenshtein v1.2.2 // indirect
18+
github.com/apparentlymart/go-cidr v1.1.0 // indirect
19+
github.com/apparentlymart/go-textseg/v12 v12.0.0 // indirect
20+
github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
21+
github.com/armon/go-radix v1.0.0 // indirect
722
github.com/aws/aws-sdk-go v1.40.10 // indirect
23+
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
24+
github.com/bgentry/speakeasy v0.1.0 // indirect
25+
github.com/davecgh/go-spew v1.1.1 // indirect
826
github.com/fatih/color v1.12.0 // indirect
9-
github.com/go-errors/errors v1.4.0
1027
github.com/go-test/deep v1.0.7 // indirect
28+
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e // indirect
29+
github.com/golang/protobuf v1.5.2 // indirect
30+
github.com/google/go-cmp v0.5.6 // indirect
31+
github.com/google/uuid v1.1.2 // indirect
32+
github.com/googleapis/gax-go/v2 v2.0.5 // indirect
33+
github.com/hashicorp/errwrap v1.0.0 // indirect
34+
github.com/hashicorp/go-checkpoint v0.5.0 // indirect
35+
github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
36+
github.com/hashicorp/go-getter v1.5.3 // indirect
1137
github.com/hashicorp/go-hclog v0.16.2 // indirect
38+
github.com/hashicorp/go-multierror v1.0.0 // indirect
1239
github.com/hashicorp/go-plugin v1.4.0 // indirect
13-
github.com/hashicorp/go-retryablehttp v0.7.0
40+
github.com/hashicorp/go-safetemp v1.0.0 // indirect
1441
github.com/hashicorp/go-uuid v1.0.2 // indirect
42+
github.com/hashicorp/go-version v1.3.0 // indirect
1543
github.com/hashicorp/hcl v1.0.0 // indirect
44+
github.com/hashicorp/hcl/v2 v2.8.2 // indirect
45+
github.com/hashicorp/logutils v1.0.0 // indirect
1646
github.com/hashicorp/terraform-config-inspect v0.0.0-20210625153042-09f34846faab // indirect
17-
github.com/hashicorp/terraform-plugin-sdk v1.17.2
47+
github.com/hashicorp/terraform-exec v0.13.3 // indirect
48+
github.com/hashicorp/terraform-json v0.10.0 // indirect
49+
github.com/hashicorp/terraform-plugin-test/v2 v2.2.1 // indirect
50+
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
1851
github.com/hashicorp/yamux v0.0.0-20210707203944-259a57b3608c // indirect
52+
github.com/huandu/xstrings v1.3.2 // indirect
53+
github.com/imdario/mergo v0.3.12 // indirect
54+
github.com/jmespath/go-jmespath v0.4.0 // indirect
55+
github.com/jstemmer/go-junit-report v0.9.1 // indirect
56+
github.com/klauspost/compress v1.11.2 // indirect
57+
github.com/mattn/go-colorable v0.1.8 // indirect
1958
github.com/mattn/go-isatty v0.0.13 // indirect
59+
github.com/mitchellh/cli v1.1.2 // indirect
60+
github.com/mitchellh/colorstring v0.0.0-20190213212951-d06e56a500db // indirect
61+
github.com/mitchellh/copystructure v1.0.0 // indirect
62+
github.com/mitchellh/go-homedir v1.1.0 // indirect
63+
github.com/mitchellh/go-testing-interface v1.0.4 // indirect
64+
github.com/mitchellh/go-wordwrap v1.0.0 // indirect
65+
github.com/mitchellh/mapstructure v1.1.2 // indirect
66+
github.com/mitchellh/reflectwalk v1.0.1 // indirect
2067
github.com/oklog/run v1.1.0 // indirect
2168
github.com/posener/complete v1.2.3 // indirect
69+
github.com/spf13/afero v1.2.2 // indirect
2270
github.com/ulikunitz/xz v0.5.10 // indirect
23-
github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
71+
github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
72+
github.com/vmihailenco/tagparser v0.1.1 // indirect
73+
github.com/zclconf/go-cty v1.8.2 // indirect
74+
github.com/zclconf/go-cty-yaml v1.0.2 // indirect
75+
go.opencensus.io v0.23.0 // indirect
76+
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 // indirect
77+
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
78+
golang.org/x/mod v0.4.2 // indirect
79+
golang.org/x/net v0.0.0-20210614182718-04defd469f4e // indirect
80+
golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914 // indirect
81+
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22 // indirect
82+
golang.org/x/text v0.3.6 // indirect
83+
golang.org/x/tools v0.1.5 // indirect
84+
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 // indirect
85+
google.golang.org/api v0.50.0 // indirect
86+
google.golang.org/appengine v1.6.7 // indirect
87+
google.golang.org/genproto v0.0.0-20210721163202-f1cecdd8b78a // indirect
88+
google.golang.org/grpc v1.39.0 // indirect
89+
google.golang.org/protobuf v1.27.1 // indirect
2490
)

go.sum

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -374,9 +374,8 @@ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/
374374
github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
375375
github.com/ulikunitz/xz v0.5.10 h1:t92gobL9l3HE202wg3rlk19F6X+JOxl9BBrCCMYEYd8=
376376
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
377+
github.com/vmihailenco/msgpack v3.3.3+incompatible h1:wapg9xDUZDzGCNFlwc5SqI1rvcciqcxEHac4CYj89xI=
377378
github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
378-
github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
379-
github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
380379
github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
381380
github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4=
382381
github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY=

sumologic/resource_sumologic_monitors_library_monitor.go

Lines changed: 39 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -353,7 +353,13 @@ func resourceSumologicMonitorsLibraryMonitor() *schema.Resource {
353353
Optional: true,
354354
ValidateFunc: validation.StringLenBetween(1, 512),
355355
},
356-
356+
"notification_group_fields": {
357+
Type: schema.TypeList,
358+
Optional: true,
359+
Elem: &schema.Schema{
360+
Type: schema.TypeString,
361+
},
362+
},
357363
"obj_permission": GetCmfFgpObjPermSetSchema(),
358364
},
359365
}
@@ -632,6 +638,7 @@ func resourceSumologicMonitorsLibraryMonitorRead(d *schema.ResourceData, meta in
632638
d.Set("playbook", monitor.Playbook)
633639
d.Set("alert_name", monitor.AlertName)
634640
d.Set("slo_id", monitor.SloID)
641+
d.Set("notification_group_fields", monitor.NotificationGroupFields)
635642
// set notifications
636643
notifications := make([]interface{}, len(monitor.Notifications))
637644
for i, n := range monitor.Notifications {
@@ -1333,33 +1340,39 @@ func resourceToMonitorsLibraryMonitor(d *schema.ResourceData) MonitorsLibraryMon
13331340
for i := range rawStatus {
13341341
status[i] = rawStatus[i].(string)
13351342
}
1343+
rawGroupFields := d.Get("notification_group_fields").([]interface{})
1344+
notificationGroupFields := make([]string, len(rawGroupFields))
1345+
for i := range rawGroupFields {
1346+
notificationGroupFields[i] = rawGroupFields[i].(string)
1347+
}
13361348

13371349
return MonitorsLibraryMonitor{
1338-
CreatedBy: d.Get("created_by").(string),
1339-
Name: d.Get("name").(string),
1340-
ID: d.Id(),
1341-
CreatedAt: d.Get("created_at").(string),
1342-
MonitorType: d.Get("monitor_type").(string),
1343-
Description: d.Get("description").(string),
1344-
EvaluationDelay: d.Get("evaluation_delay").(string),
1345-
Queries: queries,
1346-
ModifiedBy: d.Get("modified_by").(string),
1347-
IsMutable: d.Get("is_mutable").(bool),
1348-
Version: d.Get("version").(int),
1349-
Notifications: notifications,
1350-
Type: d.Get("type").(string),
1351-
ParentID: d.Get("parent_id").(string),
1352-
ModifiedAt: d.Get("modified_at").(string),
1353-
Triggers: triggers,
1354-
ContentType: d.Get("content_type").(string),
1355-
IsLocked: d.Get("is_locked").(bool),
1356-
IsSystem: d.Get("is_system").(bool),
1357-
IsDisabled: d.Get("is_disabled").(bool),
1358-
Status: status,
1359-
GroupNotifications: d.Get("group_notifications").(bool),
1360-
Playbook: d.Get("playbook").(string),
1361-
AlertName: d.Get("alert_name").(string),
1362-
SloID: d.Get("slo_id").(string),
1350+
CreatedBy: d.Get("created_by").(string),
1351+
Name: d.Get("name").(string),
1352+
ID: d.Id(),
1353+
CreatedAt: d.Get("created_at").(string),
1354+
MonitorType: d.Get("monitor_type").(string),
1355+
Description: d.Get("description").(string),
1356+
EvaluationDelay: d.Get("evaluation_delay").(string),
1357+
Queries: queries,
1358+
ModifiedBy: d.Get("modified_by").(string),
1359+
IsMutable: d.Get("is_mutable").(bool),
1360+
Version: d.Get("version").(int),
1361+
Notifications: notifications,
1362+
Type: d.Get("type").(string),
1363+
ParentID: d.Get("parent_id").(string),
1364+
ModifiedAt: d.Get("modified_at").(string),
1365+
Triggers: triggers,
1366+
ContentType: d.Get("content_type").(string),
1367+
IsLocked: d.Get("is_locked").(bool),
1368+
IsSystem: d.Get("is_system").(bool),
1369+
IsDisabled: d.Get("is_disabled").(bool),
1370+
Status: status,
1371+
GroupNotifications: d.Get("group_notifications").(bool),
1372+
Playbook: d.Get("playbook").(string),
1373+
AlertName: d.Get("alert_name").(string),
1374+
SloID: d.Get("slo_id").(string),
1375+
NotificationGroupFields: notificationGroupFields,
13631376
}
13641377
}
13651378

sumologic/resource_sumologic_monitors_library_monitor_test.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ func TestAccSumologicMonitorsLibraryMonitor_create(t *testing.T) {
189189
},
190190
}
191191
testAlertName := "Alert from {{Name}}"
192+
testGroupFields := [2]string{"groupingField1", "groupingField2"}
192193

193194
resource.Test(t, resource.TestCase{
194195
PreCheck: func() { testAccPreCheck(t) },
@@ -212,6 +213,8 @@ func TestAccSumologicMonitorsLibraryMonitor_create(t *testing.T) {
212213
resource.TestCheckResourceAttr("sumologic_monitor.test", "triggers.0.time_range", testTriggers[0].TimeRange),
213214
resource.TestCheckResourceAttr("sumologic_monitor.test", "notifications.0.notification.0.connection_type", testNotifications[0].Notification.(EmailNotification).ConnectionType),
214215
resource.TestCheckResourceAttr("sumologic_monitor.test", "alert_name", testAlertName),
216+
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.0", testGroupFields[0]),
217+
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.1", testGroupFields[1]),
215218
resource.TestCheckResourceAttr("sumologic_monitor.test", "obj_permission.#", "2"),
216219
testAccCheckMonitorsLibraryMonitorFGPBackend("sumologic_monitor.test", t, genExpectedPermStmtsMonitor),
217220
),
@@ -308,6 +311,7 @@ func TestAccSumologicMonitorsLibraryMonitor_update(t *testing.T) {
308311
},
309312
}
310313
testAlertName := "Alert from {{Name}}"
314+
testGroupFields := [2]string{"groupingField1", "groupingField2"}
311315

312316
// updated fields
313317
testUpdatedName := "terraform_test_monitor_" + testNameSuffix
@@ -368,6 +372,7 @@ func TestAccSumologicMonitorsLibraryMonitor_update(t *testing.T) {
368372
},
369373
}
370374
testUpdatedAlertName := "Updated Alert from {{Name}}"
375+
testUpdatedGroupFields := [2]string{"groupingField3", "groupingField4"}
371376

372377
resource.Test(t, resource.TestCase{
373378
PreCheck: func() { testAccPreCheck(t) },
@@ -392,6 +397,8 @@ func TestAccSumologicMonitorsLibraryMonitor_update(t *testing.T) {
392397
resource.TestCheckResourceAttr("sumologic_monitor.test", "notifications.0.notification.0.connection_type", testNotifications[0].Notification.(EmailNotification).ConnectionType),
393398
resource.TestCheckResourceAttr("sumologic_monitor.test", "playbook", testPlaybook),
394399
resource.TestCheckResourceAttr("sumologic_monitor.test", "alert_name", testAlertName),
400+
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.0", testGroupFields[0]),
401+
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.1", testGroupFields[1]),
395402
resource.TestCheckResourceAttr("sumologic_monitor.test", "obj_permission.#", "2"),
396403
testAccCheckMonitorsLibraryMonitorFGPBackend("sumologic_monitor.test", t, genExpectedPermStmtsMonitor),
397404
),
@@ -412,6 +419,8 @@ func TestAccSumologicMonitorsLibraryMonitor_update(t *testing.T) {
412419
resource.TestCheckResourceAttr("sumologic_monitor.test", "notifications.0.notification.0.connection_type", testUpdatedNotifications[0].Notification.(EmailNotification).ConnectionType),
413420
resource.TestCheckResourceAttr("sumologic_monitor.test", "playbook", testUpdatedPlaybook),
414421
resource.TestCheckResourceAttr("sumologic_monitor.test", "alert_name", testUpdatedAlertName),
422+
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.0", testUpdatedGroupFields[0]),
423+
resource.TestCheckResourceAttr("sumologic_monitor.test", "notification_group_fields.1", testUpdatedGroupFields[1]),
415424
resource.TestCheckResourceAttr("sumologic_monitor.test", "obj_permission.#", "1"),
416425
// 1, instead of 2
417426
testAccCheckMonitorsLibraryMonitorFGPBackend("sumologic_monitor.test", t, genExpectedPermStmtsForMonitorUpdate),
@@ -674,6 +683,7 @@ resource "sumologic_monitor" "test" {
674683
}
675684
playbook = "This is a test playbook"
676685
alert_name = "Alert from {{Name}}"
686+
notification_group_fields = ["groupingField1", "groupingField2"]
677687
obj_permission {
678688
subject_type = "role"
679689
subject_id = sumologic_role.tf_test_role_01.id
@@ -758,6 +768,7 @@ resource "sumologic_monitor" "test" {
758768
}
759769
playbook = "This is an updated test playbook"
760770
alert_name = "Updated Alert from {{Name}}"
771+
notification_group_fields = ["groupingField3", "groupingField4"]
761772
obj_permission {
762773
subject_type = "role"
763774
subject_id = sumologic_role.tf_test_role_01.id

sumologic/sumologic_monitors_library_monitor.go

Lines changed: 26 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -125,31 +125,32 @@ func (s *Client) MoveMonitorsLibraryMonitor(monitorID string, newParentID string
125125

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

155156
type MonitorQuery struct {

0 commit comments

Comments
 (0)