Skip to content

Commit f150b63

Browse files
authored
Merge pull request #798 from SumoLogic/absingh-266317
SUMO-266317: Fix `selectionType` handling for Role V2 to avoid `MatchError`
2 parents 417e145 + 1259441 commit f150b63

File tree

5 files changed

+81
-18
lines changed

5 files changed

+81
-18
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
## X.Y.Z (Unreleased)
22
* Add new change notes here
3+
BUG FIXES:
4+
* Corrected selection_type configuration in RolesV2 resources.
35

46
FEATURES:
57
* The **sumologic_role_v2** resource has been promoted from Beta to General Availability (GA).

sumologic/data_source_sumologic_monitor_folder.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package sumologic
22

33
import (
4-
"fmt"
4+
"fmt"
55
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
66
)
77

@@ -41,11 +41,11 @@ func dataSourceSumologicMonitorFolderRead(d *schema.ResourceData, meta interface
4141
return err
4242
}
4343

44-
if monitorsLibraryFolder == nil || monitorsLibraryFolder.ID == "" {
45-
return fmt.Errorf("folder with path '%s' does not exist", d.Get("path").(string))
46-
}
44+
if monitorsLibraryFolder == nil || monitorsLibraryFolder.ID == "" {
45+
return fmt.Errorf("folder with path '%s' does not exist", d.Get("path").(string))
46+
}
4747

48-
d.SetId(monitorsLibraryFolder.ID)
48+
d.SetId(monitorsLibraryFolder.ID)
4949
d.Set("name", monitorsLibraryFolder.Name)
5050
d.Set("description", monitorsLibraryFolder.Description)
5151

sumologic/data_source_sumologic_monitor_folder_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@ import (
88
)
99

1010
func TestAccDataSourceMonitorFolder_basic(t *testing.T) {
11-
resource.Test(t, resource.TestCase{
12-
PreCheck: func() { testAccPreCheck(t) },
13-
Providers: testAccProviders,
14-
Steps: []resource.TestStep{
15-
{
16-
Config: `
11+
resource.Test(t, resource.TestCase{
12+
PreCheck: func() { testAccPreCheck(t) },
13+
Providers: testAccProviders,
14+
Steps: []resource.TestStep{
15+
{
16+
Config: `
1717
resource "sumologic_monitor_folder" "test_folder" {
1818
name = "Terraform Test"
1919
description = "Terraform Test Folder"
@@ -23,12 +23,12 @@ func TestAccDataSourceMonitorFolder_basic(t *testing.T) {
2323
depends_on = [sumologic_monitor_folder.test_folder]
2424
}
2525
`,
26-
Check: resource.ComposeTestCheckFunc(
27-
testAccDataSourceMonitorFolderCheck("data.sumologic_monitor_folder.test"),
28-
),
29-
},
30-
},
31-
})
26+
Check: resource.ComposeTestCheckFunc(
27+
testAccDataSourceMonitorFolderCheck("data.sumologic_monitor_folder.test"),
28+
),
29+
},
30+
},
31+
})
3232
}
3333

3434
func TestAccDataSourceMonitorFolder_folder_does_not_exist(t *testing.T) {
@@ -54,4 +54,4 @@ func testAccDataSourceMonitorFolderCheck(name string) resource.TestCheckFunc {
5454
resource.TestCheckResourceAttrSet(name, "id"),
5555
resource.TestCheckResourceAttrSet(name, "name"),
5656
)
57-
}
57+
}

sumologic/resource_sumologic_role_v2.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func resourceSumologicRoleV2() *schema.Resource {
5252
"selection_type": {
5353
Type: schema.TypeString,
5454
Optional: true,
55+
Computed: true,
5556
},
5657

5758
"name": {
@@ -96,6 +97,10 @@ func resourceSumologicRoleV2Read(d *schema.ResourceData, meta interface{}) error
9697
return nil
9798
}
9899

100+
if roleV2.SelectionType == "" {
101+
roleV2.SelectionType = "All"
102+
}
103+
99104
d.Set("name", roleV2.Name)
100105
d.Set("audit_data_filter", roleV2.AuditDataFilter)
101106
d.Set("selection_type", roleV2.SelectionType)
@@ -123,6 +128,10 @@ func resourceSumologicRoleV2Update(d *schema.ResourceData, meta interface{}) err
123128

124129
roleV2 := resourceToRoleV2(d)
125130

131+
if roleV2.SelectionType == "" {
132+
roleV2.SelectionType = "All"
133+
}
134+
126135
id := d.Id()
127136
retrievedRoleV2, _ := c.GetRole(id)
128137
roleV2.Users = retrievedRoleV2.Users

sumologic/resource_sumologic_role_v2_test.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,58 @@ resource "sumologic_role_v2" "test" {
207207
`, name, auditDataFilter, selectionType, capabilities, description, securityDataFilter, logAnalyticsFilter)
208208
}
209209

210+
func TestAccSumologicRoleV2_selectionType_DefaultsToAll(t *testing.T) {
211+
var roleV2 RoleV2
212+
testName := acctest.RandomWithPrefix("tf-acc-test")
213+
testCapabilities := []string{"\"manageContent\""}
214+
testDescription := "Role with default selection_type"
215+
testAuditDataFilter := "info"
216+
testSecurityDataFilter := "error"
217+
testLogAnalyticsFilter := "!_sourceCategory=collector"
218+
219+
resource.Test(t, resource.TestCase{
220+
PreCheck: func() { testAccPreCheck(t) },
221+
Providers: testAccProviders,
222+
CheckDestroy: testAccCheckRoleV2Destroy(roleV2),
223+
Steps: []resource.TestStep{
224+
{
225+
Config: fmt.Sprintf(`
226+
resource "sumologic_role_v2" "test" {
227+
name = "%s"
228+
audit_data_filter = "%s"
229+
capabilities = %v
230+
description = "%s"
231+
security_data_filter = "%s"
232+
log_analytics_filter = "%s"
233+
}
234+
`, testName, testAuditDataFilter, testCapabilities, testDescription, testSecurityDataFilter, testLogAnalyticsFilter),
235+
Check: resource.ComposeTestCheckFunc(
236+
testAccCheckRoleV2Exists("sumologic_role_v2.test", &roleV2, t),
237+
resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", "All"),
238+
),
239+
},
240+
{
241+
Config: fmt.Sprintf(`
242+
resource "sumologic_role_v2" "test" {
243+
name = "%s"
244+
audit_data_filter = "%s"
245+
selection_type = ""
246+
capabilities = %v
247+
description = "%s"
248+
security_data_filter = "%s"
249+
log_analytics_filter = "%s"
250+
}
251+
`, testName, testAuditDataFilter, testCapabilities, testDescription, testSecurityDataFilter, testLogAnalyticsFilter),
252+
Check: resource.ComposeTestCheckFunc(
253+
testAccCheckRoleV2Exists("sumologic_role_v2.test", &roleV2, t),
254+
// Even if user sets "", internally defaults to "All"
255+
resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", "All"),
256+
),
257+
},
258+
},
259+
})
260+
}
261+
210262
func testAccCheckRoleV2Attributes(name string) resource.TestCheckFunc {
211263
return func(s *terraform.State) error {
212264
f := resource.ComposeTestCheckFunc(

0 commit comments

Comments
 (0)