From e91527af09ef6e2b112a60de57fe6c9caf532ef9 Mon Sep 17 00:00:00 2001 From: Modular Magician Date: Mon, 11 Sep 2023 17:16:43 +0000 Subject: [PATCH] existing Data Sources now return errors on 404s (#8858) Signed-off-by: Modular Magician --- .changelog/8858.txt | 3 +++ ...e_access_approval_folder_service_account.go | 2 +- ...ss_approval_organization_service_account.go | 2 +- ..._access_approval_project_service_account.go | 2 +- .../alloydb/data_source_alloydb_locations.go | 4 ++-- ..._source_alloydb_supported_database_flags.go | 4 ++-- ...oogle_app_engine_default_service_account.go | 2 +- ...data_source_artifact_registry_repository.go | 7 ++++++- ..._source_google_beyondcorp_app_connection.go | 14 ++++++++++++-- ...a_source_google_beyondcorp_app_connector.go | 14 ++++++++++++-- ...ata_source_google_beyondcorp_app_gateway.go | 14 ++++++++++++-- ..._google_bigquery_default_service_account.go | 2 +- .../data_source_google_billing_account.go | 2 +- .../data_source_google_cloudbuild_trigger.go | 13 +++++++++++-- ...ta_source_google_cloudfunctions_function.go | 6 ++++++ ...a_source_google_cloudfunctions2_function.go | 7 ++++++- ..._source_cloud_identity_group_memberships.go | 2 +- .../data_source_cloud_identity_groups.go | 2 +- .../cloudrun/data_source_cloud_run_service.go | 11 ++++++++++- .../data_source_google_composer_environment.go | 13 +++++++++++-- .../data_source_compute_health_check.go | 13 ++++++++++++- ...ta_source_compute_network_endpoint_group.go | 18 +++++++++++++++--- .../data_source_compute_network_peering.go | 14 ++++++++++++-- .../data_source_google_compute_address.go | 6 ++++-- ...ata_source_google_compute_backend_bucket.go | 14 ++++++++++++-- ...ta_source_google_compute_backend_service.go | 14 ++++++++++++-- ...e_google_compute_default_service_account.go | 4 ++-- .../compute/data_source_google_compute_disk.go | 11 ++++++++++- ...ta_source_google_compute_forwarding_rule.go | 14 ++++++++++++-- ...ata_source_google_compute_global_address.go | 6 ++++-- ...ata_source_google_compute_ha_vpn_gateway.go | 14 ++++++++++++-- .../data_source_google_compute_instance.go | 4 +++- ...ata_source_google_compute_instance_group.go | 17 ++++++++++++++--- .../data_source_google_compute_network.go | 7 +++++-- ...rce_google_compute_region_instance_group.go | 6 +++--- ...le_compute_region_network_endpoint_group.go | 16 +++++++++++++--- ...ce_google_compute_region_ssl_certificate.go | 13 +++++++++++-- ...ta_source_google_compute_resource_policy.go | 14 ++++++++++++-- .../data_source_google_compute_router.go | 12 +++++++++++- .../data_source_google_compute_router_nat.go | 11 ++++++++++- ...ta_source_google_compute_ssl_certificate.go | 14 ++++++++++++-- .../data_source_google_compute_ssl_policy.go | 14 ++++++++++++-- .../data_source_google_compute_subnetwork.go | 5 +++-- .../data_source_google_compute_vpn_gateway.go | 5 +++-- ...ce_google_global_compute_forwarding_rule.go | 14 ++++++++++++-- .../data_source_dataproc_metastore_service.go | 10 +++++++++- google/services/dns/data_source_dns_keys.go | 5 +---- google/services/iap/data_source_iap_client.go | 10 +++++++++- .../kms/data_source_google_kms_crypto_key.go | 15 +++++++++++++-- ...ata_source_google_kms_crypto_key_version.go | 4 ++-- .../kms/data_source_google_kms_key_ring.go | 15 +++++++++++++-- ...rce_google_logging_project_cmek_settings.go | 2 +- .../logging/data_source_google_logging_sink.go | 2 +- .../data_source_certificate_authority.go | 2 +- .../pubsub/data_source_pubsub_subscription.go | 10 +++++++++- .../pubsub/data_source_pubsub_topic.go | 10 +++++++++- .../redis/data_source_redis_instance.go | 12 +++++++++++- .../data_source_google_folder.go | 5 +++-- ...source_google_folder_organization_policy.go | 13 +++++++++++-- .../data_source_google_iam_role.go | 2 +- .../data_source_google_organization.go | 2 +- ...ource_google_project_organization_policy.go | 13 +++++++++++-- .../data_source_google_project_service.go | 10 +++++++++- .../data_source_google_service_account.go | 2 +- .../data_source_google_service_account_key.go | 2 +- .../data_source_secret_manager_secret.go | 10 +++++++++- .../data_source_sourcerepo_repository.go | 10 +++++++++- .../spanner/data_source_spanner_instance.go | 10 +++++++++- .../services/sql/data_source_sql_database.go | 6 +++++- .../sql/data_source_sql_database_instance.go | 12 +++++++++++- .../services/sql/data_source_sql_databases.go | 2 +- ...e_google_storage_project_service_account.go | 2 +- ...storage_transfer_project_service_account.go | 2 +- .../vertexai/data_source_vertex_ai_index.go | 10 +++++++++- .../data_source_vpc_access_connector.go | 10 +++++++++- google/transport/transport.go | 9 +++++++++ 76 files changed, 522 insertions(+), 113 deletions(-) create mode 100644 .changelog/8858.txt diff --git a/.changelog/8858.txt b/.changelog/8858.txt new file mode 100644 index 00000000000..2a82cdafc6c --- /dev/null +++ b/.changelog/8858.txt @@ -0,0 +1,3 @@ +```release-note:breaking-change + +``` diff --git a/google/services/accessapproval/data_source_access_approval_folder_service_account.go b/google/services/accessapproval/data_source_access_approval_folder_service_account.go index 33e3406d667..e281ee15964 100644 --- a/google/services/accessapproval/data_source_access_approval_folder_service_account.go +++ b/google/services/accessapproval/data_source_access_approval_folder_service_account.go @@ -58,7 +58,7 @@ func dataSourceAccessApprovalFolderServiceAccountRead(d *schema.ResourceData, me UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("AccessApprovalFolderServiceAccount %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("AccessApprovalFolderServiceAccount %q", d.Id()), url) } if err := d.Set("name", res["name"]); err != nil { diff --git a/google/services/accessapproval/data_source_access_approval_organization_service_account.go b/google/services/accessapproval/data_source_access_approval_organization_service_account.go index 7d6011a9d1a..0c52d3c32ec 100644 --- a/google/services/accessapproval/data_source_access_approval_organization_service_account.go +++ b/google/services/accessapproval/data_source_access_approval_organization_service_account.go @@ -58,7 +58,7 @@ func dataSourceAccessApprovalOrganizationServiceAccountRead(d *schema.ResourceDa UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("AccessApprovalOrganizationServiceAccount %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("AccessApprovalOrganizationServiceAccount %q", d.Id()), url) } if err := d.Set("name", res["name"]); err != nil { diff --git a/google/services/accessapproval/data_source_access_approval_project_service_account.go b/google/services/accessapproval/data_source_access_approval_project_service_account.go index 761f3ccc756..17fc0bc0b00 100644 --- a/google/services/accessapproval/data_source_access_approval_project_service_account.go +++ b/google/services/accessapproval/data_source_access_approval_project_service_account.go @@ -58,7 +58,7 @@ func dataSourceAccessApprovalProjectServiceAccountRead(d *schema.ResourceData, m UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("AccessApprovalProjectServiceAccount %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("AccessApprovalProjectServiceAccount %q", d.Id()), url) } if err := d.Set("name", res["name"]); err != nil { diff --git a/google/services/alloydb/data_source_alloydb_locations.go b/google/services/alloydb/data_source_alloydb_locations.go index 8351f5bce24..81776b1210a 100644 --- a/google/services/alloydb/data_source_alloydb_locations.go +++ b/google/services/alloydb/data_source_alloydb_locations.go @@ -96,7 +96,7 @@ func dataSourceAlloydbLocationsRead(d *schema.ResourceData, meta interface{}) er UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Locations %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Locations %q", d.Id()), url) } var locations []map[string]interface{} for { @@ -144,7 +144,7 @@ func dataSourceAlloydbLocationsRead(d *schema.ResourceData, meta interface{}) er UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Locations %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Locations %q", d.Id()), url) } } diff --git a/google/services/alloydb/data_source_alloydb_supported_database_flags.go b/google/services/alloydb/data_source_alloydb_supported_database_flags.go index 3687efd7c7a..722760fce96 100644 --- a/google/services/alloydb/data_source_alloydb_supported_database_flags.go +++ b/google/services/alloydb/data_source_alloydb_supported_database_flags.go @@ -149,7 +149,7 @@ func dataSourceAlloydbSupportedDatabaseFlagsRead(d *schema.ResourceData, meta in UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("SupportedDatabaseFlags %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("SupportedDatabaseFlags %q", d.Id()), url) } var supportedDatabaseFlags []map[string]interface{} for { @@ -223,7 +223,7 @@ func dataSourceAlloydbSupportedDatabaseFlagsRead(d *schema.ResourceData, meta in UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("SupportedDatabaseFlags %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("SupportedDatabaseFlags %q", d.Id()), url) } } if err := d.Set("supported_database_flags", supportedDatabaseFlags); err != nil { diff --git a/google/services/appengine/data_source_google_app_engine_default_service_account.go b/google/services/appengine/data_source_google_app_engine_default_service_account.go index 33695e4d259..6e643afd980 100644 --- a/google/services/appengine/data_source_google_app_engine_default_service_account.go +++ b/google/services/appengine/data_source_google_app_engine_default_service_account.go @@ -64,7 +64,7 @@ func dataSourceGoogleAppEngineDefaultServiceAccountRead(d *schema.ResourceData, sa, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Get(serviceAccountName).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service Account %q", serviceAccountName)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Service Account %q", serviceAccountName), serviceAccountName) } d.SetId(sa.Name) diff --git a/google/services/artifactregistry/data_source_artifact_registry_repository.go b/google/services/artifactregistry/data_source_artifact_registry_repository.go index ab16924a058..215d57b07a7 100644 --- a/google/services/artifactregistry/data_source_artifact_registry_repository.go +++ b/google/services/artifactregistry/data_source_artifact_registry_repository.go @@ -40,12 +40,17 @@ func dataSourceArtifactRegistryRepositoryRead(d *schema.ResourceData, meta inter } repository_id := d.Get("repository_id").(string) - d.SetId(fmt.Sprintf("projects/%s/locations/%s/repositories/%s", project, location, repository_id)) + id := fmt.Sprintf("projects/%s/locations/%s/repositories/%s", project, location, repository_id) + d.SetId(id) err = resourceArtifactRegistryRepositoryRead(d, meta) if err != nil { return err } + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/beyondcorp/data_source_google_beyondcorp_app_connection.go b/google/services/beyondcorp/data_source_google_beyondcorp_app_connection.go index 0089ac003bd..11a6489c4a3 100644 --- a/google/services/beyondcorp/data_source_google_beyondcorp_app_connection.go +++ b/google/services/beyondcorp/data_source_google_beyondcorp_app_connection.go @@ -40,7 +40,17 @@ func dataSourceGoogleBeyondcorpAppConnectionRead(d *schema.ResourceData, meta in return err } - d.SetId(fmt.Sprintf("projects/%s/locations/%s/appConnections/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/locations/%s/appConnections/%s", project, region, name) + d.SetId(id) - return resourceBeyondcorpAppConnectionRead(d, meta) + err = resourceBeyondcorpAppConnectionRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/beyondcorp/data_source_google_beyondcorp_app_connector.go b/google/services/beyondcorp/data_source_google_beyondcorp_app_connector.go index 6fbd2af55d4..9a855d3cd6b 100644 --- a/google/services/beyondcorp/data_source_google_beyondcorp_app_connector.go +++ b/google/services/beyondcorp/data_source_google_beyondcorp_app_connector.go @@ -40,7 +40,17 @@ func dataSourceGoogleBeyondcorpAppConnectorRead(d *schema.ResourceData, meta int return err } - d.SetId(fmt.Sprintf("projects/%s/locations/%s/appConnectors/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/locations/%s/appConnectors/%s", project, region, name) + d.SetId(id) - return resourceBeyondcorpAppConnectorRead(d, meta) + err = resourceBeyondcorpAppConnectorRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/beyondcorp/data_source_google_beyondcorp_app_gateway.go b/google/services/beyondcorp/data_source_google_beyondcorp_app_gateway.go index 4960307fa1b..e5111a3aa7a 100644 --- a/google/services/beyondcorp/data_source_google_beyondcorp_app_gateway.go +++ b/google/services/beyondcorp/data_source_google_beyondcorp_app_gateway.go @@ -40,7 +40,17 @@ func dataSourceGoogleBeyondcorpAppGatewayRead(d *schema.ResourceData, meta inter return err } - d.SetId(fmt.Sprintf("projects/%s/locations/%s/appGateways/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/locations/%s/appGateways/%s", project, region, name) + d.SetId(id) - return resourceBeyondcorpAppGatewayRead(d, meta) + err = resourceBeyondcorpAppGatewayRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/bigquery/data_source_google_bigquery_default_service_account.go b/google/services/bigquery/data_source_google_bigquery_default_service_account.go index 2e5eb0e6043..4519b76ddc1 100644 --- a/google/services/bigquery/data_source_google_bigquery_default_service_account.go +++ b/google/services/bigquery/data_source_google_bigquery_default_service_account.go @@ -45,7 +45,7 @@ func dataSourceGoogleBigqueryDefaultServiceAccountRead(d *schema.ResourceData, m projectResource, err := config.NewBigQueryClient(userAgent).Projects.GetServiceAccount(project).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, "BigQuery service account not found") + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Project %q BigQuery service account", project), fmt.Sprintf("Project %q BigQuery service account", project)) } d.SetId(projectResource.Email) diff --git a/google/services/billing/data_source_google_billing_account.go b/google/services/billing/data_source_google_billing_account.go index 7372503fc6f..6584467e707 100644 --- a/google/services/billing/data_source_google_billing_account.go +++ b/google/services/billing/data_source_google_billing_account.go @@ -66,7 +66,7 @@ func dataSourceBillingAccountRead(d *schema.ResourceData, meta interface{}) erro if v, ok := d.GetOk("billing_account"); ok { resp, err := config.NewBillingClient(userAgent).BillingAccounts.Get(CanonicalBillingAccountName(v.(string))).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Billing Account Not Found : %s", v)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Billing Account Not Found : %s", v), CanonicalBillingAccountName(v.(string))) } if openOk && resp.Open != open.(bool) { diff --git a/google/services/cloudbuild/data_source_google_cloudbuild_trigger.go b/google/services/cloudbuild/data_source_google_cloudbuild_trigger.go index 47bbe2e8363..76ca75cfbd7 100644 --- a/google/services/cloudbuild/data_source_google_cloudbuild_trigger.go +++ b/google/services/cloudbuild/data_source_google_cloudbuild_trigger.go @@ -34,7 +34,16 @@ func dataSourceGoogleCloudBuildTriggerRead(d *schema.ResourceData, meta interfac } id = strings.ReplaceAll(id, "/locations/global/", "/") - d.SetId(id) - return resourceCloudBuildTriggerRead(d, meta) + + err = resourceCloudBuildTriggerRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/cloudfunctions/data_source_google_cloudfunctions_function.go b/google/services/cloudfunctions/data_source_google_cloudfunctions_function.go index 9414e533fb0..b3b45308806 100644 --- a/google/services/cloudfunctions/data_source_google_cloudfunctions_function.go +++ b/google/services/cloudfunctions/data_source_google_cloudfunctions_function.go @@ -3,6 +3,8 @@ package cloudfunctions import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" @@ -50,5 +52,9 @@ func dataSourceGoogleCloudFunctionsFunctionRead(d *schema.ResourceData, meta int return err } + if d.Id() == "" { + return fmt.Errorf("%s not found", cloudFuncId.CloudFunctionId()) + } + return nil } diff --git a/google/services/cloudfunctions2/data_source_google_cloudfunctions2_function.go b/google/services/cloudfunctions2/data_source_google_cloudfunctions2_function.go index c604aa179ce..c0743867eda 100644 --- a/google/services/cloudfunctions2/data_source_google_cloudfunctions2_function.go +++ b/google/services/cloudfunctions2/data_source_google_cloudfunctions2_function.go @@ -34,12 +34,17 @@ func dataSourceGoogleCloudFunctions2FunctionRead(d *schema.ResourceData, meta in return err } - d.SetId(fmt.Sprintf("projects/%s/locations/%s/functions/%s", project, d.Get("location").(string), d.Get("name").(string))) + id := fmt.Sprintf("projects/%s/locations/%s/functions/%s", project, d.Get("location").(string), d.Get("name").(string)) + d.SetId(id) err = resourceCloudfunctions2functionRead(d, meta) if err != nil { return err } + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/cloudidentity/data_source_cloud_identity_group_memberships.go b/google/services/cloudidentity/data_source_cloud_identity_group_memberships.go index f48367d3c58..4a3c152ecee 100644 --- a/google/services/cloudidentity/data_source_cloud_identity_group_memberships.go +++ b/google/services/cloudidentity/data_source_cloud_identity_group_memberships.go @@ -79,7 +79,7 @@ func dataSourceGoogleCloudIdentityGroupMembershipsRead(d *schema.ResourceData, m return nil }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("CloudIdentityGroupMemberships %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("CloudIdentityGroupMemberships %q", d.Id()), "") } if err := d.Set("memberships", result); err != nil { diff --git a/google/services/cloudidentity/data_source_cloud_identity_groups.go b/google/services/cloudidentity/data_source_cloud_identity_groups.go index 29e6b7029ca..026bc69541d 100644 --- a/google/services/cloudidentity/data_source_cloud_identity_groups.go +++ b/google/services/cloudidentity/data_source_cloud_identity_groups.go @@ -81,7 +81,7 @@ func dataSourceGoogleCloudIdentityGroupsRead(d *schema.ResourceData, meta interf return nil }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("CloudIdentityGroups %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("CloudIdentityGroups %q", d.Id()), "Groups") } if err := d.Set("groups", result); err != nil { diff --git a/google/services/cloudrun/data_source_cloud_run_service.go b/google/services/cloudrun/data_source_cloud_run_service.go index 9f89acf3b4e..ac5a2f2e328 100644 --- a/google/services/cloudrun/data_source_cloud_run_service.go +++ b/google/services/cloudrun/data_source_cloud_run_service.go @@ -30,5 +30,14 @@ func dataSourceGoogleCloudRunServiceRead(d *schema.ResourceData, meta interface{ return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceCloudRunServiceRead(d, meta) + err = resourceCloudRunServiceRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/composer/data_source_google_composer_environment.go b/google/services/composer/data_source_google_composer_environment.go index 755b73cf8b2..7f7dd4ee0ca 100644 --- a/google/services/composer/data_source_google_composer_environment.go +++ b/google/services/composer/data_source_google_composer_environment.go @@ -37,7 +37,16 @@ func dataSourceGoogleComposerEnvironmentRead(d *schema.ResourceData, meta interf } envName := d.Get("name").(string) - d.SetId(fmt.Sprintf("projects/%s/locations/%s/environments/%s", project, region, envName)) + id := fmt.Sprintf("projects/%s/locations/%s/environments/%s", project, region, envName) + d.SetId(id) + err = resourceComposerEnvironmentRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } - return resourceComposerEnvironmentRead(d, meta) + return nil } diff --git a/google/services/compute/data_source_compute_health_check.go b/google/services/compute/data_source_compute_health_check.go index 5b9347e4cff..17758d7a188 100644 --- a/google/services/compute/data_source_compute_health_check.go +++ b/google/services/compute/data_source_compute_health_check.go @@ -3,6 +3,8 @@ package compute import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" @@ -31,5 +33,14 @@ func dataSourceGoogleComputeHealthCheckRead(d *schema.ResourceData, meta interfa } d.SetId(id) - return resourceComputeHealthCheckRead(d, meta) + err = resourceComputeHealthCheckRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_compute_network_endpoint_group.go b/google/services/compute/data_source_compute_network_endpoint_group.go index 181a75af574..3c6a237f333 100644 --- a/google/services/compute/data_source_compute_network_endpoint_group.go +++ b/google/services/compute/data_source_compute_network_endpoint_group.go @@ -29,6 +29,7 @@ func DataSourceGoogleComputeNetworkEndpointGroup() *schema.Resource { func dataSourceComputeNetworkEndpointGroupRead(d *schema.ResourceData, meta interface{}) error { config := meta.(*transport_tpg.Config) + id := "" if name, ok := d.GetOk("name"); ok { project, err := tpgresource.GetProject(d, config) if err != nil { @@ -38,7 +39,8 @@ func dataSourceComputeNetworkEndpointGroupRead(d *schema.ResourceData, meta inte if err != nil { return err } - d.SetId(fmt.Sprintf("projects/%s/zones/%s/networkEndpointGroups/%s", project, zone, name.(string))) + id = fmt.Sprintf("projects/%s/zones/%s/networkEndpointGroups/%s", project, zone, name.(string)) + d.SetId(id) } else if selfLink, ok := d.GetOk("self_link"); ok { parsed, err := tpgresource.ParseNetworkEndpointGroupFieldValue(selfLink.(string), d, config) if err != nil { @@ -53,10 +55,20 @@ func dataSourceComputeNetworkEndpointGroupRead(d *schema.ResourceData, meta inte if err := d.Set("project", parsed.Project); err != nil { return fmt.Errorf("Error setting project: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/zones/%s/networkEndpointGroups/%s", parsed.Project, parsed.Zone, parsed.Name)) + id = fmt.Sprintf("projects/%s/zones/%s/networkEndpointGroups/%s", parsed.Project, parsed.Zone, parsed.Name) + d.SetId(id) } else { return errors.New("Must provide either `self_link` or `zone/name`") } - return resourceComputeNetworkEndpointGroupRead(d, meta) + err := resourceComputeNetworkEndpointGroupRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_compute_network_peering.go b/google/services/compute/data_source_compute_network_peering.go index 174c5e04eb4..f0c7e0c4ffa 100644 --- a/google/services/compute/data_source_compute_network_peering.go +++ b/google/services/compute/data_source_compute_network_peering.go @@ -37,7 +37,17 @@ func dataSourceComputeNetworkPeeringRead(d *schema.ResourceData, meta interface{ if err != nil { return err } - d.SetId(fmt.Sprintf("%s/%s", networkFieldValue.Name, d.Get("name").(string))) + id := fmt.Sprintf("%s/%s", networkFieldValue.Name, d.Get("name").(string)) + d.SetId(id) - return resourceComputeNetworkPeeringRead(d, meta) + err = resourceComputeNetworkPeeringRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_address.go b/google/services/compute/data_source_google_compute_address.go index 6c36d08e5f8..c52650b804b 100644 --- a/google/services/compute/data_source_google_compute_address.go +++ b/google/services/compute/data_source_google_compute_address.go @@ -110,9 +110,11 @@ func dataSourceGoogleComputeAddressRead(d *schema.ResourceData, meta interface{} } name := d.Get("name").(string) + id := fmt.Sprintf("projects/%s/regions/%s/addresses/%s", project, region, name) + address, err := config.NewComputeClient(userAgent).Addresses.Get(project, region, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Address Not Found : %s", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Address Not Found : %s", name), id) } if err := d.Set("address", address.Address); err != nil { @@ -149,7 +151,7 @@ func dataSourceGoogleComputeAddressRead(d *schema.ResourceData, meta interface{} return fmt.Errorf("Error setting region: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/addresses/%s", project, region, name)) + d.SetId(id) return nil } diff --git a/google/services/compute/data_source_google_compute_backend_bucket.go b/google/services/compute/data_source_google_compute_backend_bucket.go index 2c0acbb4b60..27a2a1ef9e6 100644 --- a/google/services/compute/data_source_google_compute_backend_bucket.go +++ b/google/services/compute/data_source_google_compute_backend_bucket.go @@ -35,7 +35,17 @@ func dataSourceComputeBackendBucketRead(d *schema.ResourceData, meta interface{} return err } - d.SetId(fmt.Sprintf("projects/%s/global/backendBuckets/%s", project, backendBucketName)) + id := fmt.Sprintf("projects/%s/global/backendBuckets/%s", project, backendBucketName) + d.SetId(id) - return resourceComputeBackendBucketRead(d, meta) + err = resourceComputeBackendBucketRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_backend_service.go b/google/services/compute/data_source_google_compute_backend_service.go index a906e270ea6..ea2e9946c06 100644 --- a/google/services/compute/data_source_google_compute_backend_service.go +++ b/google/services/compute/data_source_google_compute_backend_service.go @@ -35,7 +35,17 @@ func dataSourceComputeBackendServiceRead(d *schema.ResourceData, meta interface{ return err } - d.SetId(fmt.Sprintf("projects/%s/global/backendServices/%s", project, serviceName)) + id := fmt.Sprintf("projects/%s/global/backendServices/%s", project, serviceName) + d.SetId(id) - return resourceComputeBackendServiceRead(d, meta) + err = resourceComputeBackendServiceRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_default_service_account.go b/google/services/compute/data_source_google_compute_default_service_account.go index 877a1b0675d..a852e14d9bc 100644 --- a/google/services/compute/data_source_google_compute_default_service_account.go +++ b/google/services/compute/data_source_google_compute_default_service_account.go @@ -53,7 +53,7 @@ func dataSourceGoogleComputeDefaultServiceAccountRead(d *schema.ResourceData, me projectCompResource, err := config.NewComputeClient(userAgent).Projects.Get(project).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, "GCE default service account") + return transport_tpg.HandleDataSourceNotFoundError(err, d, "GCE default service account", fmt.Sprintf("%q GCE default service account", project)) } serviceAccountName, err := tpgresource.ServiceAccountFQN(projectCompResource.DefaultServiceAccount, d, config) @@ -63,7 +63,7 @@ func dataSourceGoogleComputeDefaultServiceAccountRead(d *schema.ResourceData, me sa, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Get(serviceAccountName).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service Account %q", serviceAccountName)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Service Account %q", serviceAccountName), serviceAccountName) } d.SetId(sa.Name) diff --git a/google/services/compute/data_source_google_compute_disk.go b/google/services/compute/data_source_google_compute_disk.go index a2d03cf26df..ea6e741dddd 100644 --- a/google/services/compute/data_source_google_compute_disk.go +++ b/google/services/compute/data_source_google_compute_disk.go @@ -31,5 +31,14 @@ func dataSourceGoogleComputeDiskRead(d *schema.ResourceData, meta interface{}) e return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceComputeDiskRead(d, meta) + err = resourceComputeDiskRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_forwarding_rule.go b/google/services/compute/data_source_google_compute_forwarding_rule.go index f8d546310a4..a737808a9aa 100644 --- a/google/services/compute/data_source_google_compute_forwarding_rule.go +++ b/google/services/compute/data_source_google_compute_forwarding_rule.go @@ -41,7 +41,17 @@ func dataSourceGoogleComputeForwardingRuleRead(d *schema.ResourceData, meta inte return err } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/forwardingRules/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/regions/%s/forwardingRules/%s", project, region, name) + d.SetId(id) - return resourceComputeForwardingRuleRead(d, meta) + err = resourceComputeForwardingRuleRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_global_address.go b/google/services/compute/data_source_google_compute_global_address.go index 9762f076e90..1d9b42c43bd 100644 --- a/google/services/compute/data_source_google_compute_global_address.go +++ b/google/services/compute/data_source_google_compute_global_address.go @@ -91,9 +91,11 @@ func dataSourceGoogleComputeGlobalAddressRead(d *schema.ResourceData, meta inter return err } name := d.Get("name").(string) + id := fmt.Sprintf("projects/%s/global/addresses/%s", project, name) + address, err := config.NewComputeClient(userAgent).GlobalAddresses.Get(project, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Global Address Not Found : %s", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Global Address Not Found : %s", name), id) } if err := d.Set("address", address.Address); err != nil { @@ -126,6 +128,6 @@ func dataSourceGoogleComputeGlobalAddressRead(d *schema.ResourceData, meta inter if err := d.Set("project", project); err != nil { return fmt.Errorf("Error setting project: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/global/addresses/%s", project, name)) + d.SetId(id) return nil } diff --git a/google/services/compute/data_source_google_compute_ha_vpn_gateway.go b/google/services/compute/data_source_google_compute_ha_vpn_gateway.go index bfa88cee79a..01f80e88137 100644 --- a/google/services/compute/data_source_google_compute_ha_vpn_gateway.go +++ b/google/services/compute/data_source_google_compute_ha_vpn_gateway.go @@ -41,7 +41,17 @@ func dataSourceGoogleComputeHaVpnGatewayRead(d *schema.ResourceData, meta interf return err } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/vpnGateways/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/regions/%s/vpnGateways/%s", project, region, name) + d.SetId(id) - return resourceComputeHaVpnGatewayRead(d, meta) + err = resourceComputeHaVpnGatewayRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_instance.go b/google/services/compute/data_source_google_compute_instance.go index f50208fbb00..9ddc266c528 100644 --- a/google/services/compute/data_source_google_compute_instance.go +++ b/google/services/compute/data_source_google_compute_instance.go @@ -35,9 +35,11 @@ func dataSourceGoogleComputeInstanceRead(d *schema.ResourceData, meta interface{ return err } + id := fmt.Sprintf("projects/%s/zones/%s/instances/%s", project, zone, name) + instance, err := config.NewComputeClient(userAgent).Instances.Get(project, zone, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Instance %s", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Instance %s", name), id) } md := flattenMetadataBeta(instance.Metadata) diff --git a/google/services/compute/data_source_google_compute_instance_group.go b/google/services/compute/data_source_google_compute_instance_group.go index 8dddeb27fcd..bc3fd4a6f78 100644 --- a/google/services/compute/data_source_google_compute_instance_group.go +++ b/google/services/compute/data_source_google_compute_instance_group.go @@ -86,6 +86,7 @@ func DataSourceGoogleComputeInstanceGroup() *schema.Resource { func dataSourceComputeInstanceGroupRead(d *schema.ResourceData, meta interface{}) error { config := meta.(*transport_tpg.Config) + id := "" if name, ok := d.GetOk("name"); ok { zone, err := tpgresource.GetZone(d, config) if err != nil { @@ -95,7 +96,7 @@ func dataSourceComputeInstanceGroupRead(d *schema.ResourceData, meta interface{} if err != nil { return err } - d.SetId(fmt.Sprintf("projects/%s/zones/%s/instanceGroups/%s", project, zone, name.(string))) + id = fmt.Sprintf("projects/%s/zones/%s/instanceGroups/%s", project, zone, name.(string)) } else if selfLink, ok := d.GetOk("self_link"); ok { parsed, err := tpgresource.ParseInstanceGroupFieldValue(selfLink.(string), d, config) if err != nil { @@ -110,10 +111,20 @@ func dataSourceComputeInstanceGroupRead(d *schema.ResourceData, meta interface{} if err := d.Set("project", parsed.Project); err != nil { return fmt.Errorf("Error setting project: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/zones/%s/instanceGroups/%s", parsed.Project, parsed.Zone, parsed.Name)) + id = fmt.Sprintf("projects/%s/zones/%s/instanceGroups/%s", parsed.Project, parsed.Zone, parsed.Name) } else { return errors.New("Must provide either `self_link` or `zone/name`") } + d.SetId(id) - return resourceComputeInstanceGroupRead(d, meta) + err := resourceComputeInstanceGroupRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_network.go b/google/services/compute/data_source_google_compute_network.go index bc317f9d06f..df05602056b 100644 --- a/google/services/compute/data_source_google_compute_network.go +++ b/google/services/compute/data_source_google_compute_network.go @@ -61,9 +61,12 @@ func dataSourceGoogleComputeNetworkRead(d *schema.ResourceData, meta interface{} return err } name := d.Get("name").(string) + + id := fmt.Sprintf("projects/%s/global/networks/%s", project, name) + network, err := config.NewComputeClient(userAgent).Networks.Get(project, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Network Not Found : %s", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Network Not Found : %s", name), id) } if err := d.Set("gateway_ipv4", network.GatewayIPv4); err != nil { return fmt.Errorf("Error setting gateway_ipv4: %s", err) @@ -77,6 +80,6 @@ func dataSourceGoogleComputeNetworkRead(d *schema.ResourceData, meta interface{} if err := d.Set("subnetworks_self_links", network.Subnetworks); err != nil { return fmt.Errorf("Error setting subnetworks_self_links: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/global/networks/%s", project, network.Name)) + d.SetId(id) return nil } diff --git a/google/services/compute/data_source_google_compute_region_instance_group.go b/google/services/compute/data_source_google_compute_region_instance_group.go index e957d114f87..a7f824bee63 100644 --- a/google/services/compute/data_source_google_compute_region_instance_group.go +++ b/google/services/compute/data_source_google_compute_region_instance_group.go @@ -101,11 +101,11 @@ func dataSourceComputeRegionInstanceGroupRead(d *schema.ResourceData, meta inter if err != nil { return err } - + id := fmt.Sprintf("projects/%s/regions/%s/instanceGroups/%s", project, region, name) instanceGroup, err := config.NewComputeClient(userAgent).RegionInstanceGroups.Get( project, region, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Region Instance Group %q", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Region Instance Group %q", name), id) } members, err := config.NewComputeClient(userAgent).RegionInstanceGroups.ListInstances( @@ -126,7 +126,7 @@ func dataSourceComputeRegionInstanceGroupRead(d *schema.ResourceData, meta inter return fmt.Errorf("Error setting instances: %s", err) } } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/instanceGroups/%s", project, region, name)) + d.SetId(id) if err := d.Set("self_link", instanceGroup.SelfLink); err != nil { return fmt.Errorf("Error setting self_link: %s", err) } diff --git a/google/services/compute/data_source_google_compute_region_network_endpoint_group.go b/google/services/compute/data_source_google_compute_region_network_endpoint_group.go index ef7597b2e1f..0cae9ad6156 100644 --- a/google/services/compute/data_source_google_compute_region_network_endpoint_group.go +++ b/google/services/compute/data_source_google_compute_region_network_endpoint_group.go @@ -28,6 +28,7 @@ func DataSourceGoogleComputeRegionNetworkEndpointGroup() *schema.Resource { func dataSourceComputeRegionNetworkEndpointGroupRead(d *schema.ResourceData, meta interface{}) error { config := meta.(*transport_tpg.Config) + id := "" if name, ok := d.GetOk("name"); ok { project, err := tpgresource.GetProject(d, config) if err != nil { @@ -38,7 +39,7 @@ func dataSourceComputeRegionNetworkEndpointGroupRead(d *schema.ResourceData, met return err } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/networkEndpointGroups/%s", project, region, name.(string))) + id = fmt.Sprintf("projects/%s/regions/%s/networkEndpointGroups/%s", project, region, name.(string)) } else if selfLink, ok := d.GetOk("self_link"); ok { parsed, err := tpgresource.ParseNetworkEndpointGroupRegionalFieldValue(selfLink.(string), d, config) if err != nil { @@ -54,10 +55,19 @@ func dataSourceComputeRegionNetworkEndpointGroupRead(d *schema.ResourceData, met return fmt.Errorf("Error setting region: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/networkEndpointGroups/%s", parsed.Project, parsed.Region, parsed.Name)) + id = fmt.Sprintf("projects/%s/regions/%s/networkEndpointGroups/%s", parsed.Project, parsed.Region, parsed.Name) } else { return errors.New("Must provide either `self_link` or `region/name`") } + d.SetId(id) + err := resourceComputeRegionNetworkEndpointGroupRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } - return resourceComputeRegionNetworkEndpointGroupRead(d, meta) + return nil } diff --git a/google/services/compute/data_source_google_compute_region_ssl_certificate.go b/google/services/compute/data_source_google_compute_region_ssl_certificate.go index 7ad067d252d..4f4c3617c84 100644 --- a/google/services/compute/data_source_google_compute_region_ssl_certificate.go +++ b/google/services/compute/data_source_google_compute_region_ssl_certificate.go @@ -35,7 +35,16 @@ func dataSourceComputeRegionSslCertificateRead(d *schema.ResourceData, meta inte return err } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/sslCertificates/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/regions/%s/sslCertificates/%s", project, region, name) + d.SetId(id) - return resourceComputeRegionSslCertificateRead(d, meta) + err = resourceComputeRegionSslCertificateRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/compute/data_source_google_compute_resource_policy.go b/google/services/compute/data_source_google_compute_resource_policy.go index 89fb4ea20cc..dddbb1faff9 100644 --- a/google/services/compute/data_source_google_compute_resource_policy.go +++ b/google/services/compute/data_source_google_compute_resource_policy.go @@ -37,7 +37,17 @@ func dataSourceGoogleComputeResourcePolicyRead(d *schema.ResourceData, meta inte return err } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/resourcePolicies/%s", project, region, name)) + id := fmt.Sprintf("projects/%s/regions/%s/resourcePolicies/%s", project, region, name) + d.SetId(id) - return resourceComputeResourcePolicyRead(d, meta) + err = resourceComputeResourcePolicyRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_router.go b/google/services/compute/data_source_google_compute_router.go index 5b21f09e219..85a4107e797 100644 --- a/google/services/compute/data_source_google_compute_router.go +++ b/google/services/compute/data_source_google_compute_router.go @@ -3,6 +3,8 @@ package compute import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" ) @@ -24,5 +26,13 @@ func dataSourceComputeRouterRead(d *schema.ResourceData, meta interface{}) error routerName := d.Get("name").(string) d.SetId(routerName) - return resourceComputeRouterRead(d, meta) + err := resourceComputeRouterRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", routerName) + } + return nil } diff --git a/google/services/compute/data_source_google_compute_router_nat.go b/google/services/compute/data_source_google_compute_router_nat.go index 793abf2fcbb..1af79761e2c 100644 --- a/google/services/compute/data_source_google_compute_router_nat.go +++ b/google/services/compute/data_source_google_compute_router_nat.go @@ -33,5 +33,14 @@ func dataSourceGoogleComputeRouterNatRead(d *schema.ResourceData, meta interface } d.SetId(id) - return resourceComputeRouterNatRead(d, meta) + err = resourceComputeRouterNatRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_ssl_certificate.go b/google/services/compute/data_source_google_compute_ssl_certificate.go index 522f4e2c3b6..569b110dade 100644 --- a/google/services/compute/data_source_google_compute_ssl_certificate.go +++ b/google/services/compute/data_source_google_compute_ssl_certificate.go @@ -35,7 +35,17 @@ func dataSourceComputeSslCertificateRead(d *schema.ResourceData, meta interface{ } certificateName := d.Get("name").(string) - d.SetId(fmt.Sprintf("projects/%s/global/sslCertificates/%s", project, certificateName)) + id := fmt.Sprintf("projects/%s/global/sslCertificates/%s", project, certificateName) + d.SetId(id) - return resourceComputeSslCertificateRead(d, meta) + err = resourceComputeSslCertificateRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_ssl_policy.go b/google/services/compute/data_source_google_compute_ssl_policy.go index 5fd16673743..434b27be55a 100644 --- a/google/services/compute/data_source_google_compute_ssl_policy.go +++ b/google/services/compute/data_source_google_compute_ssl_policy.go @@ -35,7 +35,17 @@ func datasourceComputeSslPolicyRead(d *schema.ResourceData, meta interface{}) er } policyName := d.Get("name").(string) - d.SetId(fmt.Sprintf("projects/%s/global/sslPolicies/%s", project, policyName)) + id := fmt.Sprintf("projects/%s/global/sslPolicies/%s", project, policyName) + d.SetId(id) - return resourceComputeSslPolicyRead(d, meta) + err = resourceComputeSslPolicyRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/compute/data_source_google_compute_subnetwork.go b/google/services/compute/data_source_google_compute_subnetwork.go index e94b5ecf1f4..a3ced3a06c2 100644 --- a/google/services/compute/data_source_google_compute_subnetwork.go +++ b/google/services/compute/data_source_google_compute_subnetwork.go @@ -87,10 +87,11 @@ func dataSourceGoogleComputeSubnetworkRead(d *schema.ResourceData, meta interfac if err != nil { return err } + id := fmt.Sprintf("projects/%s/regions/%s/subnetworks/%s", project, region, name) subnetwork, err := config.NewComputeClient(userAgent).Subnetworks.Get(project, region, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Subnetwork Not Found : %s", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Subnetwork Not Found : %s", name), id) } if err := d.Set("ip_cidr_range", subnetwork.IpCidrRange); err != nil { @@ -124,7 +125,7 @@ func dataSourceGoogleComputeSubnetworkRead(d *schema.ResourceData, meta interfac return fmt.Errorf("Error setting secondary_ip_range: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/subnetworks/%s", project, region, name)) + d.SetId(id) return nil } diff --git a/google/services/compute/data_source_google_compute_vpn_gateway.go b/google/services/compute/data_source_google_compute_vpn_gateway.go index 3fc6d855490..bf5ac233b54 100644 --- a/google/services/compute/data_source_google_compute_vpn_gateway.go +++ b/google/services/compute/data_source_google_compute_vpn_gateway.go @@ -69,12 +69,13 @@ func dataSourceGoogleComputeVpnGatewayRead(d *schema.ResourceData, meta interfac } name := d.Get("name").(string) + id := fmt.Sprintf("projects/%s/regions/%s/targetVpnGateways/%s", project, region, name) vpnGatewaysService := compute.NewTargetVpnGatewaysService(config.NewComputeClient(userAgent)) gateway, err := vpnGatewaysService.Get(project, region, name).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("VPN Gateway Not Found : %s", name)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("VPN Gateway Not Found : %s", name), id) } if err := d.Set("network", tpgresource.ConvertSelfLinkToV1(gateway.Network)); err != nil { return fmt.Errorf("Error setting network: %s", err) @@ -91,6 +92,6 @@ func dataSourceGoogleComputeVpnGatewayRead(d *schema.ResourceData, meta interfac if err := d.Set("project", project); err != nil { return fmt.Errorf("Error setting project: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/regions/%s/targetVpnGateways/%s", project, region, name)) + d.SetId(id) return nil } diff --git a/google/services/compute/data_source_google_global_compute_forwarding_rule.go b/google/services/compute/data_source_google_global_compute_forwarding_rule.go index 75b31c5da10..8a8859c362e 100644 --- a/google/services/compute/data_source_google_global_compute_forwarding_rule.go +++ b/google/services/compute/data_source_google_global_compute_forwarding_rule.go @@ -35,7 +35,17 @@ func dataSourceGoogleComputeGlobalForwardingRuleRead(d *schema.ResourceData, met return err } - d.SetId(fmt.Sprintf("projects/%s/global/forwardingRules/%s", project, name)) + id := fmt.Sprintf("projects/%s/global/forwardingRules/%s", project, name) + d.SetId(id) - return resourceComputeGlobalForwardingRuleRead(d, meta) + err = resourceComputeGlobalForwardingRuleRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + + return nil } diff --git a/google/services/dataprocmetastore/data_source_dataproc_metastore_service.go b/google/services/dataprocmetastore/data_source_dataproc_metastore_service.go index 52099820f84..3c66d581fe4 100644 --- a/google/services/dataprocmetastore/data_source_dataproc_metastore_service.go +++ b/google/services/dataprocmetastore/data_source_dataproc_metastore_service.go @@ -29,5 +29,13 @@ func dataSourceDataprocMetastoreServiceRead(d *schema.ResourceData, meta interfa return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceDataprocMetastoreServiceRead(d, meta) + err = resourceDataprocMetastoreServiceRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/dns/data_source_dns_keys.go b/google/services/dns/data_source_dns_keys.go index a48b30f7c99..41849645004 100644 --- a/google/services/dns/data_source_dns_keys.go +++ b/google/services/dns/data_source_dns_keys.go @@ -18,7 +18,6 @@ import ( "github.com/hashicorp/terraform-provider-google/google/fwmodels" "github.com/hashicorp/terraform-provider-google/google/fwresource" "github.com/hashicorp/terraform-provider-google/google/fwtransport" - transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" ) // Ensure the implementation satisfies the expected interfaces @@ -181,9 +180,7 @@ func (d *GoogleDnsKeysDataSource) Read(ctx context.Context, req datasource.ReadR clientResp, err := d.client.DnsKeys.List(data.Project.ValueString(), data.ManagedZone.ValueString()).Do() if err != nil { - if !transport_tpg.IsGoogleApiErrorWithCode(err, 404) { - resp.Diagnostics.AddError(fmt.Sprintf("Error when reading or editing dataSourceDnsKeys"), err.Error()) - } + resp.Diagnostics.AddError(fmt.Sprintf("Error when reading or editing dataSourceDnsKeys"), err.Error()) // Save data into Terraform state resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) return diff --git a/google/services/iap/data_source_iap_client.go b/google/services/iap/data_source_iap_client.go index 32ee9a0ced9..d81c692431a 100644 --- a/google/services/iap/data_source_iap_client.go +++ b/google/services/iap/data_source_iap_client.go @@ -29,5 +29,13 @@ func dataSourceGoogleIapClientRead(d *schema.ResourceData, meta interface{}) err return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceIapClientRead(d, meta) + err = resourceIapClientRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/kms/data_source_google_kms_crypto_key.go b/google/services/kms/data_source_google_kms_crypto_key.go index 45b0df810e8..ac4f93f8331 100644 --- a/google/services/kms/data_source_google_kms_crypto_key.go +++ b/google/services/kms/data_source_google_kms_crypto_key.go @@ -3,6 +3,8 @@ package kms import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" @@ -33,7 +35,16 @@ func dataSourceGoogleKmsCryptoKeyRead(d *schema.ResourceData, meta interface{}) Name: d.Get("name").(string), } - d.SetId(cryptoKeyId.CryptoKeyId()) + id := cryptoKeyId.CryptoKeyId() + d.SetId(id) + + err = resourceKMSCryptoKeyRead(d, meta) + if err != nil { + return err + } - return resourceKMSCryptoKeyRead(d, meta) + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/kms/data_source_google_kms_crypto_key_version.go b/google/services/kms/data_source_google_kms_crypto_key_version.go index e72a7067d9e..04cce669b42 100644 --- a/google/services/kms/data_source_google_kms_crypto_key_version.go +++ b/google/services/kms/data_source_google_kms_crypto_key_version.go @@ -89,7 +89,7 @@ func dataSourceGoogleKmsCryptoKeyVersionRead(d *schema.ResourceData, meta interf UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("KmsCryptoKeyVersion %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("KmsCryptoKeyVersion %q", d.Id()), url) } if err := d.Set("version", flattenKmsCryptoKeyVersionVersion(res["name"], d)); err != nil { @@ -122,7 +122,7 @@ func dataSourceGoogleKmsCryptoKeyVersionRead(d *schema.ResourceData, meta interf UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("KmsCryptoKey %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("KmsCryptoKey %q", d.Id()), url) } if res["purpose"] == "ASYMMETRIC_SIGN" || res["purpose"] == "ASYMMETRIC_DECRYPT" { diff --git a/google/services/kms/data_source_google_kms_key_ring.go b/google/services/kms/data_source_google_kms_key_ring.go index 3b1e2337a41..57654b3a79a 100644 --- a/google/services/kms/data_source_google_kms_key_ring.go +++ b/google/services/kms/data_source_google_kms_key_ring.go @@ -3,6 +3,8 @@ package kms import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" @@ -33,7 +35,16 @@ func dataSourceGoogleKmsKeyRingRead(d *schema.ResourceData, meta interface{}) er Location: d.Get("location").(string), Project: project, } - d.SetId(keyRingId.KeyRingId()) + id := keyRingId.KeyRingId() + d.SetId(id) + + err = resourceKMSKeyRingRead(d, meta) + if err != nil { + return err + } - return resourceKMSKeyRingRead(d, meta) + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/logging/data_source_google_logging_project_cmek_settings.go b/google/services/logging/data_source_google_logging_project_cmek_settings.go index e79d4dd1c83..e2d617f967a 100644 --- a/google/services/logging/data_source_google_logging_project_cmek_settings.go +++ b/google/services/logging/data_source_google_logging_project_cmek_settings.go @@ -87,7 +87,7 @@ func dataSourceGoogleLoggingProjectCmekSettingsRead(d *schema.ResourceData, meta UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("LoggingProjectCmekSettings %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("LoggingProjectCmekSettings %q", d.Id()), url) } d.SetId(fmt.Sprintf("projects/%s/cmekSettings", project)) diff --git a/google/services/logging/data_source_google_logging_sink.go b/google/services/logging/data_source_google_logging_sink.go index 0315bdd6e7e..4979813e0b6 100644 --- a/google/services/logging/data_source_google_logging_sink.go +++ b/google/services/logging/data_source_google_logging_sink.go @@ -35,7 +35,7 @@ func dataSourceGoogleLoggingSinkRead(d *schema.ResourceData, meta interface{}) e sink, err := config.NewLoggingClient(userAgent).Sinks.Get(sinkId).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Logging Sink %s", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Logging Sink %s", d.Id()), sinkId) } if err := flattenResourceLoggingSink(d, sink); err != nil { diff --git a/google/services/privateca/data_source_certificate_authority.go b/google/services/privateca/data_source_certificate_authority.go index 5976618a7c7..ff5562e56e4 100644 --- a/google/services/privateca/data_source_certificate_authority.go +++ b/google/services/privateca/data_source_certificate_authority.go @@ -75,7 +75,7 @@ func dataSourcePrivatecaCertificateAuthorityRead(d *schema.ResourceData, meta in UserAgent: userAgent, }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("PrivatecaCertificateAuthority %q", d.Id())) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("PrivatecaCertificateAuthority %q", d.Id()), url) } if err := d.Set("pem_csr", res["pemCsr"]); err != nil { return fmt.Errorf("Error fetching CertificateAuthority: %s", err) diff --git a/google/services/pubsub/data_source_pubsub_subscription.go b/google/services/pubsub/data_source_pubsub_subscription.go index 6896baa2245..3e602003528 100644 --- a/google/services/pubsub/data_source_pubsub_subscription.go +++ b/google/services/pubsub/data_source_pubsub_subscription.go @@ -30,5 +30,13 @@ func dataSourceGooglePubsubSubscriptionRead(d *schema.ResourceData, meta interfa return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourcePubsubSubscriptionRead(d, meta) + err = resourcePubsubSubscriptionRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/pubsub/data_source_pubsub_topic.go b/google/services/pubsub/data_source_pubsub_topic.go index 7cbd0de400f..08e34ab9932 100644 --- a/google/services/pubsub/data_source_pubsub_topic.go +++ b/google/services/pubsub/data_source_pubsub_topic.go @@ -30,5 +30,13 @@ func dataSourceGooglePubsubTopicRead(d *schema.ResourceData, meta interface{}) e return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourcePubsubTopicRead(d, meta) + err = resourcePubsubTopicRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/redis/data_source_redis_instance.go b/google/services/redis/data_source_redis_instance.go index 00d57581358..23d1cd3e403 100644 --- a/google/services/redis/data_source_redis_instance.go +++ b/google/services/redis/data_source_redis_instance.go @@ -3,6 +3,8 @@ package redis import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" @@ -31,5 +33,13 @@ func dataSourceGoogleRedisInstanceRead(d *schema.ResourceData, meta interface{}) } d.SetId(id) - return resourceRedisInstanceRead(d, meta) + err = resourceRedisInstanceRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/resourcemanager/data_source_google_folder.go b/google/services/resourcemanager/data_source_google_folder.go index cf0472992d6..5ddb5447bf7 100644 --- a/google/services/resourcemanager/data_source_google_folder.go +++ b/google/services/resourcemanager/data_source_google_folder.go @@ -63,13 +63,14 @@ func dataSourceFolderRead(d *schema.ResourceData, meta interface{}) error { return err } - d.SetId(canonicalFolderName(d.Get("folder").(string))) + id := canonicalFolderName(d.Get("folder").(string)) + d.SetId(id) if err := resourceGoogleFolderRead(d, meta); err != nil { return err } // If resource doesn't exist, read will not set ID and we should return error. if d.Id() == "" { - return nil + return fmt.Errorf("%s not found", id) } if v, ok := d.GetOk("lookup_organization"); ok && v.(bool) { diff --git a/google/services/resourcemanager/data_source_google_folder_organization_policy.go b/google/services/resourcemanager/data_source_google_folder_organization_policy.go index 33d4afc684b..c4feb461575 100644 --- a/google/services/resourcemanager/data_source_google_folder_organization_policy.go +++ b/google/services/resourcemanager/data_source_google_folder_organization_policy.go @@ -24,7 +24,16 @@ func DataSourceGoogleFolderOrganizationPolicy() *schema.Resource { func datasourceGoogleFolderOrganizationPolicyRead(d *schema.ResourceData, meta interface{}) error { - d.SetId(fmt.Sprintf("%s/%s", d.Get("folder"), d.Get("constraint"))) + id := fmt.Sprintf("%s/%s", d.Get("folder"), d.Get("constraint")) + d.SetId(id) - return resourceGoogleFolderOrganizationPolicyRead(d, meta) + err := resourceGoogleFolderOrganizationPolicyRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/resourcemanager/data_source_google_iam_role.go b/google/services/resourcemanager/data_source_google_iam_role.go index 79f08123b89..345c44bd4b5 100644 --- a/google/services/resourcemanager/data_source_google_iam_role.go +++ b/google/services/resourcemanager/data_source_google_iam_role.go @@ -45,7 +45,7 @@ func dataSourceGoogleIamRoleRead(d *schema.ResourceData, meta interface{}) error roleName := d.Get("name").(string) role, err := config.NewIamClient(userAgent).Roles.Get(roleName).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Error reading IAM Role %s: %s", roleName, err)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Error reading IAM Role %s: %s", roleName, err), roleName) } d.SetId(role.Name) diff --git a/google/services/resourcemanager/data_source_google_organization.go b/google/services/resourcemanager/data_source_google_organization.go index 53d9ebdc712..e326c955913 100644 --- a/google/services/resourcemanager/data_source_google_organization.go +++ b/google/services/resourcemanager/data_source_google_organization.go @@ -105,7 +105,7 @@ func dataSourceOrganizationRead(d *schema.ResourceData, meta interface{}) error Timeout: d.Timeout(schema.TimeoutRead), }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Organization Not Found : %s", v)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Organization Not Found : %s", v), canonicalOrganizationName(v.(string))) } organization = resp diff --git a/google/services/resourcemanager/data_source_google_project_organization_policy.go b/google/services/resourcemanager/data_source_google_project_organization_policy.go index e38a6230bf3..003a22e2de1 100644 --- a/google/services/resourcemanager/data_source_google_project_organization_policy.go +++ b/google/services/resourcemanager/data_source_google_project_organization_policy.go @@ -24,7 +24,16 @@ func DataSourceGoogleProjectOrganizationPolicy() *schema.Resource { func datasourceGoogleProjectOrganizationPolicyRead(d *schema.ResourceData, meta interface{}) error { - d.SetId(fmt.Sprintf("%s:%s", d.Get("project"), d.Get("constraint"))) + id := fmt.Sprintf("%s:%s", d.Get("project"), d.Get("constraint")) + d.SetId(id) - return resourceGoogleProjectOrganizationPolicyRead(d, meta) + err := resourceGoogleProjectOrganizationPolicyRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/resourcemanager/data_source_google_project_service.go b/google/services/resourcemanager/data_source_google_project_service.go index f053aac54d9..99bfa6c929a 100644 --- a/google/services/resourcemanager/data_source_google_project_service.go +++ b/google/services/resourcemanager/data_source_google_project_service.go @@ -30,5 +30,13 @@ func dataSourceGoogleProjectServiceRead(d *schema.ResourceData, meta interface{} return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceGoogleProjectServiceRead(d, meta) + err = resourceGoogleProjectServiceRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/resourcemanager/data_source_google_service_account.go b/google/services/resourcemanager/data_source_google_service_account.go index 5d771e0a833..bc17d636dac 100644 --- a/google/services/resourcemanager/data_source_google_service_account.go +++ b/google/services/resourcemanager/data_source_google_service_account.go @@ -61,7 +61,7 @@ func dataSourceGoogleServiceAccountRead(d *schema.ResourceData, meta interface{} sa, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Get(serviceAccountName).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service Account %q", serviceAccountName)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Service Account %q", serviceAccountName), serviceAccountName) } d.SetId(sa.Name) diff --git a/google/services/resourcemanager/data_source_google_service_account_key.go b/google/services/resourcemanager/data_source_google_service_account_key.go index 0f7d9d46b37..14af5b1932e 100644 --- a/google/services/resourcemanager/data_source_google_service_account_key.go +++ b/google/services/resourcemanager/data_source_google_service_account_key.go @@ -68,7 +68,7 @@ func dataSourceGoogleServiceAccountKeyRead(d *schema.ResourceData, meta interfac // Confirm the service account key exists sak, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Keys.Get(keyName).PublicKeyType(publicKeyType).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service Account Key %q", keyName)) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Service Account Key %q", keyName), keyName) } d.SetId(sak.Name) diff --git a/google/services/secretmanager/data_source_secret_manager_secret.go b/google/services/secretmanager/data_source_secret_manager_secret.go index e6cd825327b..8a070619f00 100644 --- a/google/services/secretmanager/data_source_secret_manager_secret.go +++ b/google/services/secretmanager/data_source_secret_manager_secret.go @@ -28,5 +28,13 @@ func dataSourceSecretManagerSecretRead(d *schema.ResourceData, meta interface{}) return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceSecretManagerSecretRead(d, meta) + err = resourceSecretManagerSecretRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/sourcerepo/data_source_sourcerepo_repository.go b/google/services/sourcerepo/data_source_sourcerepo_repository.go index 5c27099ccbf..03484b9dabe 100644 --- a/google/services/sourcerepo/data_source_sourcerepo_repository.go +++ b/google/services/sourcerepo/data_source_sourcerepo_repository.go @@ -33,5 +33,13 @@ func dataSourceGoogleSourceRepoRepositoryRead(d *schema.ResourceData, meta inter } d.SetId(id) - return resourceSourceRepoRepositoryRead(d, meta) + err = resourceSourceRepoRepositoryRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/spanner/data_source_spanner_instance.go b/google/services/spanner/data_source_spanner_instance.go index 5b77e82f547..97e6680eb9d 100644 --- a/google/services/spanner/data_source_spanner_instance.go +++ b/google/services/spanner/data_source_spanner_instance.go @@ -34,5 +34,13 @@ func dataSourceSpannerInstanceRead(d *schema.ResourceData, meta interface{}) err } d.SetId(id) - return resourceSpannerInstanceRead(d, meta) + err = resourceSpannerInstanceRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/sql/data_source_sql_database.go b/google/services/sql/data_source_sql_database.go index 037739c98c6..4fee85d0d86 100644 --- a/google/services/sql/data_source_sql_database.go +++ b/google/services/sql/data_source_sql_database.go @@ -29,11 +29,15 @@ func dataSourceSqlDatabaseRead(d *schema.ResourceData, meta interface{}) error { if err != nil { return fmt.Errorf("Error fetching project for Database: %s", err) } - d.SetId(fmt.Sprintf("projects/%s/instances/%s/databases/%s", project, d.Get("instance").(string), d.Get("name").(string))) + id := fmt.Sprintf("projects/%s/instances/%s/databases/%s", project, d.Get("instance").(string), d.Get("name").(string)) + d.SetId(id) err = resourceSQLDatabaseRead(d, meta) if err != nil { return err } + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } if err := d.Set("deletion_policy", nil); err != nil { return fmt.Errorf("Error setting deletion_policy: %s", err) } diff --git a/google/services/sql/data_source_sql_database_instance.go b/google/services/sql/data_source_sql_database_instance.go index 81e2d15fdd8..cc44717538c 100644 --- a/google/services/sql/data_source_sql_database_instance.go +++ b/google/services/sql/data_source_sql_database_instance.go @@ -3,6 +3,8 @@ package sql import ( + "fmt" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" "github.com/hashicorp/terraform-provider-google/google/tpgresource" ) @@ -20,7 +22,15 @@ func DataSourceSqlDatabaseInstance() *schema.Resource { } func dataSourceSqlDatabaseInstanceRead(d *schema.ResourceData, meta interface{}) error { + id := d.Get("name").(string) + err := resourceSqlDatabaseInstanceRead(d, meta) + if err != nil { + return err + } - return resourceSqlDatabaseInstanceRead(d, meta) + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/sql/data_source_sql_databases.go b/google/services/sql/data_source_sql_databases.go index 09482be1b57..cee05a66418 100644 --- a/google/services/sql/data_source_sql_databases.go +++ b/google/services/sql/data_source_sql_databases.go @@ -62,7 +62,7 @@ func dataSourceSqlDatabasesRead(d *schema.ResourceData, meta interface{}) error }) if err != nil { - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Databases in %q instance", d.Get("instance").(string))) + return transport_tpg.HandleDataSourceNotFoundError(err, d, fmt.Sprintf("Databases in %q instance", d.Get("instance").(string)), fmt.Sprintf("Databases in %q instance", d.Get("instance").(string))) } flattenedDatabases := flattenDatabases(databases.Items) diff --git a/google/services/storage/data_source_google_storage_project_service_account.go b/google/services/storage/data_source_google_storage_project_service_account.go index eac2ae55f08..46f5351b66a 100644 --- a/google/services/storage/data_source_google_storage_project_service_account.go +++ b/google/services/storage/data_source_google_storage_project_service_account.go @@ -57,7 +57,7 @@ func dataSourceGoogleStorageProjectServiceAccountRead(d *schema.ResourceData, me serviceAccount, err := serviceAccountGetRequest.Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, "GCS service account not found") + return transport_tpg.HandleDataSourceNotFoundError(err, d, "GCS service account not found", fmt.Sprintf("Project %q GCS service account", project)) } if err := d.Set("project", project); err != nil { diff --git a/google/services/storagetransfer/data_source_google_storage_transfer_project_service_account.go b/google/services/storagetransfer/data_source_google_storage_transfer_project_service_account.go index 2961665fb26..ae839bed30d 100644 --- a/google/services/storagetransfer/data_source_google_storage_transfer_project_service_account.go +++ b/google/services/storagetransfer/data_source_google_storage_transfer_project_service_account.go @@ -49,7 +49,7 @@ func dataSourceGoogleStorageTransferProjectServiceAccountRead(d *schema.Resource serviceAccount, err := config.NewStorageTransferClient(userAgent).GoogleServiceAccounts.Get(project).Do() if err != nil { - return transport_tpg.HandleNotFoundError(err, d, "Google Cloud Storage Transfer service account not found") + return transport_tpg.HandleDataSourceNotFoundError(err, d, "Google Cloud Storage Transfer service account not found", fmt.Sprintf("Project %q Google Cloud Storage Transfer account", project)) } d.SetId(serviceAccount.AccountEmail) diff --git a/google/services/vertexai/data_source_vertex_ai_index.go b/google/services/vertexai/data_source_vertex_ai_index.go index 2ce6cbd1472..2f994c779d5 100644 --- a/google/services/vertexai/data_source_vertex_ai_index.go +++ b/google/services/vertexai/data_source_vertex_ai_index.go @@ -31,5 +31,13 @@ func dataSourceVertexAIIndexRead(d *schema.ResourceData, meta interface{}) error return fmt.Errorf("Error constructing id: %s", err) } d.SetId(id) - return resourceVertexAIIndexRead(d, meta) + err = resourceVertexAIIndexRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/services/vpcaccess/data_source_vpc_access_connector.go b/google/services/vpcaccess/data_source_vpc_access_connector.go index 4898cf21cd0..bdb5658e1ac 100644 --- a/google/services/vpcaccess/data_source_vpc_access_connector.go +++ b/google/services/vpcaccess/data_source_vpc_access_connector.go @@ -32,5 +32,13 @@ func dataSourceVPCAccessConnectorRead(d *schema.ResourceData, meta interface{}) d.SetId(id) - return resourceVPCAccessConnectorRead(d, meta) + err = resourceVPCAccessConnectorRead(d, meta) + if err != nil { + return err + } + + if d.Id() == "" { + return fmt.Errorf("%s not found", id) + } + return nil } diff --git a/google/transport/transport.go b/google/transport/transport.go index 300a756abfc..d1f16928831 100644 --- a/google/transport/transport.go +++ b/google/transport/transport.go @@ -138,6 +138,15 @@ func HandleNotFoundError(err error, d *schema.ResourceData, resource string) err fmt.Sprintf("Error when reading or editing %s: {{err}}", resource), err) } +func HandleDataSourceNotFoundError(err error, d *schema.ResourceData, resource, url string) error { + if IsGoogleApiErrorWithCode(err, 404) { + return fmt.Errorf("%s not found", url) + } + + return errwrap.Wrapf( + fmt.Sprintf("Error when reading or editing %s: {{err}}", resource), err) +} + func IsGoogleApiErrorWithCode(err error, errCode int) bool { gerr, ok := errwrap.GetType(err, &googleapi.Error{}).(*googleapi.Error) return ok && gerr != nil && gerr.Code == errCode