Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
142 changes: 142 additions & 0 deletions sysdig/data_source_sysdig_monitor_team.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
package sysdig

import (
"context"
"strconv"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func dataSourceSysdigMonitorTeam() *schema.Resource {
return &schema.Resource{
ReadContext: dataSourceSysdigMonitorTeamRead,
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeString,
Required: true,
},
"theme": {
Type: schema.TypeString,
Computed: true,
},
"name": {
Type: schema.TypeString,
Computed: true,
},
"description": {
Type: schema.TypeString,
Computed: true,
},
"scope_by": {
Type: schema.TypeString,
Computed: true,
},
"filter": {
Type: schema.TypeString,
Computed: true,
},
"can_use_sysdig_capture": {
Type: schema.TypeBool,
Computed: true,
},
"can_see_infrastructure_events": {
Type: schema.TypeBool,
Computed: true,
},
"can_use_aws_data": {
Type: schema.TypeBool,
Computed: true,
},
"default_team": {
Type: schema.TypeBool,
Computed: true,
},
"enable_ibm_platform_metrics": {
Type: schema.TypeBool,
Computed: true,
},
"ibm_platform_metrics": {
Type: schema.TypeString,
Computed: true,
},
"user_roles": {
Type: schema.TypeSet,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"email": {
Type: schema.TypeString,
Computed: true,
},
"role": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
"entrypoint": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"type": {
Type: schema.TypeString,
Computed: true,
},
"selection": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
"version": {
Type: schema.TypeInt,
Computed: true,
},
},
}
}

func dataSourceSysdigMonitorTeamRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
clients := meta.(SysdigClients)
client, err := getMonitorTeamClient(clients)
if err != nil {
return diag.FromErr(err)
}

id, err := strconv.Atoi(d.Get("id").(string))
if err != nil {
return diag.FromErr(err)
}

team, err := client.GetTeamById(ctx, id)
if err != nil {
return diag.FromErr(err)
}

d.SetId(strconv.Itoa(team.ID))
_ = d.Set("name", team.Name)
_ = d.Set("theme", team.Theme)
_ = d.Set("description", team.Description)
_ = d.Set("scope_by", team.Show)
_ = d.Set("filter", team.Filter)
_ = d.Set("can_use_sysdig_capture", team.CanUseSysdigCapture)
_ = d.Set("can_see_infrastructure_events", team.CanUseCustomEvents)
_ = d.Set("can_use_aws_data", team.CanUseAwsMetrics)
_ = d.Set("default_team", team.DefaultTeam)
_ = d.Set("user_roles", userMonitorRolesToSet(team.UserRoles))
_ = d.Set("entrypoint", entrypointToSet(team.EntryPoint))
_ = d.Set("version", team.Version)

var ibmPlatformMetrics *string
if team.NamespaceFilters != nil {
ibmPlatformMetrics = team.NamespaceFilters.IBMPlatformMetrics
}
_ = d.Set("enable_ibm_platform_metrics", team.CanUseBeaconMetrics)
_ = d.Set("ibm_platform_metrics", ibmPlatformMetrics)

return nil
}
53 changes: 53 additions & 0 deletions sysdig/data_source_sysdig_monitor_team_ibm_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
//go:build tf_acc_ibm_monitor

package sysdig_test

import (
"fmt"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"

"github.com/draios/terraform-provider-sysdig/sysdig"
)

func TestAccDataSourceSysdigMonitorTeamIBM(t *testing.T) {
name := fmt.Sprintf("test-monitor-team-%s", randomText(5))
resource.Test(t, resource.TestCase{
PreCheck: preCheckAnyEnv(t, SysdigIBMMonitorAPIKeyEnv),
ProviderFactories: map[string]func() (*schema.Provider, error){
"sysdig": func() (*schema.Provider, error) {
return sysdig.Provider(), nil
},
},
Steps: []resource.TestStep{
{
Config: monitorTeamWithPlatformMetricsAndDatasourceIBM(name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "name", name),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "enable_ibm_platform_metrics", "true"),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "ibm_platform_metrics", "foo in (\"0\") and bar in (\"3\")"),
),
},
},
})
}

func monitorTeamWithPlatformMetricsAndDatasourceIBM(name string) string {
return fmt.Sprintf(`
resource "sysdig_monitor_team" "sample" {
name = "%s"
enable_ibm_platform_metrics = true
ibm_platform_metrics = "foo in (\"0\") and bar in (\"3\")"

entrypoint {
type = "Dashboards"
}
}

data "sysdig_monitor_team" "test" {
id = sysdig_monitor_team.sample.id
}
`, name)
}
61 changes: 61 additions & 0 deletions sysdig/data_source_sysdig_monitor_team_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
//go:build tf_acc_sysdig_monitor || tf_acc_onprem_monitor

