Skip to content

Commit dd7b79c

Browse files
authored
feat(alerts): allow ibm client for alert v2 and dashboard resources (#391)
* feat(alerts): allow ibm client for alert_v2 resources * feat(dashboard): allow ibm client for sysdig_monitor_dashboard resource
1 parent 0bab7f1 commit dd7b79c

14 files changed

+91
-72
lines changed

sysdig/internal/client/v2/client.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,16 @@ import (
77
"encoding/json"
88
"errors"
99
"fmt"
10-
"github.com/draios/terraform-provider-sysdig/buildinfo"
11-
"github.com/hashicorp/go-retryablehttp"
12-
"github.com/jmespath/go-jmespath"
13-
"github.com/spf13/cast"
1410
"io"
1511
"log"
1612
"net/http"
1713
"net/http/httputil"
1814
"strings"
15+
16+
"github.com/draios/terraform-provider-sysdig/buildinfo"
17+
"github.com/hashicorp/go-retryablehttp"
18+
"github.com/jmespath/go-jmespath"
19+
"github.com/spf13/cast"
1920
)
2021

2122
const (
@@ -48,6 +49,8 @@ type Common interface {
4849

4950
type MonitorCommon interface {
5051
AlertInterface
52+
AlertV2Interface
53+
DashboardInterface
5154
}
5255

5356
type SecureCommon interface {

sysdig/internal/client/v2/sysdig.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,7 @@ type SysdigCommon interface {
2828
type SysdigMonitor interface {
2929
SysdigCommon
3030
MonitorCommon
31-
DashboardInterface
3231
CloudAccountMonitorInterface
33-
AlertV2Interface
3432
}
3533

3634
type SysdigSecure interface {

sysdig/resource_sysdig_monitor_alert_v2_common.go

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package sysdig
22

33
import (
4-
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
54
"regexp"
65
"strings"
76
"time"
87

8+
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
9+
910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1011
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
1112
)
@@ -496,3 +497,21 @@ func updateScopedSegmentedConfigState(d *schema.ResourceData, config *v2.ScopedS
496497

497498
return nil
498499
}
500+
501+
func getAlertV2Client(c SysdigClients) (v2.AlertV2Interface, error) {
502+
var client v2.AlertV2Interface
503+
var err error
504+
switch c.GetClientType() {
505+
case IBMMonitor:
506+
client, err = c.ibmMonitorClient()
507+
if err != nil {
508+
return nil, err
509+
}
510+
default:
511+
client, err = c.sysdigMonitorClientV2()
512+
if err != nil {
513+
return nil, err
514+
}
515+
}
516+
return client, nil
517+
}

sysdig/resource_sysdig_monitor_alert_v2_downtime.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@ package sysdig
22

33
import (
44
"context"
5-
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
65
"strconv"
76
"time"
87

8+
v2 "github.com/draios/terraform-provider-sysdig/sysdig/internal/client/v2"
9+
910
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
1011
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1112
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -47,7 +48,7 @@ func resourceSysdigMonitorAlertV2Downtime() *schema.Resource {
4748
}
4849

4950
func getAlertV2DowntimeClient(c SysdigClients) (v2.AlertV2DowntimeInterface, error) {
50-
return c.sysdigMonitorClientV2()
51+
return getAlertV2Client(c)
5152
}
5253

5354
func resourceSysdigMonitorAlertV2DowntimeCreate(ctx context.Context, d *schema.ResourceData, i interface{}) diag.Diagnostics {

sysdig/resource_sysdig_monitor_alert_v2_downtime_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
//go:build tf_acc_sysdig_monitor
1+
//go:build tf_acc_sysdig_monitor || tf_acc_ibm_monitor
22

33
package sysdig_test
44

55
import (
66
"fmt"
7-
"os"
87
"testing"
98

109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
@@ -18,11 +17,7 @@ func TestAccAlertV2Downtime(t *testing.T) {
1817
rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) }
1918

2019
resource.ParallelTest(t, resource.TestCase{
21-
PreCheck: func() {
22-
if v := os.Getenv("SYSDIG_MONITOR_API_TOKEN"); v == "" {
23-
t.Fatal("SYSDIG_MONITOR_API_TOKEN must be set for acceptance tests")
24-
}
25-
},
20+
PreCheck: preCheckAnyEnv(t, SysdigMonitorApiTokenEnv, SysdigIBMMonitorAPIKeyEnv),
2621
ProviderFactories: map[string]func() (*schema.Provider, error){
2722
"sysdig": func() (*schema.Provider, error) {
2823
return sysdig.Provider(), nil

sysdig/resource_sysdig_monitor_alert_v2_event.go

Lines changed: 3 additions & 2 deletions
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
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -61,7 +62,7 @@ func resourceSysdigMonitorAlertV2Event() *schema.Resource {
6162
}
6263

6364
func getAlertV2EventClient(c SysdigClients) (v2.AlertV2EventInterface, error) {
64-
return c.sysdigMonitorClientV2()
65+
return getAlertV2Client(c)
6566
}
6667

6768
func resourceSysdigMonitorAlertV2EventCreate(ctx context.Context, d *schema.ResourceData, i interface{}) diag.Diagnostics {

sysdig/resource_sysdig_monitor_alert_v2_event_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
//go:build tf_acc_sysdig_monitor
1+
//go:build tf_acc_sysdig_monitor || tf_acc_ibm_monitor
22

33
package sysdig_test
44

55
import (
66
"fmt"
7-
"os"
87
"testing"
98

109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
@@ -18,11 +17,7 @@ func TestAccAlertV2Event(t *testing.T) {
1817
rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) }
1918

2019
resource.ParallelTest(t, resource.TestCase{
21-
PreCheck: func() {
22-
if v := os.Getenv("SYSDIG_MONITOR_API_TOKEN"); v == "" {
23-
t.Fatal("SYSDIG_MONITOR_API_TOKEN must be set for acceptance tests")
24-
}
25-
},
20+
PreCheck: preCheckAnyEnv(t, SysdigMonitorApiTokenEnv, SysdigIBMMonitorAPIKeyEnv),
2621
ProviderFactories: map[string]func() (*schema.Provider, error){
2722
"sysdig": func() (*schema.Provider, error) {
2823
return sysdig.Provider(), nil

sysdig/resource_sysdig_monitor_alert_v2_metric.go

Lines changed: 3 additions & 2 deletions
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
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
@@ -72,7 +73,7 @@ func resourceSysdigMonitorAlertV2Metric() *schema.Resource {
7273
}
7374

7475
func getAlertV2MetricClient(c SysdigClients) (v2.AlertV2MetricInterface, error) {
75-
return c.sysdigMonitorClientV2()
76+
return getAlertV2Client(c)
7677
}
7778

7879
func resourceSysdigMonitorAlertV2MetricCreate(ctx context.Context, d *schema.ResourceData, i interface{}) diag.Diagnostics {

sysdig/resource_sysdig_monitor_alert_v2_metric_test.go

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
1-
//go:build tf_acc_sysdig_monitor
1+
//go:build tf_acc_sysdig_monitor || tf_acc_ibm_monitor
22

33
package sysdig_test
44

55
import (
66
"fmt"
7-
"os"
87
"testing"
98

109
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
@@ -18,11 +17,7 @@ func TestAccAlertV2Metric(t *testing.T) {
1817
rText := func() string { return acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum) }
1918

2019
resource.ParallelTest(t, resource.TestCase{
21-
PreCheck: func() {
22-
if v := os.Getenv("SYSDIG_MONITOR_API_TOKEN"); v == "" {
23-
t.Fatal("SYSDIG_MONITOR_API_TOKEN must be set for acceptance tests")
24-
}
25-
},
20+
PreCheck: preCheckAnyEnv(t, SysdigMonitorApiTokenEnv, SysdigIBMMonitorAPIKeyEnv),
2621
ProviderFactories: map[string]func() (*schema.Provider, error){
2722
"sysdig": func() (*schema.Provider, error) {
2823
return sysdig.Provider(), nil

sysdig/resource_sysdig_monitor_alert_v2_prometheus.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func resourceSysdigMonitorAlertV2Prometheus() *schema.Resource {
4646
}
4747

4848
func getAlertV2PrometheusClient(c SysdigClients) (v2.AlertV2PrometheusInterface, error) {
49-
return c.sysdigMonitorClientV2()
49+
return getAlertV2Client(c)
5050
}
5151

5252
func resourceSysdigMonitorAlertV2PrometheusCreate(ctx context.Context, d *schema.ResourceData, i interface{}) diag.Diagnostics {

0 commit comments

Comments
 (0)