From 85d0087d75b53414e8c50f44398d53b749d25ceb Mon Sep 17 00:00:00 2001 From: Dana Hoffman Date: Mon, 6 Apr 2020 15:21:46 -0700 Subject: [PATCH 1/2] move deleted project check into project service read --- .../resources/resource_google_project.go | 13 ------------- .../resources/resource_google_project_service.go | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 14 deletions(-) diff --git a/third_party/terraform/resources/resource_google_project.go b/third_party/terraform/resources/resource_google_project.go index f1434177a198..644d0eb8b465 100644 --- a/third_party/terraform/resources/resource_google_project.go +++ b/third_party/terraform/resources/resource_google_project.go @@ -573,19 +573,6 @@ func doEnableServicesRequest(services []string, project string, config *Config, // forms of the service. LIST responses are expected to return only the old or // new form, but we'll always return both. func listCurrentlyEnabledServices(project string, config *Config, timeout time.Duration) (map[string]struct{}, error) { - // Verify project for services still exists - p, err := config.clientResourceManager.Projects.Get(project).Do() - if err != nil { - return nil, err - } - if p.LifecycleState == "DELETE_REQUESTED" { - // Construct a 404 error for handleNotFoundError - return nil, &googleapi.Error{ - Code: 404, - Message: "Project deletion was requested", - } - } - log.Printf("[DEBUG] Listing enabled services for project %s", project) apiServices := make(map[string]struct{}) err = retryTimeDuration(func() error { diff --git a/third_party/terraform/resources/resource_google_project_service.go b/third_party/terraform/resources/resource_google_project_service.go index d015200f4c2e..7dea7ac1ad1c 100644 --- a/third_party/terraform/resources/resource_google_project_service.go +++ b/third_party/terraform/resources/resource_google_project_service.go @@ -7,6 +7,7 @@ import ( "time" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" + "google.golang.org/api/googleapi" "google.golang.org/api/serviceusage/v1" ) @@ -154,7 +155,19 @@ func resourceGoogleProjectServiceRead(d *schema.ResourceData, meta interface{}) if err != nil { return err } - srv := d.Get("service").(string) + + // Verify project for services still exists + p, err := config.clientResourceManager.Projects.Get(project).Do() + if err != nil { + return nil, err + } + if p.LifecycleState == "DELETE_REQUESTED" { + // Construct a 404 error for handleNotFoundError + return nil, &googleapi.Error{ + Code: 404, + Message: "Project deletion was requested", + } + } servicesRaw, err := BatchRequestReadServices(project, d, config) if err != nil { @@ -162,6 +175,7 @@ func resourceGoogleProjectServiceRead(d *schema.ResourceData, meta interface{}) } servicesList := servicesRaw.(map[string]struct{}) + srv := d.Get("service").(string) if _, ok := servicesList[srv]; ok { d.Set("project", project) d.Set("service", srv) From c9cb8c3fab6f3d72ee315c33276c881a11477414 Mon Sep 17 00:00:00 2001 From: Dana Hoffman Date: Mon, 6 Apr 2020 15:52:25 -0700 Subject: [PATCH 2/2] compile --- third_party/terraform/resources/resource_google_project.go | 2 +- .../terraform/resources/resource_google_project_service.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/third_party/terraform/resources/resource_google_project.go b/third_party/terraform/resources/resource_google_project.go index 644d0eb8b465..5bf38d717e17 100644 --- a/third_party/terraform/resources/resource_google_project.go +++ b/third_party/terraform/resources/resource_google_project.go @@ -575,7 +575,7 @@ func doEnableServicesRequest(services []string, project string, config *Config, func listCurrentlyEnabledServices(project string, config *Config, timeout time.Duration) (map[string]struct{}, error) { log.Printf("[DEBUG] Listing enabled services for project %s", project) apiServices := make(map[string]struct{}) - err = retryTimeDuration(func() error { + err := retryTimeDuration(func() error { ctx := context.Background() return config.clientServiceUsage.Services. List(fmt.Sprintf("projects/%s", project)). diff --git a/third_party/terraform/resources/resource_google_project_service.go b/third_party/terraform/resources/resource_google_project_service.go index 7dea7ac1ad1c..8b1589d166cd 100644 --- a/third_party/terraform/resources/resource_google_project_service.go +++ b/third_party/terraform/resources/resource_google_project_service.go @@ -159,11 +159,11 @@ func resourceGoogleProjectServiceRead(d *schema.ResourceData, meta interface{}) // Verify project for services still exists p, err := config.clientResourceManager.Projects.Get(project).Do() if err != nil { - return nil, err + return err } if p.LifecycleState == "DELETE_REQUESTED" { // Construct a 404 error for handleNotFoundError - return nil, &googleapi.Error{ + return &googleapi.Error{ Code: 404, Message: "Project deletion was requested", }