Skip to content

Commit a6dd1ca

Browse files
authored
feat(team notification channels): add includeAdminUsers attribute (#672)
add new attribute to team notification channels: `includeAdminUsers`, default, false, if enabled, will also include system wide admin users (that are implicilty belonging to any team) to team notification channel notifications.
1 parent 32213ba commit a6dd1ca

13 files changed

+155
-8
lines changed

sysdig/data_source_sysdig_monitor_notification_channel_team_email.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ func dataSourceSysdigMonitorNotificationChannelTeamEmail() *schema.Resource {
2424
Type: schema.TypeInt,
2525
Computed: true,
2626
},
27+
"include_admin_users": {
28+
Type: schema.TypeBool,
29+
Computed: true,
30+
},
2731
}),
2832
}
2933
}

sysdig/data_source_sysdig_monitor_notification_channel_team_email_test.go

Lines changed: 32 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
func TestAccMonitorNotificationChannelTeamEmailDataSource(t *testing.T) {
17-
rText := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum)
17+
rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) }
1818

1919
resource.ParallelTest(t, resource.TestCase{
2020
PreCheck: sysdigOrIBMMonitorPreCheck(t),
@@ -25,11 +25,21 @@ func TestAccMonitorNotificationChannelTeamEmailDataSource(t *testing.T) {
2525
},
2626
Steps: []resource.TestStep{
2727
{
28-
Config: monitorNotificationChannelTeamEmail(rText),
28+
Config: monitorNotificationChannelTeamEmail(rText()),
2929
Check: resource.ComposeAggregateTestCheckFunc(
3030
resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email", "id", "sysdig_monitor_notification_channel_team_email.nc_team_email", "id"),
3131
resource.TestCheckResourceAttrPair("data.sysdig_monitor_notification_channel_team_email.nc_team_email", "name", "sysdig_monitor_notification_channel_team_email.nc_team_email", "name"),
3232
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"),
33+
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"),
34+
),
35+
},
36+
{
37+
Config: resourceMonitorNotificationChannelTeamEmailWithIncludeAdminUsers(rText()),
38+
Check: resource.ComposeAggregateTestCheckFunc(
39+
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"),
40+
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"),
41+
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"),
42+
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"),
3343
),
3444
},
3545
},
@@ -54,3 +64,23 @@ data "sysdig_monitor_notification_channel_team_email" "nc_team_email" {
5464
}
5565
`, name, name)
5666
}
67+
68+
func resourceMonitorNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string {
69+
return fmt.Sprintf(`
70+
resource "sysdig_monitor_team" "sample_data_2" {
71+
name = "monitor-sample-data-%s"
72+
entrypoint {
73+
type = "Explore"
74+
}
75+
}
76+
resource "sysdig_monitor_notification_channel_team_email" "nc_team_email_2" {
77+
name = "%s"
78+
team_id = sysdig_monitor_team.sample_data_2.id
79+
include_admin_users = true
80+
}
81+
82+
data "sysdig_monitor_notification_channel_team_email" "nc_team_email_2" {
83+
name = sysdig_monitor_notification_channel_team_email.nc_team_email_2.name
84+
}
85+
`, name, name)
86+
}

sysdig/data_source_sysdig_secure_notification_channel_team_email.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ func dataSourceSysdigSecureNotificationChannelTeamEmail() *schema.Resource {
2424
Type: schema.TypeInt,
2525
Computed: true,
2626
},
27+
"include_admin_users": {
28+
Type: schema.TypeBool,
29+
Computed: true,
30+
},
2731
}),
2832
}
2933
}

sysdig/data_source_sysdig_secure_notification_channel_team_email_test.go

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import (
1414
)
1515

1616
func TestAccSecureNotificationChannelTeamEmailDataSource(t *testing.T) {
17-
rText := acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum)
17+
rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) }
1818

1919
resource.ParallelTest(t, resource.TestCase{
2020
PreCheck: preCheckAnyEnv(t, SysdigSecureApiTokenEnv, SysdigIBMSecureAPIKeyEnv),
@@ -25,11 +25,21 @@ func TestAccSecureNotificationChannelTeamEmailDataSource(t *testing.T) {
2525
},
2626
Steps: []resource.TestStep{
2727
{
28-
Config: secureNotificationChannelTeamEmail(rText),
28+
Config: secureNotificationChannelTeamEmail(rText()),
2929
Check: resource.ComposeAggregateTestCheckFunc(
3030
resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email", "id", "sysdig_secure_notification_channel_team_email.nc_team_email", "id"),
3131
resource.TestCheckResourceAttrPair("data.sysdig_secure_notification_channel_team_email.nc_team_email", "name", "sysdig_secure_notification_channel_team_email.nc_team_email", "name"),
3232
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"),
33+
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"),
34+
),
35+
},
36+
{
37+
Config: resourceSecureNotificationChannelTeamEmailWithIncludeAdminUsers(rText()),
38+
Check: resource.ComposeAggregateTestCheckFunc(
39+
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"),
40+
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"),
41+
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"),
42+
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"),
3343
),
3444
},
3545
},
@@ -52,3 +62,21 @@ data "sysdig_secure_notification_channel_team_email" "nc_team_email" {
5262
}
5363
`, name, name)
5464
}
65+
66+
func resourceSecureNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string {
67+
return fmt.Sprintf(`
68+
resource "sysdig_secure_team" "sample_data_2" {
69+
name = "secure-sample-data-%s"
70+
all_zones = "true"
71+
}
72+
resource "sysdig_secure_notification_channel_team_email" "nc_team_email_2" {
73+
name = "%s"
74+
team_id = sysdig_secure_team.sample_data_2.id
75+
include_admin_users = true
76+
}
77+
78+
data "sysdig_secure_notification_channel_team_email" "nc_team_email_2" {
79+
name = sysdig_secure_notification_channel_team_email.nc_team_email_2.name
80+
}
81+
`, name, name)
82+
}

