diff --git a/sysdig/data_source_sysdig_monitor_notification_channel_team_email.go b/sysdig/data_source_sysdig_monitor_notification_channel_team_email.go index 5969ab4c..0683808d 100644 --- a/sysdig/data_source_sysdig_monitor_notification_channel_team_email.go +++ b/sysdig/data_source_sysdig_monitor_notification_channel_team_email.go @@ -24,6 +24,10 @@ func dataSourceSysdigMonitorNotificationChannelTeamEmail() *schema.Resource { Type: schema.TypeInt, Computed: true, }, + "include_admin_users": { + Type: schema.TypeBool, + Computed: true, + }, }), } } diff --git a/sysdig/data_source_sysdig_monitor_notification_channel_team_email_test.go b/sysdig/data_source_sysdig_monitor_notification_channel_team_email_test.go index 26bc25a5..7c97fc02 100644 --- a/sysdig/data_source_sysdig_monitor_notification_channel_team_email_test.go +++ b/sysdig/data_source_sysdig_monitor_notification_channel_team_email_test.go @@ -14,7 +14,7 @@ import ( ) func TestAccMonitorNotificationChannelTeamEmailDataSource(t *testing.T) { - rText := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) } resource.ParallelTest(t, resource.TestCase{ PreCheck: sysdigOrIBMMonitorPreCheck(t), @@ -25,11 +25,21 @@ func TestAccMonitorNotificationChannelTeamEmailDataSource(t *testing.T) { }, Steps: []resource.TestStep{ { - Config: monitorNotificationChannelTeamEmail(rText), + Config: monitorNotificationChannelTeamEmail(rText()), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email", "id", "sysdig_monitor_notification_channel_team_email.nc_team_email", "id"), resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email", "name", "sysdig_monitor_notification_channel_team_email.nc_team_email", "name"), resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email", "team_id", "sysdig_monitor_notification_channel_team_email.nc_team_email", "team_id"), + resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email", "include_admin_users", "sysdig_monitor_notification_channel_team_email.nc_team_email", "include_admin_users"), + ), + }, + { + Config: resourceMonitorNotificationChannelTeamEmailWithIncludeAdminUsers(rText()), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email_2", "id", "sysdig_monitor_notification_channel_team_email.nc_team_email_2", "id"), + resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email_2", "name", "sysdig_monitor_notification_channel_team_email.nc_team_email_2", "name"), + resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email_2", "team_id", "sysdig_monitor_notification_channel_team_email.nc_team_email_2", "team_id"), + resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email_2", "include_admin_users", "sysdig_monitor_notification_channel_team_email.nc_team_email_2", "include_admin_users"), ), }, }, @@ -54,3 +64,23 @@ data "sysdig_monitor_notification_channel_team_email" "nc_team_email" { } `, name, name) } + +func resourceMonitorNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string { + return fmt.Sprintf(` + resource "sysdig_monitor_team" "sample_data_2" { + name = "monitor-sample-data-%s" + entrypoint { + type = "Explore" + } + } +resource "sysdig_monitor_notification_channel_team_email" "nc_team_email_2" { + name = "%s" + team_id = sysdig_monitor_team.sample_data_2.id + include_admin_users = true +} + +data "sysdig_monitor_notification_channel_team_email" "nc_team_email_2" { + name = sysdig_monitor_notification_channel_team_email.nc_team_email_2.name +} +`, name, name) +} diff --git a/sysdig/data_source_sysdig_secure_notification_channel_team_email.go b/sysdig/data_source_sysdig_secure_notification_channel_team_email.go index d44b8f41..d35054a4 100644 --- a/sysdig/data_source_sysdig_secure_notification_channel_team_email.go +++ b/sysdig/data_source_sysdig_secure_notification_channel_team_email.go @@ -24,6 +24,10 @@ func dataSourceSysdigSecureNotificationChannelTeamEmail() *schema.Resource { Type: schema.TypeInt, Computed: true, }, + "include_admin_users": { + Type: schema.TypeBool, + Computed: true, + }, }), } } diff --git a/sysdig/data_source_sysdig_secure_notification_channel_team_email_test.go b/sysdig/data_source_sysdig_secure_notification_channel_team_email_test.go index bd0b0aa4..5a72675e 100644 --- a/sysdig/data_source_sysdig_secure_notification_channel_team_email_test.go +++ b/sysdig/data_source_sysdig_secure_notification_channel_team_email_test.go @@ -14,7 +14,7 @@ import ( ) func TestAccSecureNotificationChannelTeamEmailDataSource(t *testing.T) { - rText := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) + rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) } resource.ParallelTest(t, resource.TestCase{ PreCheck: preCheckAnyEnv(t, SysdigSecureApiTokenEnv, SysdigIBMSecureAPIKeyEnv), @@ -25,11 +25,21 @@ func TestAccSecureNotificationChannelTeamEmailDataSource(t *testing.T) { }, Steps: []resource.TestStep{ { - Config: secureNotificationChannelTeamEmail(rText), + Config: secureNotificationChannelTeamEmail(rText()), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email", "id", "sysdig_secure_notification_channel_team_email.nc_team_email", "id"), resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email", "name", "sysdig_secure_notification_channel_team_email.nc_team_email", "name"), resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email", "team_id", "sysdig_secure_notification_channel_team_email.nc_team_email", "team_id"), + resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email", "include_admin_users", "sysdig_secure_notification_channel_team_email.nc_team_email", "include_admin_users"), + ), + }, + { + Config: resourceSecureNotificationChannelTeamEmailWithIncludeAdminUsers(rText()), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email_2", "id", "sysdig_secure_notification_channel_team_email.nc_team_email_2", "id"), + resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email_2", "name", "sysdig_secure_notification_channel_team_email.nc_team_email_2", "name"), + resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email_2", "team_id", "sysdig_secure_notification_channel_team_email.nc_team_email_2", "team_id"), + resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email_2", "include_admin_users", "sysdig_secure_notification_channel_team_email.nc_team_email_2", "include_admin_users"), ), }, }, @@ -52,3 +62,21 @@ data "sysdig_secure_notification_channel_team_email" "nc_team_email" { } `, name, name) } + +func resourceSecureNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string { + return fmt.Sprintf(` + resource "sysdig_secure_team" "sample_data_2" { + name = "secure-sample-data-%s" + all_zones = "true" + } +resource "sysdig_secure_notification_channel_team_email" "nc_team_email_2" { + name = "%s" + team_id = sysdig_secure_team.sample_data_2.id + include_admin_users = true +} + +data "sysdig_secure_notification_channel_team_email" "nc_team_email_2" { + name = sysdig_secure_notification_channel_team_email.nc_team_email_2.name +} +`, name, name) +} diff --git a/sysdig/internal/client/v2/model.go b/sysdig/internal/client/v2/model.go index db241d49..e155018e 100644 --- a/sysdig/internal/client/v2/model.go +++ b/sysdig/internal/client/v2/model.go @@ -130,6 +130,7 @@ type NotificationChannelOptions struct { Region string `json:"region,omitempty"` // Type: OpsGenie AllowInsecureConnections *bool `json:"allowInsecureConnections,omitempty"` // Type: prometheus alert manager, custom webhook, Webhook TeamID int `json:"teamId,omitempty"` // Type: team email + IncludeAdminUsers *bool `json:"includeAdminUsers,omitempty"` // Type: team email HTTPMethod string `json:"httpMethod,omitempty"` // Type: custom webhook MonitorTemplate string `json:"monitorTemplate,omitempty"` // Type: custom webhook InstanceID string `json:"instanceId,omitempty"` // Type: ibm event notification diff --git a/sysdig/resource_sysdig_monitor_notification_channel_team_email.go b/sysdig/resource_sysdig_monitor_notification_channel_team_email.go index f6576113..ce67549a 100644 --- a/sysdig/resource_sysdig_monitor_notification_channel_team_email.go +++ b/sysdig/resource_sysdig_monitor_notification_channel_team_email.go @@ -36,6 +36,11 @@ func resourceSysdigMonitorNotificationChannelTeamEmail() *schema.Resource { Type: schema.TypeInt, Required: true, }, + "include_admin_users": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, }), } } @@ -141,6 +146,8 @@ func monitorNotificationChannelTeamEmailFromResourceData(d *schema.ResourceData, nc.Type = notificationChannelTypeTeamEmail nc.Options.TeamID = d.Get("team_id").(int) + includeAdminUsers := d.Get("include_admin_users").(bool) + nc.Options.IncludeAdminUsers = &includeAdminUsers return nc, err } @@ -151,6 +158,9 @@ func monitorNotificationChannelTeamEmailToResourceData(nc *v2.NotificationChanne } _ = d.Set("team_id", nc.Options.TeamID) + if nc.Options.IncludeAdminUsers != nil { + _ = d.Set("include_admin_users", *nc.Options.IncludeAdminUsers) + } return err } diff --git a/sysdig/resource_sysdig_monitor_notification_channel_team_email_test.go b/sysdig/resource_sysdig_monitor_notification_channel_team_email_test.go index 11f8529e..14cedd39 100644 --- a/sysdig/resource_sysdig_monitor_notification_channel_team_email_test.go +++ b/sysdig/resource_sysdig_monitor_notification_channel_team_email_test.go @@ -42,6 +42,15 @@ func TestAccMonitorNotificationChannelTeamEmail(t *testing.T) { ImportStateVerify: true, ImportStateVerifyIgnore: []string{"send_test_notification"}, }, + { + Config: monitorNotificationChannelTeamEmailWithIncludeAdminUsers(rText()), + }, + { + ResourceName: "sysdig_monitor_notification_channel_team_email.sample_team_email3", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"send_test_notification"}, + }, }, }) } @@ -51,7 +60,7 @@ func monitorNotificationChannelTeamEmailWithName(name string) string { resource "sysdig_monitor_team" "sample1" { name = "monitor-sample-%s" entrypoint { - type = "Explore" + type = "Explore" } } resource "sysdig_monitor_notification_channel_team_email" "sample_team_email1" { @@ -68,7 +77,7 @@ func monitorNotificationChannelTeamEmailSharedWithCurrentTeam(name string) strin resource "sysdig_monitor_team" "sample2" { name = "monitor-sample-%s" entrypoint { - type = "Explore" + type = "Explore" } } resource "sysdig_monitor_notification_channel_team_email" "sample_team_email2" { @@ -80,3 +89,21 @@ resource "sysdig_monitor_notification_channel_team_email" "sample_team_email2" { share_with_current_team = true }`, name, name) } + +func monitorNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string { + return fmt.Sprintf(` +resource "sysdig_monitor_team" "sample3" { + name = "monitor-sample-%s" + entrypoint { + type = "Explore" + } +} +resource "sysdig_monitor_notification_channel_team_email" "sample_team_email3" { + name = "Example Channel %s - team email" + enabled = true + team_id = sysdig_monitor_team.sample3.id + include_admin_users = true + notify_when_ok = true + notify_when_resolved = true +}`, name, name) +} diff --git a/sysdig/resource_sysdig_secure_notification_channel_team_email.go b/sysdig/resource_sysdig_secure_notification_channel_team_email.go index f66e5f9c..6eda1b4f 100644 --- a/sysdig/resource_sysdig_secure_notification_channel_team_email.go +++ b/sysdig/resource_sysdig_secure_notification_channel_team_email.go @@ -36,6 +36,11 @@ func resourceSysdigSecureNotificationChannelTeamEmail() *schema.Resource { Type: schema.TypeInt, Required: true, }, + "include_admin_users": { + Type: schema.TypeBool, + Optional: true, + Default: false, + }, }), } } @@ -141,6 +146,8 @@ func secureNotificationChannelTeamEmailFromResourceData(d *schema.ResourceData, nc.Type = notificationChannelTypeTeamEmail nc.Options.TeamID = d.Get("team_id").(int) + includeAdminUsers := d.Get("include_admin_users").(bool) + nc.Options.IncludeAdminUsers = &includeAdminUsers return nc, err } @@ -151,6 +158,9 @@ func secureNotificationChannelTeamEmailToResourceData(nc *v2.NotificationChannel } _ = d.Set("team_id", nc.Options.TeamID) + if nc.Options.IncludeAdminUsers != nil { + _ = d.Set("include_admin_users", *nc.Options.IncludeAdminUsers) + } return err } diff --git a/sysdig/resource_sysdig_secure_notification_channel_team_email_test.go b/sysdig/resource_sysdig_secure_notification_channel_team_email_test.go index 9e01847c..b87e022a 100644 --- a/sysdig/resource_sysdig_secure_notification_channel_team_email_test.go +++ b/sysdig/resource_sysdig_secure_notification_channel_team_email_test.go @@ -42,6 +42,15 @@ func TestAccSecureNotificationChannelTeamEmail(t *testing.T) { ImportStateVerify: true, ImportStateVerifyIgnore: []string{"send_test_notification"}, }, + { + Config: secureNotificationChannelTeamEmailWithIncludeAdminUsers(rText()), + }, + { + ResourceName: "sysdig_secure_notification_channel_team_email.sample_team_email3", + ImportState: true, + ImportStateVerify: true, + ImportStateVerifyIgnore: []string{"send_test_notification"}, + }, }, }) } @@ -76,3 +85,19 @@ resource "sysdig_secure_notification_channel_team_email" "sample_team_email2" { share_with_current_team = true }`, name, name) } + +func secureNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string { + return fmt.Sprintf(` +resource "sysdig_secure_team" "sample3" { + name = "secure-sample-%s" + all_zones = "true" +} +resource "sysdig_secure_notification_channel_team_email" "sample_team_email3" { + name = "Example Channel %s - team email" + enabled = true + team_id = sysdig_secure_team.sample3.id + include_admin_users = true + notify_when_ok = true + notify_when_resolved = true +}`, name, name) +} diff --git a/website/docs/d/monitor_notification_channel_team_email.md b/website/docs/d/monitor_notification_channel_team_email.md index fd104282..ce35a113 100644 --- a/website/docs/d/monitor_notification_channel_team_email.md +++ b/website/docs/d/monitor_notification_channel_team_email.md @@ -31,6 +31,7 @@ In addition to all arguments above, the following attributes are exported: * `id` - The Notification Channel ID. * `name` - The Notification Channel Name. * `team_id` - id of the team. +* `include_admin_users` - Whether the Notification Channel includes admin users in notifications. * `enabled` - Whether the Notification Channel is active or not. * `notify_when_ok` - Whether the Notification Channel sends a notification when the condition is no longer triggered. * `notify_when_resolved` - Whether the Notification Channel sends a notification if it's manually acknowledged by a diff --git a/website/docs/d/secure_notification_channel_team_email.md b/website/docs/d/secure_notification_channel_team_email.md index f01579c1..0185c1dc 100644 --- a/website/docs/d/secure_notification_channel_team_email.md +++ b/website/docs/d/secure_notification_channel_team_email.md @@ -31,6 +31,7 @@ In addition to all arguments above, the following attributes are exported: * `id` - The Notification Channel ID. * `name` - The Notification Channel Name. * `team_id` - id of the team. +* `include_admin_users` - Whether the Notification Channel includes admin users in notifications. * `enabled` - Whether the Notification Channel is active or not. * `notify_when_ok` - Whether the Notification Channel sends a notification when the condition is no longer triggered. * `notify_when_resolved` - Whether the Notification Channel sends a notification if it's manually acknowledged by a diff --git a/website/docs/r/monitor_notification_channel_team_email.md b/website/docs/r/monitor_notification_channel_team_email.md index 58ba7dc7..3c997533 100644 --- a/website/docs/r/monitor_notification_channel_team_email.md +++ b/website/docs/r/monitor_notification_channel_team_email.md @@ -15,9 +15,10 @@ Creates a Sysdig Monitor Notification Channel of type Team Email. ## Example Usage ```terraform -resource "sysdig_monitor_notification_channel_team_email" "sample-gchat" { +resource "sysdig_monitor_notification_channel_team_email" "sample-team-email" { name = "Example Channel - team email" team_id = 1 + include_admin_users = false enabled = true notify_when_ok = false notify_when_resolved = false @@ -31,6 +32,8 @@ resource "sysdig_monitor_notification_channel_team_email" "sample-gchat" { * `team_id` - (Required) id of the team. +* `include_admin_users` - (Optional) If set to `true`, it will include admin users in notifications. Default is false. + * `enabled` - (Optional) If false, the channel will not emit notifications. Default is true. * `notify_when_ok` - (Optional) Send a new notification when the alert condition is diff --git a/website/docs/r/secure_notification_channel_team_email.md b/website/docs/r/secure_notification_channel_team_email.md index 26bd62f7..fc21eae4 100644 --- a/website/docs/r/secure_notification_channel_team_email.md +++ b/website/docs/r/secure_notification_channel_team_email.md @@ -15,9 +15,10 @@ Creates a Sysdig Secure Notification Channel of type Team Email. ## Example Usage ```terraform -resource "sysdig_secure_notification_channel_team_email" "sample-gchat" { +resource "sysdig_secure_notification_channel_team_email" "sample-team-email" { name = "Example Channel - team email" team_id = 1 + include_admin_users = false enabled = true notify_when_ok = false notify_when_resolved = false @@ -31,6 +32,8 @@ resource "sysdig_secure_notification_channel_team_email" "sample-gchat" { * `team_id` - (Required) id of the team. +* `include_admin_users` - (Optional) If set to `true`, it will include admin users in notifications. Default is false. + * `enabled` - (Optional) If false, the channel will not emit notifications. Default is true. * `notify_when_ok` - (Optional) Send a new notification when the alert condition is