Skip to content

Commit bac59eb

Browse files
heimwehstack72
authored andcommitted
provider/pagerduty Add delete support to pagerduty_service_integration (hashicorp#10891)
* Vendor update * Add delete support * Update documentation
1 parent 82288c6 commit bac59eb

8 files changed

Lines changed: 80 additions & 17 deletions

File tree

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package pagerduty
2+
3+
import "strings"
4+
5+
func isNotFound(err error) bool {
6+
if strings.Contains(err.Error(), "Failed call API endpoint. HTTP response code: 404") {
7+
return true
8+
}
9+
10+
return false
11+
}

builtin/providers/pagerduty/resource_pagerduty_service_integration.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@ func resourcePagerDutyServiceIntegration() *schema.Resource {
1212
Create: resourcePagerDutyServiceIntegrationCreate,
1313
Read: resourcePagerDutyServiceIntegrationRead,
1414
Update: resourcePagerDutyServiceIntegrationUpdate,
15-
// NOTE: It's currently not possible to delete integrations via the API.
16-
// Therefore it needs to be manually removed from the Web UI.
1715
Delete: resourcePagerDutyServiceIntegrationDelete,
1816
Schema: map[string]*schema.Schema{
1917
"name": {
@@ -123,6 +121,10 @@ func resourcePagerDutyServiceIntegrationRead(d *schema.ResourceData, meta interf
123121
serviceIntegration, err := client.GetIntegration(service, d.Id(), *o)
124122

125123
if err != nil {
124+
if isNotFound(err) {
125+
d.SetId("")
126+
return nil
127+
}
126128
return err
127129
}
128130

@@ -153,8 +155,20 @@ func resourcePagerDutyServiceIntegrationUpdate(d *schema.ResourceData, meta inte
153155
}
154156

155157
func resourcePagerDutyServiceIntegrationDelete(d *schema.ResourceData, meta interface{}) error {
158+
client := meta.(*pagerduty.Client)
159+
160+
service := d.Get("service").(string)
161+
156162
log.Printf("[INFO] Removing PagerDuty service integration %s", d.Id())
157163

164+
if err := client.DeleteIntegration(service, d.Id()); err != nil {
165+
if isNotFound(err) {
166+
d.SetId("")
167+
return nil
168+
}
169+
return err
170+
}
171+
158172
d.SetId("")
159173

160174
return nil

vendor/github.com/PagerDuty/go-pagerduty/incident.go

Lines changed: 30 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/PagerDuty/go-pagerduty/log_entry.go

Lines changed: 18 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/PagerDuty/go-pagerduty/service.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/PagerDuty/go-pagerduty/webhook.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/vendor.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -333,10 +333,10 @@
333333
"revisionTime": "2016-11-03T18:56:17Z"
334334
},
335335
{
336-
"checksumSHA1": "yAhUY67XCnf+0jpIsQ53lirk+GM=",
336+
"checksumSHA1": "wzzdybMOEWsQ/crdkpTLneeob2U=",
337337
"path": "github.com/PagerDuty/go-pagerduty",
338-
"revision": "b98d93d395cd13b0438ad908b5f7c608f1f74c38",
339-
"revisionTime": "2016-12-16T21:25:03Z"
338+
"revision": "317bca1364fc322f4d6f8eeb276e931b6667b43b",
339+
"revisionTime": "2016-12-20T22:05:08Z"
340340
},
341341
{
342342
"path": "github.com/Unknwon/com",

website/source/docs/providers/pagerduty/r/service_integration.html.markdown

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@ description: |-
1010

1111
A [service integration](https://v2.developer.pagerduty.com/v2/page/api-reference#!/Services/post_services_id_integrations) is an integration that belongs to a service.
1212

13-
`Note`: A service integration `cannot` be deleted via Terraform nor the PagerDuty API so if you remove a service integration, be sure to remove it from the PagerDuty Web UI afterwards. However, if you delete the `service` attached to the `integration`, the integration will be removed.
14-
15-
1613
## Example Usage
1714

1815
```

0 commit comments

Comments
 (0)