sysdig/internal/client/v2/model.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,7 @@ type NotificationChannelOptions struct {
130130
Region string `json:"region,omitempty"` // Type: OpsGenie
131131
AllowInsecureConnections *bool `json:"allowInsecureConnections,omitempty"` // Type: prometheus alert manager, custom webhook, Webhook
132132
TeamID int `json:"teamId,omitempty"` // Type: team email
133+
IncludeAdminUsers *bool `json:"includeAdminUsers,omitempty"` // Type: team email
133134
HTTPMethod string `json:"httpMethod,omitempty"` // Type: custom webhook
134135
MonitorTemplate string `json:"monitorTemplate,omitempty"` // Type: custom webhook
135136
InstanceID string `json:"instanceId,omitempty"` // Type: ibm event notification

sysdig/resource_sysdig_monitor_notification_channel_team_email.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ func resourceSysdigMonitorNotificationChannelTeamEmail() *schema.Resource {
3636
Type: schema.TypeInt,
3737
Required: true,
3838
},
39+
"include_admin_users": {
40+
Type: schema.TypeBool,
41+
Optional: true,
42+
Default: false,
43+
},
3944
}),
4045
}
4146
}
@@ -141,6 +146,8 @@ func monitorNotificationChannelTeamEmailFromResourceData(d *schema.ResourceData,
141146

142147
nc.Type = notificationChannelTypeTeamEmail
143148
nc.Options.TeamID = d.Get("team_id").(int)
149+
includeAdminUsers := d.Get("include_admin_users").(bool)
150+
nc.Options.IncludeAdminUsers = &includeAdminUsers
144151
return nc, err
145152
}
146153

@@ -151,6 +158,9 @@ func monitorNotificationChannelTeamEmailToResourceData(nc *v2.NotificationChanne
151158
}
152159

153160
_ = d.Set("team_id", nc.Options.TeamID)
161+
if nc.Options.IncludeAdminUsers != nil {
162+
_ = d.Set("include_admin_users", *nc.Options.IncludeAdminUsers)
163+
}
154164

155165
return err
156166
}

