From 8d9a702166f4c2886d7e4511e3be9f7ea640de50 Mon Sep 17 00:00:00 2001 From: The Magician Date: Wed, 24 Mar 2021 10:08:50 -0700 Subject: [PATCH] Follow user project override settings in Cloud Identity datasources (#4612) (#3081) Signed-off-by: Modular Magician --- .changelog/4612.txt | 3 +++ ...source_cloud_identity_group_memberships.go | 19 ++++++++++++++++++- .../data_source_cloud_identity_groups.go | 19 ++++++++++++++++++- google-beta/resource_dataproc_cluster_test.go | 3 +-- 4 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 .changelog/4612.txt diff --git a/.changelog/4612.txt b/.changelog/4612.txt new file mode 100644 index 0000000000..8d68fd4be5 --- /dev/null +++ b/.changelog/4612.txt @@ -0,0 +1,3 @@ +```release-note:bug +cloudidentity: `google_cloud_identity_groups` and `google_cloud_identity_group_memberships ` will respect the `user_project_override` and `billing_project` configurations and send the appropriate headers to establish a quota project +``` diff --git a/google-beta/data_source_cloud_identity_group_memberships.go b/google-beta/data_source_cloud_identity_group_memberships.go index 2f919628c1..849196f376 100644 --- a/google-beta/data_source_cloud_identity_group_memberships.go +++ b/google-beta/data_source_cloud_identity_group_memberships.go @@ -43,8 +43,25 @@ func dataSourceGoogleCloudIdentityGroupMembershipsRead(d *schema.ResourceData, m } result := []map[string]interface{}{} - err = config.NewCloudIdentityClient(userAgent).Groups.Memberships.List(d.Get("group").(string)).View("FULL").Pages(config.context, func(resp *cloudidentity.ListMembershipsResponse) error { + membershipsCall := config.NewCloudIdentityClient(userAgent).Groups.Memberships.List(d.Get("group").(string)).View("FULL") + if config.UserProjectOverride { + billingProject := "" + // err may be nil - project isn't required for this resource + if project, err := getProject(d, config); err == nil { + billingProject = project + } + + // err == nil indicates that the billing_project value was found + if bp, err := getBillingProject(d, config); err == nil { + billingProject = bp + } + + if billingProject != "" { + membershipsCall.Header().Set("X-Goog-User-Project", billingProject) + } + } + err = membershipsCall.Pages(config.context, func(resp *cloudidentity.ListMembershipsResponse) error { for _, member := range resp.Memberships { result = append(result, map[string]interface{}{ "name": member.Name, diff --git a/google-beta/data_source_cloud_identity_groups.go b/google-beta/data_source_cloud_identity_groups.go index bdd1151a53..cbfb85d391 100644 --- a/google-beta/data_source_cloud_identity_groups.go +++ b/google-beta/data_source_cloud_identity_groups.go @@ -46,7 +46,24 @@ func dataSourceGoogleCloudIdentityGroupsRead(d *schema.ResourceData, meta interf } result := []map[string]interface{}{} - err = config.NewCloudIdentityClient(userAgent).Groups.List().Parent(d.Get("parent").(string)).View("FULL").Pages(config.context, func(resp *cloudidentity.ListGroupsResponse) error { + groupsCall := config.NewCloudIdentityClient(userAgent).Groups.List().Parent(d.Get("parent").(string)).View("FULL") + if config.UserProjectOverride { + billingProject := "" + // err may be nil - project isn't required for this resource + if project, err := getProject(d, config); err == nil { + billingProject = project + } + + // err == nil indicates that the billing_project value was found + if bp, err := getBillingProject(d, config); err == nil { + billingProject = bp + } + + if billingProject != "" { + groupsCall.Header().Set("X-Goog-User-Project", billingProject) + } + } + err = groupsCall.Pages(config.context, func(resp *cloudidentity.ListGroupsResponse) error { for _, group := range resp.Groups { result = append(result, map[string]interface{}{ "name": group.Name, diff --git a/google-beta/resource_dataproc_cluster_test.go b/google-beta/resource_dataproc_cluster_test.go index 2508a876a2..88c15ce8f0 100644 --- a/google-beta/resource_dataproc_cluster_test.go +++ b/google-beta/resource_dataproc_cluster_test.go @@ -13,9 +13,8 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" - "google.golang.org/api/googleapi" - dataproc "google.golang.org/api/dataproc/v1beta2" + "google.golang.org/api/googleapi" ) func TestDataprocExtractInitTimeout(t *testing.T) {