From d8f198017b48bc2a44d8f718446b5c0e366a4709 Mon Sep 17 00:00:00 2001 From: The Magician Date: Mon, 11 Nov 2019 17:52:48 -0800 Subject: [PATCH] allow {{project_id_or_project}} in assetName (#246) Signed-off-by: Modular Magician --- google/project.go | 4 ++-- google/transport.go | 23 +++++++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/google/project.go b/google/project.go index c7ab76f8a..8710348ec 100644 --- a/google/project.go +++ b/google/project.go @@ -11,7 +11,7 @@ import ( func GetProjectCaiObject(d TerraformResourceData, config *Config) (Asset, error) { // NOTE: asset.name should use the project number, but we use project_id b/c // the number is computed server-side. - name, err := assetName(d, config, "//cloudresourcemanager.googleapis.com/projects/{{project}}") + name, err := assetName(d, config, "//cloudresourcemanager.googleapis.com/projects/{{project_id_or_project}}") if err != nil { return Asset{}, err } @@ -76,7 +76,7 @@ func getParentResourceId(d TerraformResourceData, p *cloudresourcemanager.Projec } func GetProjectBillingInfoCaiObject(d TerraformResourceData, config *Config) (Asset, error) { - name, err := assetName(d, config, "//cloudbilling.googleapis.com/projects/{{project}}/billingInfo") + name, err := assetName(d, config, "//cloudbilling.googleapis.com/projects/{{project_id_or_project}}/billingInfo") if err != nil { return Asset{}, err } diff --git a/google/transport.go b/google/transport.go index e9e50e1ba..2422085f1 100644 --- a/google/transport.go +++ b/google/transport.go @@ -137,10 +137,10 @@ func replaceVars(d TerraformResourceData, config *Config, linkTmpl string) (stri } // This function replaces references to Terraform properties (in the form of {{var}}) with their value in Terraform -// It also replaces {{project}}, {{region}}, and {{zone}} with their appropriate values +// It also replaces {{project}}, {{project_id_or_project}}, {{region}}, and {{zone}} with their appropriate values // This function supports URL-encoding the result by prepending '%' to the field name e.g. {{%var}} func buildReplacementFunc(re *regexp.Regexp, d TerraformResourceData, config *Config, linkTmpl string) (func(string) string, error) { - var project, region, zone string + var project, projectID, region, zone string var err error if strings.Contains(linkTmpl, "{{project}}") { @@ -150,6 +150,19 @@ func buildReplacementFunc(re *regexp.Regexp, d TerraformResourceData, config *Co } } + if strings.Contains(linkTmpl, "{{project_id_or_project}}") { + v, ok := d.GetOkExists("project_id") + if ok { + projectID, _ = v.(string) + } + if projectID == "" { + project, err = getProject(d, config) + } + if err != nil { + return nil, err + } + } + if strings.Contains(linkTmpl, "{{region}}") { region, err = getRegion(d, config) if err != nil { @@ -169,6 +182,12 @@ func buildReplacementFunc(re *regexp.Regexp, d TerraformResourceData, config *Co if m == "project" { return project } + if m == "project_id_or_project" { + if projectID != "" { + return projectID + } + return project + } if m == "region" { return region }