From d89463f23d3097e6c7ecf37789c4745677b61953 Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Thu, 31 Jul 2025 09:00:36 +0530 Subject: [PATCH 1/6] SUMO-266317: Fixing bug --- sumologic/resource_sumologic_role_v2.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/sumologic/resource_sumologic_role_v2.go b/sumologic/resource_sumologic_role_v2.go index e344b47a..8a3e158a 100644 --- a/sumologic/resource_sumologic_role_v2.go +++ b/sumologic/resource_sumologic_role_v2.go @@ -96,6 +96,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 +127,11 @@ 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 From e556c1ba368815609f50768a1d3ecd990791a1ac Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Mon, 4 Aug 2025 09:45:46 +0530 Subject: [PATCH 2/6] SUMO-266317: Adding Test case as per recommnendation --- sumologic/resource_sumologic_role_v2_test.go | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/sumologic/resource_sumologic_role_v2_test.go b/sumologic/resource_sumologic_role_v2_test.go index 1e929211..d45b61e9 100644 --- a/sumologic/resource_sumologic_role_v2_test.go +++ b/sumologic/resource_sumologic_role_v2_test.go @@ -218,6 +218,59 @@ resource "sumologic_role_v2" "test" { `, name, auditDataFilter, selectionType, capabilities, description, securityDataFilter, logAnalyticsFilter) } +func TestAccSumologicRoleV2_selectionTypeOptional(t *testing.T) { + var roleV2 RoleV2 + testName := acctest.RandomWithPrefix("tf-acc-test") + testCapabilities := []string{"\"manageContent\""} + testDescription := "Role with optional 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{ + // Step 1: selection_type is not set at all + { + 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", ""), + ), + }, + // Step 2: Explicitly set selection_type = "" + { + 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), + resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", ""), + ), + }, + }, + }) +} + func testAccCheckRoleV2Attributes(name string) resource.TestCheckFunc { return func(s *terraform.State) error { f := resource.ComposeTestCheckFunc( From 3a7ba6a2b5ff5ee6298064d38710ce2a24a81b95 Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Tue, 5 Aug 2025 16:52:32 +0530 Subject: [PATCH 3/6] SUMO-266317: Fixing Test case --- sumologic/resource_sumologic_role_v2_test.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/sumologic/resource_sumologic_role_v2_test.go b/sumologic/resource_sumologic_role_v2_test.go index d45b61e9..bf2c8c5c 100644 --- a/sumologic/resource_sumologic_role_v2_test.go +++ b/sumologic/resource_sumologic_role_v2_test.go @@ -218,11 +218,11 @@ resource "sumologic_role_v2" "test" { `, name, auditDataFilter, selectionType, capabilities, description, securityDataFilter, logAnalyticsFilter) } -func TestAccSumologicRoleV2_selectionTypeOptional(t *testing.T) { +func TestAccSumologicRoleV2_selectionType_DefaultsToAll(t *testing.T) { var roleV2 RoleV2 testName := acctest.RandomWithPrefix("tf-acc-test") testCapabilities := []string{"\"manageContent\""} - testDescription := "Role with optional selection_type" + testDescription := "Role with default selection_type" testAuditDataFilter := "info" testSecurityDataFilter := "error" testLogAnalyticsFilter := "!_sourceCategory=collector" @@ -232,7 +232,6 @@ func TestAccSumologicRoleV2_selectionTypeOptional(t *testing.T) { Providers: testAccProviders, CheckDestroy: testAccCheckRoleV2Destroy(roleV2), Steps: []resource.TestStep{ - // Step 1: selection_type is not set at all { Config: fmt.Sprintf(` resource "sumologic_role_v2" "test" { @@ -246,10 +245,9 @@ resource "sumologic_role_v2" "test" { `, testName, testAuditDataFilter, testCapabilities, testDescription, testSecurityDataFilter, testLogAnalyticsFilter), Check: resource.ComposeTestCheckFunc( testAccCheckRoleV2Exists("sumologic_role_v2.test", &roleV2, t), - resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", ""), + resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", "All"), ), }, - // Step 2: Explicitly set selection_type = "" { Config: fmt.Sprintf(` resource "sumologic_role_v2" "test" { @@ -264,7 +262,8 @@ resource "sumologic_role_v2" "test" { `, testName, testAuditDataFilter, testCapabilities, testDescription, testSecurityDataFilter, testLogAnalyticsFilter), Check: resource.ComposeTestCheckFunc( testAccCheckRoleV2Exists("sumologic_role_v2.test", &roleV2, t), - resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", ""), + // Even if user sets "", internally defaults to "All" + resource.TestCheckResourceAttr("sumologic_role_v2.test", "selection_type", "All"), ), }, }, From 3df952e6f10c9a00ebbf831a0635c76aabf8e5cf Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Tue, 5 Aug 2025 17:32:09 +0530 Subject: [PATCH 4/6] SUMO-266317: Fixing Test case --- sumologic/resource_sumologic_role_v2.go | 1 + 1 file changed, 1 insertion(+) diff --git a/sumologic/resource_sumologic_role_v2.go b/sumologic/resource_sumologic_role_v2.go index 8a3e158a..434cda1d 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": { From c559ab52abaa99243d9312b31c1ac3120fc8b9ea Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Tue, 5 Aug 2025 23:04:51 +0530 Subject: [PATCH 5/6] SUMO-266317: Addressing Review comments --- CHANGELOG.md | 4 +- .../data_source_sumologic_monitor_folder.go | 10 ++-- ...ta_source_sumologic_monitor_folder_test.go | 26 ++++----- sumologic/resource_sumologic_role_v2.go | 11 ++-- sumologic/resource_sumologic_role_v2_test.go | 58 +++++++++---------- 5 files changed, 55 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d3b2032..ba7bc411 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 434cda1d..4828b4df 100644 --- a/sumologic/resource_sumologic_role_v2.go +++ b/sumologic/resource_sumologic_role_v2.go @@ -97,9 +97,9 @@ func resourceSumologicRoleV2Read(d *schema.ResourceData, meta interface{}) error return nil } - if roleV2.SelectionType == "" { - roleV2.SelectionType = "All" - } + if roleV2.SelectionType == "" { + roleV2.SelectionType = "All" + } d.Set("name", roleV2.Name) d.Set("audit_data_filter", roleV2.AuditDataFilter) @@ -129,9 +129,8 @@ func resourceSumologicRoleV2Update(d *schema.ResourceData, meta interface{}) err roleV2 := resourceToRoleV2(d) if roleV2.SelectionType == "" { - roleV2.SelectionType = "All" - } - + roleV2.SelectionType = "All" + } id := d.Id() retrievedRoleV2, _ := c.GetRole(id) diff --git a/sumologic/resource_sumologic_role_v2_test.go b/sumologic/resource_sumologic_role_v2_test.go index bf2c8c5c..016ec1a2 100644 --- a/sumologic/resource_sumologic_role_v2_test.go +++ b/sumologic/resource_sumologic_role_v2_test.go @@ -219,21 +219,21 @@ resource "sumologic_role_v2" "test" { } 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" + 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.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" @@ -243,13 +243,13 @@ resource "sumologic_role_v2" "test" { 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(` + 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" @@ -260,14 +260,14 @@ resource "sumologic_role_v2" "test" { 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"), - ), - }, - }, - }) + 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 { From 1259441fb2e2086afe2673ed2c486b9ef7414224 Mon Sep 17 00:00:00 2001 From: Abhishek Singh Date: Tue, 5 Aug 2025 23:44:22 +0530 Subject: [PATCH 6/6] SUMO-266317: Addressing Review comments --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ba7bc411..2f87d3b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,5 @@ ## X.Y.Z (Unreleased) - +* Add new change notes here BUG FIXES: * Corrected selection_type configuration in RolesV2 resources.