Skip to content

Commit ad88851

Browse files
Fix: Ensure that we are reading write only data (#603)
* Adding support for querying members by email * Fixing write only configuration
1 parent c244207 commit ad88851

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

signalfx/resource_signalfx_pagerduty_integration.go

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,12 @@ package signalfx
66
import (
77
"context"
88
"encoding/json"
9+
"errors"
910
"fmt"
1011
"log"
1112
"strings"
1213

14+
"github.com/hashicorp/go-cty/cty"
1315
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1416
"github.com/signalfx/signalfx-go/integration"
1517
)
@@ -74,18 +76,31 @@ func pagerDutyIntegrationAPIToTF(d *schema.ResourceData, pd *integration.PagerDu
7476
return nil
7577
}
7678

77-
func getPayloadPagerDutyIntegration(d *schema.ResourceData) *integration.PagerDutyIntegration {
79+
func getPayloadPagerDutyIntegration(d *schema.ResourceData) (*integration.PagerDutyIntegration, error) {
80+
key, diags := d.GetRawConfigAt(cty.GetAttrPath("api_key"))
81+
if diags.HasError() {
82+
return nil, errors.New("issue reading raw config")
83+
}
84+
85+
if !key.Type().Equals(cty.String) {
86+
return nil, errors.New("api key not stored as string")
87+
}
88+
7889
return &integration.PagerDutyIntegration{
7990
Type: "PagerDuty",
8091
Name: d.Get("name").(string),
8192
Enabled: d.Get("enabled").(bool),
82-
ApiKey: d.Get("api_key").(string),
83-
}
93+
ApiKey: key.AsString(),
94+
}, nil
8495
}
8596

8697
func integrationPagerDutyCreate(d *schema.ResourceData, meta interface{}) error {
8798
config := meta.(*signalfxConfig)
88-
payload := getPayloadPagerDutyIntegration(d)
99+
100+
payload, err := getPayloadPagerDutyIntegration(d)
101+
if err != nil {
102+
return err
103+
}
89104

90105
debugOutput, _ := json.Marshal(payload)
91106
log.Printf("[DEBUG] SignalFx: Create PagerDuty Integration Payload: %s", string(debugOutput))
@@ -103,7 +118,11 @@ func integrationPagerDutyCreate(d *schema.ResourceData, meta interface{}) error
103118

104119
func integrationPagerDutyUpdate(d *schema.ResourceData, meta interface{}) error {
105120
config := meta.(*signalfxConfig)
106-
payload := getPayloadPagerDutyIntegration(d)
121+
122+
payload, err := getPayloadPagerDutyIntegration(d)
123+
if err != nil {
124+
return err
125+
}
107126

108127
debugOutput, _ := json.Marshal(payload)
109128
log.Printf("[DEBUG] SignalFx: Update PagerDuty Integration Payload: %s", string(debugOutput))

0 commit comments

Comments
 (0)