package sysdig_test

import (
"fmt"
"testing"

"github.com/draios/terraform-provider-sysdig/sysdig"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func TestAccDataSourceSysdigMonitorTeam(t *testing.T) {
name := fmt.Sprintf("test-monitor-team-%s", randomText(5))
resource.Test(t, resource.TestCase{
PreCheck: preCheckAnyEnv(t, SysdigMonitorApiTokenEnv),
ProviderFactories: map[string]func() (*schema.Provider, error){
"sysdig": func() (*schema.Provider, error) {
return sysdig.Provider(), nil
},
},
Steps: []resource.TestStep{
{
Config: monitorTeamResourceAndDatasource(name),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "name", name),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "description", "A monitor team"),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "scope_by", "host"),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "filter", "container.image.repo = \"sysdig/agent\""),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_use_sysdig_capture", "true"),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_see_infrastructure_events", "true"),
resource.TestCheckResourceAttr("data.sysdig_monitor_team.test", "can_use_aws_data", "true"),
),
},
},
})
}

func monitorTeamResourceAndDatasource(name string) string {
return fmt.Sprintf(`
resource "sysdig_monitor_team" "sample" {
name = "%s"
description = "A monitor team"
scope_by = "host"
filter = "container.image.repo = \"sysdig/agent\""
can_use_sysdig_capture = true
can_see_infrastructure_events = true
can_use_aws_data = true

entrypoint {
type = "Dashboards"
}
}

data "sysdig_monitor_team" "test" {
id = sysdig_monitor_team.sample.id
}
`, name)
}
59 changes: 59 additions & 0 deletions sysdig/data_source_sysdig_monitor_teams.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package sysdig

import (
"context"

"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func dataSourceSysdigMonitorTeams() *schema.Resource {
return &schema.Resource{
ReadContext: dataSourceSysdigMonitorTeamsRead,
Schema: map[string]*schema.Schema{
"teams": {
Type: schema.TypeList,
Computed: true,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"id": {
Type: schema.TypeInt,
Computed: true,
},
"name": {
Type: schema.TypeString,
Computed: true,
},
},
},
},
},
}
}

func dataSourceSysdigMonitorTeamsRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
clients := meta.(SysdigClients)
client, err := getMonitorTeamClient(clients)
if err != nil {
return diag.FromErr(err)
}

teams, err := client.ListTeams(ctx)
if err != nil {
return diag.FromErr(err)
}

var result []map[string]interface{}
for _, team := range teams {
result = append(result, map[string]interface{}{
"id": team.ID,
"name": team.Name,
})
}
d.SetId("sysdig_monitor_teams")
if err := d.Set("teams", result); err != nil {
return diag.FromErr(err)
}

return nil
}
50 changes: 50 additions & 0 deletions sysdig/data_source_sysdig_monitor_teams_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
//go:build tf_acc_sysdig_monitor || tf_acc_onprem_monitor || tf_acc_ibm_monitor

package sysdig_test

import (
"fmt"
"github.com/draios/terraform-provider-sysdig/sysdig"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
)

func TestAccDataSourceSysdigMonitorTeams(t *testing.T) {
resource.Test(t, resource.TestCase{
PreCheck: preCheckAnyEnv(t, SysdigMonitorApiTokenEnv, SysdigIBMMonitorAPIKeyEnv),
ProviderFactories: map[string]func() (*schema.Provider, error){
"sysdig": func() (*schema.Provider, error) {
return sysdig.Provider(), nil
},
},
Steps: []resource.TestStep{
{
Config: testAccDataSourceSysdigMonitorTeamsConfig(randomText(10)),
Check: resource.ComposeTestCheckFunc(
resource.TestCheckResourceAttrSet("data.sysdig_monitor_teams.test", "teams.0.id"),
),
},
},
})
}

func testAccDataSourceSysdigMonitorTeamsConfig(name string) string {
return fmt.Sprintf(`
resource "sysdig_monitor_team" "sample" {
name = "%s"
description = "A monitor secure team"
scope_by = "host"
filter = "container.image.repo = \"sysdig/agent\""
can_use_sysdig_capture = true
can_see_infrastructure_events = true

entrypoint {
type = "Dashboards"
}
}

data "sysdig_monitor_teams" "test" {}
`, name)
}
Loading
Loading