Skip to content

Commit 2caad50

Browse files
committed
add sysdig_monitor_team and sysdig_secure_team data sources
1 parent c3d1274 commit 2caad50

6 files changed

Lines changed: 333 additions & 1 deletion
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
package sysdig
2+
3+
import (
4+
"context"
5+
"strconv"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
)
9+
10+
func dataSourceSysdigMonitorTeam() *schema.Resource {
11+
return &schema.Resource{
12+
Read: dataSourceSysdigMonitorTeamRead,
13+
Schema: map[string]*schema.Schema{
14+
"id": {
15+
Type: schema.TypeString,
16+
Required: true,
17+
},
18+
"theme": {
19+
Type: schema.TypeString,
20+
Computed: true,
21+
},
22+
"name": {
23+
Type: schema.TypeString,
24+
Computed: true,
25+
},
26+
"description": {
27+
Type: schema.TypeString,
28+
Computed: true,
29+
},
30+
"scope_by": {
31+
Type: schema.TypeString,
32+
Computed: true,
33+
},
34+
"filter": {
35+
Type: schema.TypeString,
36+
Computed: true,
37+
},
38+
"can_use_sysdig_capture": {
39+
Type: schema.TypeBool,
40+
Computed: true,
41+
},
42+
"can_see_infrastructure_events": {
43+
Type: schema.TypeBool,
44+
Computed: true,
45+
},
46+
"can_use_aws_data": {
47+
Type: schema.TypeBool,
48+
Computed: true,
49+
},
50+
"default_team": {
51+
Type: schema.TypeBool,
52+
Computed: true,
53+
},
54+
"user_roles": {
55+
Type: schema.TypeSet,
56+
Computed: true,
57+
Elem: &schema.Resource{
58+
Schema: map[string]*schema.Schema{
59+
"email": {
60+
Type: schema.TypeString,
61+
Computed: true,
62+
},
63+
"role": {
64+
Type: schema.TypeString,
65+
Computed: true,
66+
},
67+
},
68+
},
69+
},
70+
"entrypoint": {
71+
Type: schema.TypeList,
72+
Computed: true,
73+
Elem: &schema.Resource{
74+
Schema: map[string]*schema.Schema{
75+
"type": {
76+
Type: schema.TypeString,
77+
Computed: true,
78+
},
79+
"selection": {
80+
Type: schema.TypeString,
81+
Computed: true,
82+
},
83+
},
84+
},
85+
},
86+
"version": {
87+
Type: schema.TypeInt,
88+
Computed: true,
89+
},
90+
},
91+
}
92+
}
93+
94+
func dataSourceSysdigMonitorTeamRead(d *schema.ResourceData, meta interface{}) error {
95+
clients := meta.(SysdigClients)
96+
client, err := getMonitorTeamClient(clients)
97+
if err != nil {
98+
return err
99+
}
100+
101+
id, err := strconv.Atoi(d.Get("id").(string))
102+
if err != nil {
103+
return err
104+
}
105+
106+
team, err := client.GetTeamById(context.Background(), id)
107+
if err != nil {
108+
return err
109+
}
110+
111+
d.SetId(strconv.Itoa(team.ID))
112+
_ = d.Set("name", team.Name)
113+
_ = d.Set("theme", team.Theme)
114+
_ = d.Set("description", team.Description)
115+
_ = d.Set("scope_by", team.Show)
116+
_ = d.Set("filter", team.Filter)
117+
_ = d.Set("can_use_sysdig_capture", team.CanUseSysdigCapture)
118+
_ = d.Set("can_see_infrastructure_events", team.CanUseCustomEvents)
119+
_ = d.Set("can_use_aws_data", team.CanUseAwsMetrics)
120+
_ = d.Set("default_team", team.DefaultTeam)
121+
_ = d.Set("user_roles", userMonitorRolesToSet(team.UserRoles))
122+
_ = d.Set("entrypoint", entrypointToSet(team.EntryPoint))
123+
_ = d.Set("version", team.Version)
124+
125+
return nil
126+
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
//go:build tf_acc_sysdig_monitor || tf_acc_onprem_monitor || tf_acc_ibm_monitor
2+
3+
package sysdig_test
4+
5+
import (
6+
"fmt"
7+
"testing"
8+
9+
"github.com/draios/terraform-provider-sysdig/sysdig"
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
11+
12+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
13+
)
14+
15+
func TestAccDataSourceSysdigMonitorTeam(t *testing.T) {
16+
name := fmt.Sprintf("test-monitor-team-%s", randomText(10))
17+
resource.Test(t, resource.TestCase{
18+
PreCheck: preCheckAnyEnv(t, SysdigSecureApiTokenEnv),
19+
ProviderFactories: map[string]func() (*schema.Provider, error){
20+
"sysdig": func() (*schema.Provider, error) {
21+
return sysdig.Provider(), nil
22+
},
23+
},
24+
Steps: []resource.TestStep{
25+
{
26+
Config: monitorTeamWithName(name),
27+
Check: resource.ComposeTestCheckFunc(
28+
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "name", name),
29+
),
30+
},
31+
},
32+
})
33+
}
34+
35+
func monitorTeamWithName(name string) string {
36+
return fmt.Sprintf(`
37+
resource "sysdig_monitor_team" "sample" {
38+
name = "TF test-%s"
39+
description = "A test monitor team"
40+
}
41+
42+
data "sysdig_monitor_team" "test" {
43+
id = sysdig_monitor_team.sample.id
44+
}
45+
`, name)
46+
}
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
package sysdig
2+
3+
import (
4+
"context"
5+
"strconv"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
8+
)
9+
10+
func dataSourceSysdigSecureTeam() *schema.Resource {
11+
return &schema.Resource{
12+
Read: dataSourceSysdigSecureTeamRead,
13+
Schema: map[string]*schema.Schema{
14+
"id": {
15+
Type: schema.TypeString,
16+
Required: true,
17+
},
18+
"theme": {
19+
Type: schema.TypeString,
20+
Computed: true,
21+
},
22+
"name": {
23+
Type: schema.TypeString,
24+
Computed: true,
25+
},
26+
"description": {
27+
Type: schema.TypeString,
28+
Computed: true,
29+
},
30+
"scope_by": {
31+
Type: schema.TypeString,
32+
Computed: true,
33+
},
34+
"filter": {
35+
Type: schema.TypeString,
36+
Computed: true,
37+
},
38+
"use_sysdig_capture": {
39+
Type: schema.TypeBool,
40+
Computed: true,
41+
},
42+
"default_team": {
43+
Type: schema.TypeBool,
44+
Computed: true,
45+
},
46+
"user_roles": {
47+
Type: schema.TypeSet,
48+
Computed: true,
49+
Elem: &schema.Resource{
50+
Schema: map[string]*schema.Schema{
51+
"email": {
52+
Type: schema.TypeString,
53+
Computed: true,
54+
},
55+
"role": {
56+
Type: schema.TypeString,
57+
Computed: true,
58+
},
59+
},
60+
},
61+
},
62+
"version": {
63+
Type: schema.TypeInt,
64+
Computed: true,
65+
},
66+
"zone_ids": {
67+
Type: schema.TypeList,
68+
Computed: true,
69+
Elem: &schema.Schema{
70+
Type: schema.TypeInt,
71+
},
72+
},
73+
"all_zones": {
74+
Type: schema.TypeBool,
75+
Computed: true,
76+
},
77+
},
78+
}
79+
}
80+
81+
func dataSourceSysdigSecureTeamRead(d *schema.ResourceData, meta interface{}) error {
82+
clients := meta.(SysdigClients)
83+
client, err := getSecureTeamClient(clients)
84+
if err != nil {
85+
return err
86+
}
87+
88+
id, err := strconv.Atoi(d.Get("id").(string))
89+
if err != nil {
90+
return err
91+
}
92+
93+
team, err := client.GetTeamById(context.Background(), id)
94+
if err != nil {
95+
return err
96+
}
97+
98+
d.SetId(strconv.Itoa(team.ID))
99+
_ = d.Set("name", team.Name)
100+
_ = d.Set("theme", team.Theme)
101+
_ = d.Set("description", team.Description)
102+
_ = d.Set("scope_by", team.Show)
103+
_ = d.Set("filter", team.Filter)
104+
_ = d.Set("use_sysdig_capture", team.CanUseSysdigCapture)
105+
_ = d.Set("default_team", team.DefaultTeam)
106+
_ = d.Set("user_roles", userSecureRolesToSet(team.UserRoles))
107+
_ = d.Set("version", team.Version)
108+
_ = d.Set("zone_ids", team.ZoneIDs)
109+
_ = d.Set("all_zones", team.AllZones)
110+
111+
return nil
112+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
//go:build tf_acc_sysdig_secure || tf_acc_onprem_secure || tf_acc_ibm_secure
2+
3+
package sysdig_test
4+
5+
import (
6+
"fmt"
7+
"testing"
8+
9+
"github.com/draios/terraform-provider-sysdig/sysdig"
10+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
11+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
12+
)
13+
14+
func TestAccDataSourceSysdigSecureTeam(t *testing.T) {
15+
name := fmt.Sprintf("test-secure-team-%s", randomText(5))
16+
resource.Test(t, resource.TestCase{
17+
PreCheck: preCheckAnyEnv(t, SysdigSecureApiTokenEnv),
18+
ProviderFactories: map[string]func() (*schema.Provider, error){
19+
"sysdig": func() (*schema.Provider, error) {
20+
return sysdig.Provider(), nil
21+
},
22+
},
23+
Steps: []resource.TestStep{
24+
{
25+
Config: secureTeamWithName(name),
26+
Check: resource.ComposeTestCheckFunc(
27+
resource.TestCheckResourceAttr("data.sysdig_secure_team.test", "name", name),
28+
),
29+
},
30+
},
31+
})
32+
}
33+
34+
func secureTeamWithName(name string) string {
35+
return fmt.Sprintf(`
36+
resource "sysdig_secure_team" "sample" {
37+
name = "TF test-%s"
38+
description = "A test secure team"
39+
}
40+
41+
data "sysdig_secure_team" "test" {
42+
id = sysdig_secure_team.sample.id
43+
}
44+
`, name)
45+
}

sysdig/data_source_sysdig_secure_zone.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ package sysdig
33
import (
44
"context"
55
"fmt"
6-
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
76
"strconv"
87
"time"
98

9+
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
10+
1011
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1112
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1213
)

sysdig/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ func (p *SysdigProvider) Provider() *schema.Provider {
238238
"sysdig_secure_rule_stateful": dataSourceSysdigSecureRuleStateful(),
239239
"sysdig_secure_rule_stateful_count": dataSourceSysdigSecureRuleStatefulCount(),
240240
"sysdig_secure_zone": dataSourceSysdigSecureZone(),
241+
"sysdig_secure_team": dataSourceSysdigSecureTeam(),
241242

242243
"sysdig_current_user": dataSourceSysdigCurrentUser(),
243244
"sysdig_user": dataSourceSysdigUser(),
@@ -260,6 +261,7 @@ func (p *SysdigProvider) Provider() *schema.Provider {
260261
"sysdig_monitor_notification_channel_ibm_event_notification": dataSourceSysdigMonitorNotificationChannelIBMEventNotification(),
261262
"sysdig_monitor_notification_channel_ibm_function": dataSourceSysdigMonitorNotificationChannelIBMFunction(),
262263
"sysdig_monitor_custom_role_permissions": dataSourceSysdigMonitorCustomRolePermissions(),
264+
"sysdig_monitor_team": dataSourceSysdigMonitorTeam(),
263265
"sysdig_secure_posture_policy": dataSourceSysdigSecurePosturePolicy(),
264266
},
265267
ConfigureContextFunc: p.providerConfigure,

0 commit comments

Comments
 (0)