Skip to content

Commit 792a6ac

Browse files
authored
feat(team): add missing features to teams (#628)
* feat(team): add prometheus_remote_write_metrics_filter * feat(team): add all possible entrypoints and visibility options * feat(team): remove platform metric related attributes from secure_team
1 parent 983be59 commit 792a6ac

15 files changed

+245
-131
lines changed

sysdig/data_source_sysdig_monitor_team.go

+12
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,10 @@ func dataSourceSysdigMonitorTeam() *schema.Resource {
3636
Type: schema.TypeString,
3737
Computed: true,
3838
},
39+
"prometheus_remote_write_metrics_filter": {
40+
Type: schema.TypeString,
41+
Computed: true,
42+
},
3943
"can_use_sysdig_capture": {
4044
Type: schema.TypeBool,
4145
Computed: true,
@@ -48,6 +52,10 @@ func dataSourceSysdigMonitorTeam() *schema.Resource {
4852
Type: schema.TypeBool,
4953
Computed: true,
5054
},
55+
"can_use_agent_cli": {
56+
Type: schema.TypeBool,
57+
Computed: true,
58+
},
5159
"default_team": {
5260
Type: schema.TypeBool,
5361
Computed: true,
@@ -126,17 +134,21 @@ func dataSourceSysdigMonitorTeamRead(ctx context.Context, d *schema.ResourceData
126134
_ = d.Set("can_use_sysdig_capture", team.CanUseSysdigCapture)
127135
_ = d.Set("can_see_infrastructure_events", team.CanUseCustomEvents)
128136
_ = d.Set("can_use_aws_data", team.CanUseAwsMetrics)
137+
_ = d.Set("can_use_agent_cli", team.CanUseAgentCli)
129138
_ = d.Set("default_team", team.DefaultTeam)
130139
_ = d.Set("user_roles", userMonitorRolesToSet(team.UserRoles))
131140
_ = d.Set("entrypoint", entrypointToSet(team.EntryPoint))
132141
_ = d.Set("version", team.Version)
133142

134143
var ibmPlatformMetrics *string
144+
var prometheusRemoteWrite *string
135145
if team.NamespaceFilters != nil {
136146
ibmPlatformMetrics = team.NamespaceFilters.IBMPlatformMetrics
147+
prometheusRemoteWrite = team.NamespaceFilters.PrometheusRemoteWrite
137148
}
138149
_ = d.Set("enable_ibm_platform_metrics", team.CanUseBeaconMetrics)
139150
_ = d.Set("ibm_platform_metrics", ibmPlatformMetrics)
151+
_ = d.Set("prometheus_remote_write_metrics_filter", prometheusRemoteWrite)
140152

141153
return nil
142154
}

sysdig/data_source_sysdig_monitor_team_test.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ func TestAccDataSourceSysdigMonitorTeam(t *testing.T) {
3232
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_use_sysdig_capture", "true"),
3333
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_see_infrastructure_events", "true"),
3434
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_use_aws_data", "true"),
35+
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_use_agent_cli", "false"),
36+
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "prometheus_remote_write_metrics_filter", "kube_cluster_name in (\"test-cluster\")"),
3537
),
3638
},
3739
},
@@ -48,9 +50,10 @@ resource "sysdig_monitor_team" "sample" {
4850
can_use_sysdig_capture = true
4951
can_see_infrastructure_events = true
5052
can_use_aws_data = true
51-
53+
can_use_agent_cli = false
54+
prometheus_remote_write_metrics_filter = "kube_cluster_name in (\"test-cluster\")"
5255
entrypoint {
53-
type = "Dashboards"
56+
type = "Dashboards"
5457
}
5558
}
5659

sysdig/data_source_sysdig_secure_team.go

