provider/pagerduty: Import support for service integrations (#12141)
* Remove custom imports * Add import support for service integrations
This commit is contained in:
parent
cd56e6f071
commit
229a1343b4
|
@ -0,0 +1,28 @@
|
||||||
|
package pagerduty
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform/helper/resource"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestAccPagerDutyServiceIntegration_import(t *testing.T) {
|
||||||
|
resourceName := "pagerduty_service_integration.foo"
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckPagerDutyServiceIntegrationDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccCheckPagerDutyServiceIntegrationConfig,
|
||||||
|
},
|
||||||
|
|
||||||
|
resource.TestStep{
|
||||||
|
ResourceName: resourceName,
|
||||||
|
ImportState: true,
|
||||||
|
ImportStateVerify: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
|
@ -14,7 +14,7 @@ func resourcePagerDutyAddon() *schema.Resource {
|
||||||
Update: resourcePagerDutyAddonUpdate,
|
Update: resourcePagerDutyAddonUpdate,
|
||||||
Delete: resourcePagerDutyAddonDelete,
|
Delete: resourcePagerDutyAddonDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourcePagerDutyAddonImport,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
|
@ -105,10 +105,3 @@ func resourcePagerDutyAddonDelete(d *schema.ResourceData, meta interface{}) erro
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourcePagerDutyAddonImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
if err := resourcePagerDutyAddonRead(d, meta); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ func resourcePagerDutyEscalationPolicy() *schema.Resource {
|
||||||
Update: resourcePagerDutyEscalationPolicyUpdate,
|
Update: resourcePagerDutyEscalationPolicyUpdate,
|
||||||
Delete: resourcePagerDutyEscalationPolicyDelete,
|
Delete: resourcePagerDutyEscalationPolicyDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourcePagerDutyEscalationPolicyImport,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
|
@ -167,10 +167,3 @@ func resourcePagerDutyEscalationPolicyDelete(d *schema.ResourceData, meta interf
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourcePagerDutyEscalationPolicyImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
if err := resourcePagerDutyEscalationPolicyRead(d, meta); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ func resourcePagerDutySchedule() *schema.Resource {
|
||||||
Update: resourcePagerDutyScheduleUpdate,
|
Update: resourcePagerDutyScheduleUpdate,
|
||||||
Delete: resourcePagerDutyScheduleDelete,
|
Delete: resourcePagerDutyScheduleDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourcePagerDutyScheduleImport,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
|
@ -196,10 +196,3 @@ func resourcePagerDutyScheduleDelete(d *schema.ResourceData, meta interface{}) e
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourcePagerDutyScheduleImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
if err := resourcePagerDutyScheduleRead(d, meta); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ func resourcePagerDutyService() *schema.Resource {
|
||||||
Update: resourcePagerDutyServiceUpdate,
|
Update: resourcePagerDutyServiceUpdate,
|
||||||
Delete: resourcePagerDutyServiceDelete,
|
Delete: resourcePagerDutyServiceDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourcePagerDutyServiceImport,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
|
@ -303,11 +303,3 @@ func resourcePagerDutyServiceDelete(d *schema.ResourceData, meta interface{}) er
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourcePagerDutyServiceImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
if err := resourcePagerDutyServiceRead(d, meta); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package pagerduty
|
package pagerduty
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
pagerduty "github.com/PagerDuty/go-pagerduty"
|
pagerduty "github.com/PagerDuty/go-pagerduty"
|
||||||
|
@ -13,6 +14,9 @@ func resourcePagerDutyServiceIntegration() *schema.Resource {
|
||||||
Read: resourcePagerDutyServiceIntegrationRead,
|
Read: resourcePagerDutyServiceIntegrationRead,
|
||||||
Update: resourcePagerDutyServiceIntegrationUpdate,
|
Update: resourcePagerDutyServiceIntegrationUpdate,
|
||||||
Delete: resourcePagerDutyServiceIntegrationDelete,
|
Delete: resourcePagerDutyServiceIntegrationDelete,
|
||||||
|
Importer: &schema.ResourceImporter{
|
||||||
|
State: resourcePagerDutyServiceIntegrationImport,
|
||||||
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
Type: schema.TypeString,
|
Type: schema.TypeString,
|
||||||
|
@ -130,8 +134,8 @@ func resourcePagerDutyServiceIntegrationRead(d *schema.ResourceData, meta interf
|
||||||
|
|
||||||
d.Set("name", serviceIntegration.Name)
|
d.Set("name", serviceIntegration.Name)
|
||||||
d.Set("type", serviceIntegration.Type)
|
d.Set("type", serviceIntegration.Type)
|
||||||
d.Set("service", serviceIntegration.Service)
|
d.Set("service", serviceIntegration.Service.ID)
|
||||||
d.Set("vendor", serviceIntegration.Vendor)
|
d.Set("vendor", serviceIntegration.Vendor.ID)
|
||||||
d.Set("integration_key", serviceIntegration.IntegrationKey)
|
d.Set("integration_key", serviceIntegration.IntegrationKey)
|
||||||
d.Set("integration_email", serviceIntegration.IntegrationEmail)
|
d.Set("integration_email", serviceIntegration.IntegrationEmail)
|
||||||
|
|
||||||
|
@ -173,3 +177,30 @@ func resourcePagerDutyServiceIntegrationDelete(d *schema.ResourceData, meta inte
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func resourcePagerDutyServiceIntegrationImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
||||||
|
client := meta.(*pagerduty.Client)
|
||||||
|
|
||||||
|
resp, err := client.ListServices(pagerduty.ListServiceOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return []*schema.ResourceData{}, err
|
||||||
|
}
|
||||||
|
|
||||||
|
var serviceID string
|
||||||
|
|
||||||
|
for _, service := range resp.Services {
|
||||||
|
for _, integration := range service.Integrations {
|
||||||
|
if integration.ID == d.Id() {
|
||||||
|
serviceID = service.ID
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if serviceID == "" {
|
||||||
|
return []*schema.ResourceData{}, fmt.Errorf("Error importing pagerduty_service_integration. Could not locate a service ID for the integration")
|
||||||
|
}
|
||||||
|
|
||||||
|
d.Set("service", serviceID)
|
||||||
|
|
||||||
|
return []*schema.ResourceData{d}, nil
|
||||||
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ func resourcePagerDutyTeam() *schema.Resource {
|
||||||
Update: resourcePagerDutyTeamUpdate,
|
Update: resourcePagerDutyTeamUpdate,
|
||||||
Delete: resourcePagerDutyTeamDelete,
|
Delete: resourcePagerDutyTeamDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourcePagerDutyTeamImport,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
|
@ -105,10 +105,3 @@ func resourcePagerDutyTeamDelete(d *schema.ResourceData, meta interface{}) error
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourcePagerDutyTeamImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
if err := resourcePagerDutyTeamRead(d, meta); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ func resourcePagerDutyUser() *schema.Resource {
|
||||||
Update: resourcePagerDutyUserUpdate,
|
Update: resourcePagerDutyUserUpdate,
|
||||||
Delete: resourcePagerDutyUserDelete,
|
Delete: resourcePagerDutyUserDelete,
|
||||||
Importer: &schema.ResourceImporter{
|
Importer: &schema.ResourceImporter{
|
||||||
State: resourcePagerDutyUserImport,
|
State: schema.ImportStatePassthrough,
|
||||||
},
|
},
|
||||||
Schema: map[string]*schema.Schema{
|
Schema: map[string]*schema.Schema{
|
||||||
"name": {
|
"name": {
|
||||||
|
@ -227,10 +227,3 @@ func resourcePagerDutyUserDelete(d *schema.ResourceData, meta interface{}) error
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourcePagerDutyUserImport(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
|
|
||||||
if err := resourcePagerDutyUserRead(d, meta); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return []*schema.ResourceData{d}, nil
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in New Issue