sysdig/resource_sysdig_monitor_notification_channel_team_email_test.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ func TestAccMonitorNotificationChannelTeamEmail(t *testing.T) {
4242
ImportStateVerify: true,
4343
ImportStateVerifyIgnore: []string{"send_test_notification"},
4444
},
45+
{
46+
Config: monitorNotificationChannelTeamEmailWithIncludeAdminUsers(rText()),
47+
},
48+
{
49+
ResourceName: "sysdig_monitor_notification_channel_team_email.sample_team_email3",
50+
ImportState: true,
51+
ImportStateVerify: true,
52+
ImportStateVerifyIgnore: []string{"send_test_notification"},
53+
},
4554
},
4655
})
4756
}
@@ -51,7 +60,7 @@ func monitorNotificationChannelTeamEmailWithName(name string) string {
5160
resource "sysdig_monitor_team" "sample1" {
5261
name = "monitor-sample-%s"
5362
entrypoint {
54-
type = "Explore"
63+
type = "Explore"
5564
}
5665
}
5766
resource "sysdig_monitor_notification_channel_team_email" "sample_team_email1" {
@@ -68,7 +77,7 @@ func monitorNotificationChannelTeamEmailSharedWithCurrentTeam(name string) strin
6877
resource "sysdig_monitor_team" "sample2" {
6978
name = "monitor-sample-%s"
7079
entrypoint {
71-
type = "Explore"
80+
type = "Explore"
7281
}
7382
}
7483
resource "sysdig_monitor_notification_channel_team_email" "sample_team_email2" {
@@ -80,3 +89,21 @@ resource "sysdig_monitor_notification_channel_team_email" "sample_team_email2" {
8089
share_with_current_team = true
8190
}`, name, name)
8291
}
92+
93+
func monitorNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string {
94+
return fmt.Sprintf(`
95+
resource "sysdig_monitor_team" "sample3" {
96+
name = "monitor-sample-%s"
97+
entrypoint {
98+
type = "Explore"
99+
}
100+
}
101+
resource "sysdig_monitor_notification_channel_team_email" "sample_team_email3" {
102+
name = "Example Channel %s - team email"
103+
enabled = true
104+
team_id = sysdig_monitor_team.sample3.id
105+
include_admin_users = true
106+
notify_when_ok = true
107+
notify_when_resolved = true
108+
}`, name, name)
109+
}

sysdig/resource_sysdig_secure_notification_channel_team_email.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,11 @@ func resourceSysdigSecureNotificationChannelTeamEmail() *schema.Resource {
3636
Type: schema.TypeInt,
3737
Required: true,
3838
},
39+
"include_admin_users": {
40+
Type: schema.TypeBool,
41+
Optional: true,
42+
Default: false,
43+
},
3944
}),
4045
}
4146
}
@@ -141,6 +146,8 @@ func secureNotificationChannelTeamEmailFromResourceData(d *schema.ResourceData,
141146

142147
nc.Type = notificationChannelTypeTeamEmail
143148
nc.Options.TeamID = d.Get("team_id").(int)
149+
includeAdminUsers := d.Get("include_admin_users").(bool)
150+
nc.Options.IncludeAdminUsers = &includeAdminUsers
144151
return nc, err
145152
}
146153

@@ -151,6 +158,9 @@ func secureNotificationChannelTeamEmailToResourceData(nc *v2.NotificationChannel
151158
}
152159

153160
_ = d.Set("team_id", nc.Options.TeamID)
161+
if nc.Options.IncludeAdminUsers != nil {
162+
_ = d.Set("include_admin_users", *nc.Options.IncludeAdminUsers)
163+
}
154164

155165
return err
156166
}

sysdig/resource_sysdig_secure_notification_channel_team_email_test.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,15 @@ func TestAccSecureNotificationChannelTeamEmail(t *testing.T) {
4242
ImportStateVerify: true,
4343
ImportStateVerifyIgnore: []string{"send_test_notification"},
4444
},
45+
{
46+
Config: secureNotificationChannelTeamEmailWithIncludeAdminUsers(rText()),
47+
},
48+
{
49+
ResourceName: "sysdig_secure_notification_channel_team_email.sample_team_email3",
50+
ImportState: true,
51+
ImportStateVerify: true,
52+
ImportStateVerifyIgnore: []string{"send_test_notification"},
53+
},
4554
},
4655
})
4756
}
@@ -76,3 +85,19 @@ resource "sysdig_secure_notification_channel_team_email" "sample_team_email2" {
7685
share_with_current_team = true
7786
}`, name, name)
7887
}
88+
89+
func secureNotificationChannelTeamEmailWithIncludeAdminUsers(name string) string {
90+
return fmt.Sprintf(`
91+
resource "sysdig_secure_team" "sample3" {
92+
name = "secure-sample-%s"
93+
all_zones = "true"
94+
}
95+
resource "sysdig_secure_notification_channel_team_email" "sample_team_email3" {
96+
name = "Example Channel %s - team email"
97+
enabled = true
98+
team_id = sysdig_secure_team.sample3.id
99+
include_admin_users = true
100+
notify_when_ok = true
101+
notify_when_resolved = true
102+
}`, name, name)
103+
}

website/docs/d/monitor_notification_channel_team_email.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ In addition to all arguments above, the following attributes are exported:
3131
* `id` - The Notification Channel ID.
3232
* `name` - The Notification Channel Name.
3333
* `team_id` - id of the team.
34+
* `include_admin_users` - Whether the Notification Channel includes admin users in notifications.
3435
* `enabled` - Whether the Notification Channel is active or not.
3536
* `notify_when_ok` - Whether the Notification Channel sends a notification when the condition is no longer triggered.
3637
* `notify_when_resolved` - Whether the Notification Channel sends a notification if it's manually acknowledged by a

0 commit comments

Comments
 (0)