+10
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ func dataSourceSysdigSecureTeam() *schema.Resource {
4040
Type: schema.TypeBool,
4141
Computed: true,
4242
},
43+
"can_use_agent_cli": {
44+
Type: schema.TypeBool,
45+
Computed: true,
46+
},
47+
"can_use_rapid_response": {
48+
Type: schema.TypeBool,
49+
Computed: true,
50+
},
4351
"default_team": {
4452
Type: schema.TypeBool,
4553
Computed: true,
@@ -103,6 +111,8 @@ func dataSourceSysdigSecureTeamRead(ctx context.Context, d *schema.ResourceData,
103111
_ = d.Set("scope_by", team.Show)
104112
_ = d.Set("filter", team.Filter)
105113
_ = d.Set("use_sysdig_capture", team.CanUseSysdigCapture)
114+
_ = d.Set("can_use_agent_cli", team.CanUseAgentCli)
115+
_ = d.Set("can_use_rapid_response", team.CanUseRapidResponse)
106116
_ = d.Set("default_team", team.DefaultTeam)
107117
_ = d.Set("user_roles", userSecureRolesToSet(team.UserRoles))
108118
_ = d.Set("version", team.Version)

sysdig/data_source_sysdig_secure_team_test.go

+10-6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ func TestAccDataSourceSysdigSecureTeam(t *testing.T) {
3131
resource.TestCheckResourceAttr("data.sysdig_secure_team.test", "version", "0"),
3232
resource.TestCheckResourceAttr("data.sysdig_secure_team.test", "use_sysdig_capture", "true"),
3333
resource.TestCheckResourceAttr("data.sysdig_secure_team.test", "all_zones", "true"),
34+
resource.TestCheckResourceAttr("data.sysdig_secure_team.test", "can_use_agent_cli", "false"),
35+
resource.TestCheckResourceAttr("data.sysdig_secure_team.test", "can_use_rapid_response", "true"),
3436
),
3537
},
3638
},
@@ -40,12 +42,14 @@ func TestAccDataSourceSysdigSecureTeam(t *testing.T) {
4042
func secureTeamAndDatasource(name string) string {
4143
return fmt.Sprintf(`
4244
resource "sysdig_secure_team" "sample" {
43-
name = "%s"
44-
description = "A test secure team"
45-
scope_by = "container"
46-
use_sysdig_capture = true
47-
filter = "container.image.repo = \"sysdig/agent\""
48-
all_zones = true
45+
name = "%s"
46+
description = "A test secure team"
47+
scope_by = "container"
48+
use_sysdig_capture = true
49+
filter = "container.image.repo = \"sysdig/agent\""
50+
all_zones = true
51+
can_use_agent_cli = false
52+
can_use_rapid_response = true
4953
}
5054
5155
data "sysdig_secure_team" "test" {

sysdig/internal/client/v2/model.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ type Team struct {
2626
CanUseCustomEvents *bool `json:"canUseCustomEvents,omitempty"`
2727
CanUseAwsMetrics *bool `json:"canUseAwsMetrics,omitempty"`
2828
CanUseBeaconMetrics *bool `json:"canUseBeaconMetrics,omitempty"`
29+
CanUseRapidResponse *bool `json:"canUseRapidResponse,omitempty"`
30+
CanUseAgentCli *bool `json:"canUseAgentCli,omitempty"`
2931
UserCount int `json:"userCount,omitempty"`
3032
Filter string `json:"filter,omitempty"`
3133
NamespaceFilters *NamespaceFilters `json:"namespaceFilters,omitempty"`
@@ -35,7 +37,8 @@ type Team struct {
3537
}
3638

3739
type NamespaceFilters struct {
38-
IBMPlatformMetrics *string `json:"ibmPlatformMetrics"`
40+
IBMPlatformMetrics *string `json:"ibmPlatformMetrics,omitempty"`
41+
PrometheusRemoteWrite *string `json:"prometheusRemoteWrite,omitempty"`
3942
}
4043

4144
type UserRoles struct {

sysdig/resource_sysdig_monitor_team.go

+51-8
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,16 @@ func resourceSysdigMonitorTeam() *schema.Resource {
4646
Optional: true,
4747
},
4848
"scope_by": {
49+
Type: schema.TypeString,
50+
Optional: true,
51+
Default: "host",
52+
ValidateFunc: validation.StringInSlice([]string{"host", "container"}, false),
53+
},
54+
"filter": {
4955
Type: schema.TypeString,
5056
Optional: true,
51-
Default: "host",
5257
},
53-
"filter": {
58+
"prometheus_remote_write_metrics_filter": {
5459
Type: schema.TypeString,
5560
Optional: true,
5661
},
@@ -77,6 +82,11 @@ func resourceSysdigMonitorTeam() *schema.Resource {
7782
Optional: true,
7883
Default: false,
7984
},
85+
"can_use_agent_cli": {
86+
Type: schema.TypeBool,
87+
Optional: true,
88+
Default: true,
89+
},
8090
"user_roles": {
8191
Type: schema.TypeSet,
8292
Optional: true,
@@ -102,7 +112,7 @@ func resourceSysdigMonitorTeam() *schema.Resource {
102112
"type": {
103113
Type: schema.TypeString,
104114
Required: true,
105-
ValidateFunc: validation.StringInSlice([]string{"Explore", "Dashboards", "Events", "Alerts", "Settings"}, false),
115+
ValidateFunc: validation.StringInSlice([]string{"Explore", "Dashboards", "Events", "Alerts", "Settings", "DashboardTemplates", "Advisor"}, false),
106116
},
107117

108118
"selection": {
@@ -187,12 +197,21 @@ func resourceSysdigMonitorTeamRead(ctx context.Context, d *schema.ResourceData,
187197
_ = d.Set("filter", t.Filter)
188198
_ = d.Set("can_use_sysdig_capture", t.CanUseSysdigCapture)
189199
_ = d.Set("can_see_infrastructure_events", t.CanUseCustomEvents)
200+
_ = d.Set("can_use_agent_cli", t.CanUseAgentCli)
190201
_ = d.Set("can_use_aws_data", t.CanUseAwsMetrics)
191202
_ = d.Set("default_team", t.DefaultTeam)
192203
_ = d.Set("user_roles", userMonitorRolesToSet(t.UserRoles))
193204
_ = d.Set("entrypoint", entrypointToSet(t.EntryPoint))
194205

195-
resourceSysdigTeamReadIBM(d, &t)
206+
var ibmPlatformMetrics *string
207+
var prometheusRemoteWrite *string
208+
if t.NamespaceFilters != nil {
209+
ibmPlatformMetrics = t.NamespaceFilters.IBMPlatformMetrics
210+
prometheusRemoteWrite = t.NamespaceFilters.PrometheusRemoteWrite
211+
}
212+
_ = d.Set("enable_ibm_platform_metrics", t.CanUseBeaconMetrics)
213+
_ = d.Set("ibm_platform_metrics", ibmPlatformMetrics)
214+
_ = d.Set("prometheus_remote_write_metrics_filter", prometheusRemoteWrite)
196215

197216
return nil
198217
}
@@ -217,8 +236,12 @@ func entrypointToSet(entrypoint *v2.EntryPoint) (res []map[string]interface{}) {
217236
return
218237
}
219238

239+
module := entrypoint.Module
240+
if module == "Overview" {
241+
module = "Advisor"
242+
}
220243
entrypointMap := map[string]interface{}{
221-
"type": entrypoint.Module,
244+
"type": module,
222245
"selection": entrypoint.Selection,
223246
}
224247
return append(res, entrypointMap)
@@ -264,8 +287,8 @@ func resourceSysdigMonitorTeamDelete(ctx context.Context, d *schema.ResourceData
264287
func teamFromResourceData(d *schema.ResourceData, clientType ClientType) v2.Team {
265288
canUseSysdigCapture := d.Get("can_use_sysdig_capture").(bool)
266289
canUseCustomEvents := d.Get("can_see_infrastructure_events").(bool)
290+
canUseAgentCli := d.Get("can_use_agent_cli").(bool)
267291
canUseAwsMetrics := d.Get("can_use_aws_data").(bool)
268-
canUseBeaconMetrics := false
269292
t := v2.Team{
270293
Theme: d.Get("theme").(string),
271294
Name: d.Get("name").(string),
@@ -275,7 +298,7 @@ func teamFromResourceData(d *schema.ResourceData, clientType ClientType) v2.Team
275298
CanUseSysdigCapture: &canUseSysdigCapture,
276299
CanUseCustomEvents: &canUseCustomEvents,
277300
CanUseAwsMetrics: &canUseAwsMetrics,
278-
CanUseBeaconMetrics: &canUseBeaconMetrics,
301+
CanUseAgentCli: &canUseAgentCli,
279302
DefaultTeam: d.Get("default_team").(bool),
280303
}
281304

@@ -291,11 +314,31 @@ func teamFromResourceData(d *schema.ResourceData, clientType ClientType) v2.Team
291314

292315
t.EntryPoint = &v2.EntryPoint{}
293316
t.EntryPoint.Module = d.Get("entrypoint.0.type").(string)
317+
if t.EntryPoint.Module == "Advisor" {
318+
t.EntryPoint.Module = "Overview"
319+
}
294320
if val, ok := d.GetOk("entrypoint.0.selection"); ok {
295321
t.EntryPoint.Selection = val.(string)
296322
}
297323

298-
teamFromResourceDataIBM(d, &t)
324+
canUseBeaconMetrics := d.Get("enable_ibm_platform_metrics").(bool)
325+
t.CanUseBeaconMetrics = &canUseBeaconMetrics
326+
327+
if v, ok := d.GetOk("ibm_platform_metrics"); ok {
328+
metrics := v.(string)
329+
if t.NamespaceFilters == nil {
330+
t.NamespaceFilters = &v2.NamespaceFilters{}
331+
}
332+
t.NamespaceFilters.IBMPlatformMetrics = &metrics
333+
}
334+
335+
if v, ok := d.GetOk("prometheus_remote_write_metrics_filter"); ok {
336+
metrics := v.(string)
337+
if t.NamespaceFilters == nil {
338+
t.NamespaceFilters = &v2.NamespaceFilters{}
339+
}
340+
t.NamespaceFilters.PrometheusRemoteWrite = &metrics
341+
}
299342

300343
return t
301344
}

sysdig/resource_sysdig_monitor_team_ibm_test.go

+28-11
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,9 @@ func TestAccMonitorIBMTeam(t *testing.T) {
4141
{
4242
Config: monitorTeamWithPlatformMetricsIBM(rText()),
4343
},
44+
{
45+
Config: monitorTeamWithPlatformMetricsAndPrwMetricsIBM(rText()),
46+
},
4447
{
4548
ResourceName: "sysdig_monitor_team.sample",
4649
ImportState: true,
@@ -53,28 +56,42 @@ func TestAccMonitorIBMTeam(t *testing.T) {
5356
func monitorTeamWithFullConfigIBM(name string) string {
5457
return fmt.Sprintf(`
5558
resource "sysdig_monitor_team" "sample" {
56-
name = "sample-%s"
57-
description = "%s"
58-
scope_by = "host"
59-
filter = "container.image.repo = \"sysdig/agent\""
60-
can_use_sysdig_capture = true
61-
can_see_infrastructure_events = true
62-
59+
name = "sample-%s"
60+
description = "%s"
61+
scope_by = "host"
62+
filter = "container.image.repo = \"sysdig/agent\""
63+
prometheus_remote_write_metrics_filter = "kube_cluster_name in (\"test-cluster\", \"test-k8s-data\") and kube_deployment_name = \"coredns\" and my_metric starts with \"prefix\" and not my_metric contains \"prefix-test\""
64+
can_use_sysdig_capture = true
65+
can_see_infrastructure_events = true
66+
6367
entrypoint {
64-
type = "Dashboards"
68+
type = "Dashboards"
6569
}
6670
}`, name, name)
6771
}
6872

6973
func monitorTeamWithPlatformMetricsIBM(name string) string {
7074
return fmt.Sprintf(`
7175
resource "sysdig_monitor_team" "sample" {
72-
name = "sample-%s"
76+
name = "sample-%s"
7377
enable_ibm_platform_metrics = true
74-
ibm_platform_metrics = "foo in (\"0\") and bar in (\"3\")"
78+
ibm_platform_metrics = "foo in (\"0\") and bar in (\"3\")"
79+
80+
entrypoint {
81+
type = "Dashboards"
82+
}
83+
}`, name)
84+
}
85+
86+
func monitorTeamWithPlatformMetricsAndPrwMetricsIBM(name string) string {
87+
return fmt.Sprintf(`
88+
resource "sysdig_monitor_team" "sample" {
89+
name = "sample-%s"
90+
enable_ibm_platform_metrics = true
91+
prometheus_remote_write_metrics_filter = "kube_cluster_name in (\"test-cluster\", \"test-k8s-data\") and kube_deployment_name = \"coredns\" and my_metric starts with \"prefix\" and not my_metric contains \"prefix-test\""
7592
7693
entrypoint {
77-
type = "Dashboards"
94+
type = "Dashboards"
7895
}
7996
}`, name)
8097
}

sysdig/resource_sysdig_monitor_team_test.go

+11-9
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,18 @@ func TestAccMonitorTeam(t *testing.T) {
5050
func monitorTeamWithFullConfig(name string) string {
5151
return fmt.Sprintf(`
5252
resource "sysdig_monitor_team" "sample" {
53-
name = "sample-%s"
54-
description = "%s"
55-
scope_by = "host"
56-
filter = "container.image.repo = \"sysdig/agent\""
57-
can_use_sysdig_capture = true
58-
can_see_infrastructure_events = true
59-
can_use_aws_data = true
60-
53+
name = "sample-%s"
54+
description = "%s"
55+
scope_by = "host"
56+
filter = "container.image.repo = \"sysdig/agent\""
57+
prometheus_remote_write_metrics_filter = "kube_cluster_name in (\"test-cluster\", \"test-k8s-data\") and kube_deployment_name = \"coredns\" and my_metric starts with \"prefix\" and not my_metric contains \"prefix-test\""
58+
can_use_sysdig_capture = true
59+
can_see_infrastructure_events = true
60+
can_use_aws_data = true
61+
can_use_agent_cli = true
62+
6163
entrypoint {
62-
type = "Dashboards"
64+
type = "Dashboards"
6365
}
6466
}`, name, name)
6567
}

0 commit comments

Comments
 (0)