Improve error handling for data sources not found (#1077)

This commit is contained in:
Julien Phalip 2018-02-13 11:19:59 -08:00 committed by Nathan McKinley
parent 65dd41826d
commit 509614e404
7 changed files with 15 additions and 61 deletions

View File

@ -5,7 +5,6 @@ import (
"github.com/hashicorp/terraform/helper/schema"
resourceManagerV2Beta1 "google.golang.org/api/cloudresourcemanager/v2beta1"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleActiveFolder() *schema.Resource {
@ -41,11 +40,7 @@ func dataSourceGoogleActiveFolderRead(d *schema.ResourceData, meta interface{})
}
searchResponse, err := config.clientResourceManagerV2Beta1.Folders.Search(searchRequest).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
return fmt.Errorf("Folder Not Found : %s", d.Get("name"))
}
return fmt.Errorf("Error reading folders: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Folder Not Found : %s", displayName))
}
folders := searchResponse.Folders

View File

@ -2,13 +2,11 @@ package google
import (
"fmt"
"net/http"
"strings"
"github.com/hashicorp/terraform/helper/schema"
"google.golang.org/api/cloudbilling/v1"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleBillingAccount() *schema.Resource {
@ -55,11 +53,7 @@ func dataSourceBillingAccountRead(d *schema.ResourceData, meta interface{}) erro
if v, ok := d.GetOk("billing_account"); ok {
resp, err := config.clientBilling.BillingAccounts.Get(canonicalBillingAccountName(v.(string))).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == http.StatusNotFound {
return fmt.Errorf("Billing account not found: %s", v)
}
return fmt.Errorf("Error reading billing account: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Billing Account Not Found : %s", v))
}
if openOk && resp.Open != open.(bool) {

View File

@ -5,7 +5,6 @@ import (
"strconv"
"github.com/hashicorp/terraform/helper/schema"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleComputeAddress() *schema.Resource {
@ -59,17 +58,11 @@ func dataSourceGoogleComputeAddressRead(d *schema.ResourceData, meta interface{}
if err != nil {
return err
}
name := d.Get("name").(string)
address, err := config.clientCompute.Addresses.Get(
project, region, d.Get("name").(string)).Do()
address, err := config.clientCompute.Addresses.Get(project, region, name).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
// The resource doesn't exist anymore
return fmt.Errorf("Address Not Found")
}
return fmt.Errorf("Error reading Address: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Address Not Found : %s", name))
}
d.Set("address", address.Address)

View File

@ -5,7 +5,6 @@ import (
"strconv"
"github.com/hashicorp/terraform/helper/schema"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleComputeGlobalAddress() *schema.Resource {
@ -49,17 +48,10 @@ func dataSourceGoogleComputeGlobalAddressRead(d *schema.ResourceData, meta inter
if err != nil {
return err
}
address, err := config.clientCompute.GlobalAddresses.Get(
project, d.Get("name").(string)).Do()
name := d.Get("name").(string)
address, err := config.clientCompute.GlobalAddresses.Get(project, name).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
// The resource doesn't exist anymore
return fmt.Errorf("Global Address Not Found")
}
return fmt.Errorf("Error reading Global Address: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Global Address Not Found : %s", name))
}
d.Set("address", address.Address)

View File

@ -4,7 +4,6 @@ import (
"fmt"
"github.com/hashicorp/terraform/helper/schema"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleComputeNetwork() *schema.Resource {
@ -53,16 +52,10 @@ func dataSourceGoogleComputeNetworkRead(d *schema.ResourceData, meta interface{}
if err != nil {
return err
}
network, err := config.clientCompute.Networks.Get(
project, d.Get("name").(string)).Do()
name := d.Get("name").(string)
network, err := config.clientCompute.Networks.Get(project, name).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
// The resource doesn't exist anymore
return fmt.Errorf("Network Not Found : %s", d.Get("name"))
}
return fmt.Errorf("Error reading network: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Network Not Found : %s", name))
}
d.Set("gateway_ipv4", network.GatewayIPv4)
d.Set("self_link", network.SelfLink)

View File

@ -4,7 +4,6 @@ import (
"fmt"
"github.com/hashicorp/terraform/helper/schema"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleComputeSubnetwork() *schema.Resource {
@ -83,17 +82,11 @@ func dataSourceGoogleComputeSubnetworkRead(d *schema.ResourceData, meta interfac
if err != nil {
return err
}
name := d.Get("name").(string)
subnetwork, err := config.clientCompute.Subnetworks.Get(
project, region, d.Get("name").(string)).Do()
subnetwork, err := config.clientCompute.Subnetworks.Get(project, region, name).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == 404 {
// The resource doesn't exist anymore
return fmt.Errorf("Subnetwork Not Found")
}
return fmt.Errorf("Error reading Subnetwork: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Subnetwork Not Found : %s", name))
}
d.Set("ip_cidr_range", subnetwork.IpCidrRange)

View File

@ -2,13 +2,11 @@ package google
import (
"fmt"
"net/http"
"strings"
"github.com/hashicorp/terraform/helper/schema"
"google.golang.org/api/cloudresourcemanager/v1"
"google.golang.org/api/googleapi"
)
func dataSourceGoogleOrganization() *schema.Resource {
@ -70,11 +68,7 @@ func dataSourceOrganizationRead(d *schema.ResourceData, meta interface{}) error
} else if v, ok := d.GetOk("organization"); ok {
resp, err := config.clientResourceManager.Organizations.Get(canonicalOrganizationName(v.(string))).Do()
if err != nil {
if gerr, ok := err.(*googleapi.Error); ok && gerr.Code == http.StatusNotFound {
return fmt.Errorf("Organization not found: %s", v)
}
return fmt.Errorf("Error reading organization: %s", err)
return handleNotFoundError(err, d, fmt.Sprintf("Organization Not Found : %s", v))
}
organization = resp