From ff8b65e4d64e67195a65079a9b8f381c193cdcb3 Mon Sep 17 00:00:00 2001 From: Scott Suarez Date: Fri, 11 Sep 2020 15:34:04 -0700 Subject: [PATCH] Allow google.project.id for passing project to resource_project_service (#3975) * Alow project.id for passing project to resource_project_service * remove adjustProjectReference and utilize GetResourceNameFromSelfLink --- .gitignore | 3 +++ .../resource_google_project_service.go | 17 +++++++++-------- .../resource_google_project_service_test.go | 6 +++--- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 858c72df21be..b67eae6603ab 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,6 @@ tools/ansible-pr/templates/* # Used by OiCS tutorial build/* + +# vscode workspace settings +.vscode diff --git a/third_party/terraform/resources/resource_google_project_service.go b/third_party/terraform/resources/resource_google_project_service.go index 4bc861078c83..e774eef709cc 100644 --- a/third_party/terraform/resources/resource_google_project_service.go +++ b/third_party/terraform/resources/resource_google_project_service.go @@ -82,10 +82,11 @@ func resourceGoogleProjectService() *schema.Resource { ValidateFunc: StringNotInSlice(append(ignoredProjectServices, bannedProjectServices...), false), }, "project": { - Type: schema.TypeString, - Optional: true, - Computed: true, - ForceNew: true, + Type: schema.TypeString, + Optional: true, + Computed: true, + ForceNew: true, + DiffSuppressFunc: compareResourceNames, }, "disable_dependent_services": { @@ -119,12 +120,10 @@ func resourceGoogleProjectServiceCreate(d *schema.ResourceData, meta interface{} if err != nil { return err } + project = GetResourceNameFromSelfLink(project) srv := d.Get("service").(string) - id, err := replaceVars(d, config, "{{project}}/{{service}}") - if err != nil { - return fmt.Errorf("unable to construct ID: %s", err) - } + id := project + "/" + srv // Check if the service has already been enabled servicesRaw, err := BatchRequestReadServices(project, d, config) @@ -155,6 +154,7 @@ func resourceGoogleProjectServiceRead(d *schema.ResourceData, meta interface{}) if err != nil { return err } + project = GetResourceNameFromSelfLink(project) // Verify project for services still exists projectGetCall := config.clientResourceManager.Projects.Get(project) @@ -206,6 +206,7 @@ func resourceGoogleProjectServiceDelete(d *schema.ResourceData, meta interface{} if err != nil { return err } + project = GetResourceNameFromSelfLink(project) service := d.Get("service").(string) disableDependencies := d.Get("disable_dependent_services").(bool) diff --git a/third_party/terraform/tests/resource_google_project_service_test.go b/third_party/terraform/tests/resource_google_project_service_test.go index dd21670c8b74..5fcdb8a6b8c6 100644 --- a/third_party/terraform/tests/resource_google_project_service_test.go +++ b/third_party/terraform/tests/resource_google_project_service_test.go @@ -39,7 +39,7 @@ func TestAccProjectService_basic(t *testing.T) { ResourceName: "google_project_service.test2", ImportState: true, ImportStateVerify: true, - ImportStateVerifyIgnore: []string{"disable_on_destroy"}, + ImportStateVerifyIgnore: []string{"disable_on_destroy", "project"}, }, // Use a separate TestStep rather than a CheckDestroy because we need the project to still exist. { @@ -189,7 +189,7 @@ func testAccProjectService_basic(services []string, pid, name, org string) strin return fmt.Sprintf(` provider "google" { user_project_override = true -} +} resource "google_project" "acceptance" { project_id = "%s" name = "%s" @@ -202,7 +202,7 @@ resource "google_project_service" "test" { } resource "google_project_service" "test2" { - project = google_project.acceptance.project_id + project = google_project.acceptance.id service = "%s" } `, pid, name, org, services[0], services[1])