diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d3b2032..2f87d3b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ## X.Y.Z (Unreleased) * Add new change notes here +BUG FIXES: +* Corrected selection_type configuration in RolesV2 resources. FEATURES: diff --git a/sumologic/data_source_sumologic_monitor_folder.go b/sumologic/data_source_sumologic_monitor_folder.go index 3ec3748f..35c97716 100644 --- a/sumologic/data_source_sumologic_monitor_folder.go +++ b/sumologic/data_source_sumologic_monitor_folder.go @@ -1,7 +1,7 @@ package sumologic import ( - "fmt" + "fmt" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) @@ -41,11 +41,11 @@ func dataSourceSumologicMonitorFolderRead(d *schema.ResourceData, meta interface return err } - if monitorsLibraryFolder == nil || monitorsLibraryFolder.ID == "" { - return fmt.Errorf("folder with path '%s' does not exist", d.Get("path").(string)) - } + if monitorsLibraryFolder == nil || monitorsLibraryFolder.ID == "" { + return fmt.Errorf("folder with path '%s' does not exist", d.Get("path").(string)) + } - d.SetId(monitorsLibraryFolder.ID) + d.SetId(monitorsLibraryFolder.ID) d.Set("name", monitorsLibraryFolder.Name) d.Set("description", monitorsLibraryFolder.Description) diff --git a/sumologic/data_source_sumologic_monitor_folder_test.go b/sumologic/data_source_sumologic_monitor_folder_test.go index dad443ac..11c1d9c2 100644 --- a/sumologic/data_source_sumologic_monitor_folder_test.go +++ b/sumologic/data_source_sumologic_monitor_folder_test.go @@ -8,12 +8,12 @@ import ( ) func TestAccDataSourceMonitorFolder_basic(t *testing.T) { - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - Steps: []resource.TestStep{ - { - Config: ` + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: ` resource "sumologic_monitor_folder" "test_folder" { name = "Terraform Test" description = "Terraform Test Folder" @@ -23,12 +23,12 @@ func TestAccDataSourceMonitorFolder_basic(t *testing.T) { depends_on = [sumologic_monitor_folder.test_folder] } `, - Check: resource.ComposeTestCheckFunc( - testAccDataSourceMonitorFolderCheck("data.sumologic_monitor_folder.test"), - ), - }, - }, - }) + Check: resource.ComposeTestCheckFunc( + testAccDataSourceMonitorFolderCheck("data.sumologic_monitor_folder.test"), + ), + }, + }, + }) } func TestAccDataSourceMonitorFolder_folder_does_not_exist(t *testing.T) { @@ -54,4 +54,4 @@ func testAccDataSourceMonitorFolderCheck(name string) resource.TestCheckFunc { resource.TestCheckResourceAttrSet(name, "id"), resource.TestCheckResourceAttrSet(name, "name"), ) -} \ No newline at end of file +} diff --git a/sumologic/resource_sumologic_role_v2.go b/sumologic/resource_sumologic_role_v2.go index e344b47a..4828b4df 100644 --- a/sumologic/resource_sumologic_role_v2.go +++ b/sumologic/resource_sumologic_role_v2.go @@ -52,6 +52,7 @@ func resourceSumologicRoleV2() *schema.Resource { "selection_type": { Type: schema.TypeString, Optional: true, + Computed: true, }, "name": { @@ -96,6 +97,10 @@ func resourceSumologicRoleV2Read(d *schema.ResourceData, meta interface{}) error return nil } + if roleV2.SelectionType == "" { + roleV2.SelectionType = "All" + } + d.Set("name", roleV2.Name) d.Set("audit_data_filter", roleV2.AuditDataFilter) d.Set("selection_type", roleV2.SelectionType) @@ -123,6 +128,10 @@ func resourceSumologicRoleV2Update(d *schema.ResourceData, meta interface{}) err roleV2 := resourceToRoleV2(d) + if roleV2.SelectionType == "" { + roleV2.SelectionType = "All" + } + id := d.Id() retrievedRoleV2, _ := c.GetRole(id) roleV2.Users = retrievedRoleV2.Users diff --git a/sumologic/resource_sumologic_role_v2_test.go b/sumologic/resource_sumologic_role_v2_test.go index 1e929211..016ec1a2 100644 --- a/sumologic/resource_sumologic_role_v2_test.go +++ b/sumologic/resource_sumologic_role_v2_test.go @@ -218,6 +218,58 @@ resource "sumologic_role_v2" "test" { `, name, auditDataFilter, selectionType, capabilities, description, securityDataFilter, logAnalyticsFilter) } +func TestAccSumologicRoleV2_selectionType_DefaultsToAll(t *testing.T) { + var roleV2 RoleV2 + testName := acctest.RandomWithPrefix("tf-acc-test") + testCapabilities := []string{"\"manageContent\""} + testDescription := "Role with default selection_type" + testAuditDataFilter := "info" + testSecurityDataFilter := "error" + testLogAnalyticsFilter := "!_sourceCategory=collector" + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckRoleV2Destroy(roleV2), + Steps: []resource.TestStep{ + { + Config: fmt.Sprintf(` +resource "sumologic_role_v2" "test" { + name = "%s" + audit_data_filter = "%s" + capabilities = %v + description = "%s" + security_data_filter = "%s" + log_analytics_filter = "%s" +} +`, testName, testAuditDataFilter, testCapabilities, testDescription, testSecurityDataFilter, testLogAnalyticsFilter), + Check: resource.ComposeTestCheckFunc( + testAccCheckRoleV2Exists("sumologic_role_v2.test", &roleV2, t), + resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", "All"), + ), + }, + { + Config: fmt.Sprintf(` +resource "sumologic_role_v2" "test" { + name = "%s" + audit_data_filter = "%s" + selection_type = "" + capabilities = %v + description = "%s" + security_data_filter = "%s" + log_analytics_filter = "%s" +} +`, testName, testAuditDataFilter, testCapabilities, testDescription, testSecurityDataFilter, testLogAnalyticsFilter), + Check: resource.ComposeTestCheckFunc( + testAccCheckRoleV2Exists("sumologic_role_v2.test", &roleV2, t), + // Even if user sets "", internally defaults to "All" + resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", "All"), + ), + }, + }, + }) +} + func testAccCheckRoleV2Attributes(name string) resource.TestCheckFunc { return func(s *terraform.State) error { f := resource.ComposeTestCheckFunc(