Skip to content

Commit 17247c0

Browse files
danawillowmodular-magician
authored andcommitted
add support for user project overrides
Signed-off-by: Modular Magician <[email protected]>
1 parent fe27035 commit 17247c0

File tree

214 files changed

+1916
-1144
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

214 files changed

+1916
-1144
lines changed

google/access_context_manager_operation.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ func (w *AccessContextManagerOperationWaiter) QueryOp() (interface{}, error) {
2828
}
2929
// Returns the proper get.
3030
url := fmt.Sprintf("https://accesscontextmanager.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
31-
return sendRequest(w.Config, "GET", url, nil)
31+
return sendRequest(w.Config, "GET", "", url, nil)
3232
}
3333

3434
func accessContextManagerOperationWaitTime(config *Config, op map[string]interface{}, activity string, timeoutMinutes int) error {

google/config.go

+8-7
Original file line numberDiff line numberDiff line change
@@ -55,13 +55,14 @@ import (
5555
// Config is the configuration structure used to instantiate the Google
5656
// provider.
5757
type Config struct {
58-
Credentials string
59-
AccessToken string
60-
Project string
61-
Region string
62-
Zone string
63-
Scopes []string
64-
BatchingConfig *batchingConfig
58+
Credentials string
59+
AccessToken string
60+
Project string
61+
Region string
62+
Zone string
63+
Scopes []string
64+
BatchingConfig *batchingConfig
65+
UserProjectOverride bool
6566

6667
client *http.Client
6768
userAgent string

google/data_source_google_client_openid_userinfo.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ func dataSourceGoogleClientOpenIDUserinfoRead(d *schema.ResourceData, meta inter
2424

2525
// See https://github.com/golang/oauth2/issues/306 for a recommendation to do this from a Go maintainer
2626
// URL retrieved from https://accounts.google.com/.well-known/openid-configuration
27-
res, err := sendRequest(config, "GET", "https://openidconnect.googleapis.com/v1/userinfo", nil)
27+
res, err := sendRequest(config, "GET", "", "https://openidconnect.googleapis.com/v1/userinfo", nil)
2828
if err != nil {
2929
return fmt.Errorf("error retrieving userinfo for your provider credentials; have you enabled the 'https://www.googleapis.com/auth/userinfo.email' scope? error: %s", err)
3030
}

google/data_source_google_composer_image_versions.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ func dataSourceGoogleComposerImageVersionsRead(d *schema.ResourceData, meta inte
6161
return err
6262
}
6363

64-
versions, err := paginatedListRequest(url, config, flattenGoogleComposerImageVersions)
64+
versions, err := paginatedListRequest(project, url, config, flattenGoogleComposerImageVersions)
6565
if err != nil {
6666
return fmt.Errorf("Error listing Composer image versions: %s", err)
6767
}

google/data_source_google_kms_crypto_key_version.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,12 @@ func dataSourceGoogleKmsCryptoKeyVersionRead(d *schema.ResourceData, meta interf
6565
}
6666

6767
log.Printf("[DEBUG] Getting attributes for CryptoKeyVersion: %#v", url)
68-
res, err := sendRequest(config, "GET", url, nil)
68+
69+
cryptoKeyId, err := parseKmsCryptoKeyId(d.Get("crypto_key").(string), config)
70+
if err != nil {
71+
return err
72+
}
73+
res, err := sendRequest(config, "GET", cryptoKeyId.KeyRingId.Project, url, nil)
6974
if err != nil {
7075
return handleNotFoundError(err, d, fmt.Sprintf("KmsCryptoKeyVersion %q", d.Id()))
7176
}
@@ -89,7 +94,7 @@ func dataSourceGoogleKmsCryptoKeyVersionRead(d *schema.ResourceData, meta interf
8994
}
9095

9196
log.Printf("[DEBUG] Getting purpose of CryptoKey: %#v", url)
92-
res, err = sendRequest(config, "GET", url, nil)
97+
res, err = sendRequest(config, "GET", cryptoKeyId.KeyRingId.Project, url, nil)
9398
if err != nil {
9499
return handleNotFoundError(err, d, fmt.Sprintf("KmsCryptoKey %q", d.Id()))
95100
}
@@ -100,7 +105,7 @@ func dataSourceGoogleKmsCryptoKeyVersionRead(d *schema.ResourceData, meta interf
100105
return err
101106
}
102107
log.Printf("[DEBUG] Getting public key of CryptoKeyVersion: %#v", url)
103-
res, _ = sendRequest(config, "GET", url, nil)
108+
res, _ = sendRequest(config, "GET", cryptoKeyId.KeyRingId.Project, url, nil)
104109

105110
if err := d.Set("public_key", flattenKmsCryptoKeyVersionPublicKey(res, d)); err != nil {
106111
return fmt.Errorf("Error reading CryptoKeyVersion public key: %s", err)

google/data_source_google_projects.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package google
22

33
import (
44
"fmt"
5+
56
"github.com/hashicorp/terraform/helper/schema"
67
)
78

@@ -44,7 +45,7 @@ func datasourceGoogleProjectsRead(d *schema.ResourceData, meta interface{}) erro
4445
return err
4546
}
4647

47-
res, err := sendRequest(config, "GET", url, nil)
48+
res, err := sendRequest(config, "GET", "", url, nil)
4849
if err != nil {
4950
return fmt.Errorf("Error retrieving projects: %s", err)
5051
}

google/data_source_google_storage_bucket_object.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func dataSourceGoogleStorageBucketObjectRead(d *schema.ResourceData, meta interf
3535
// Using REST apis because the storage go client doesn't support folders
3636
url := fmt.Sprintf("https://www.googleapis.com/storage/v1/b/%s/o/%s", bucket, name)
3737

38-
res, err := sendRequest(config, "GET", url, nil)
38+
res, err := sendRequest(config, "GET", "", url, nil)
3939
if err != nil {
4040
return fmt.Errorf("Error retrieving storage bucket object: %s", err)
4141
}

google/data_source_tpu_tensorflow_versions.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ func dataSourceTpuTensorFlowVersionsRead(d *schema.ResourceData, meta interface{
5050
return err
5151
}
5252

53-
versionsRaw, err := paginatedListRequest(url, config, flattenTpuTensorflowVersions)
53+
versionsRaw, err := paginatedListRequest(project, url, config, flattenTpuTensorflowVersions)
5454
if err != nil {
5555
return fmt.Errorf("Error listing TPU Tensorflow versions: %s", err)
5656
}

google/filestore_operation.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import (
1818
)
1919

2020
type FilestoreOperationWaiter struct {
21-
Config *Config
21+
Config *Config
22+
Project string
2223
CommonOperationWaiter
2324
}
2425

@@ -28,7 +29,7 @@ func (w *FilestoreOperationWaiter) QueryOp() (interface{}, error) {
2829
}
2930
// Returns the proper get.
3031
url := fmt.Sprintf("https://file.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
31-
return sendRequest(w.Config, "GET", url, nil)
32+
return sendRequest(w.Config, "GET", w.Project, url, nil)
3233
}
3334

3435
func filestoreOperationWaitTime(config *Config, op map[string]interface{}, project, activity string, timeoutMinutes int) error {
@@ -37,7 +38,8 @@ func filestoreOperationWaitTime(config *Config, op map[string]interface{}, proje
3738
return nil
3839
}
3940
w := &FilestoreOperationWaiter{
40-
Config: config,
41+
Config: config,
42+
Project: project,
4143
}
4244
if err := w.CommonOperationWaiter.SetOp(op); err != nil {
4345
return err

google/firestore_operation.go

+5-3
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import (
1818
)
1919

2020
type FirestoreOperationWaiter struct {
21-
Config *Config
21+
Config *Config
22+
Project string
2223
CommonOperationWaiter
2324
}
2425

@@ -28,7 +29,7 @@ func (w *FirestoreOperationWaiter) QueryOp() (interface{}, error) {
2829
}
2930
// Returns the proper get.
3031
url := fmt.Sprintf("https://firestore.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
31-
return sendRequest(w.Config, "GET", url, nil)
32+
return sendRequest(w.Config, "GET", w.Project, url, nil)
3233
}
3334

3435
func firestoreOperationWaitTime(config *Config, op map[string]interface{}, project, activity string, timeoutMinutes int) error {
@@ -37,7 +38,8 @@ func firestoreOperationWaitTime(config *Config, op map[string]interface{}, proje
3738
return nil
3839
}
3940
w := &FirestoreOperationWaiter{
40-
Config: config,
41+
Config: config,
42+
Project: project,
4143
}
4244
if err := w.CommonOperationWaiter.SetOp(op); err != nil {
4345
return err

google/iam_pubsub_topic.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,12 @@ func PubsubTopicIdParseFunc(d *schema.ResourceData, config *Config) error {
9696
func (u *PubsubTopicIamUpdater) GetResourceIamPolicy() (*cloudresourcemanager.Policy, error) {
9797
url := u.qualifyTopicUrl("getIamPolicy")
9898

99-
policy, err := sendRequest(u.Config, "GET", url, nil)
99+
project, err := getProject(u.d, u.Config)
100+
if err != nil {
101+
return nil, err
102+
}
103+
104+
policy, err := sendRequest(u.Config, "GET", project, url, nil)
100105
if err != nil {
101106
return nil, errwrap.Wrapf(fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
102107
}
@@ -121,7 +126,12 @@ func (u *PubsubTopicIamUpdater) SetResourceIamPolicy(policy *cloudresourcemanage
121126

122127
url := u.qualifyTopicUrl("setIamPolicy")
123128

124-
_, err = sendRequestWithTimeout(u.Config, "POST", url, obj, u.d.Timeout(schema.TimeoutCreate))
129+
project, err := getProject(u.d, u.Config)
130+
if err != nil {
131+
return err
132+
}
133+
134+
_, err = sendRequestWithTimeout(u.Config, "POST", project, url, obj, u.d.Timeout(schema.TimeoutCreate))
125135
if err != nil {
126136
return errwrap.Wrapf(fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
127137
}

google/iam_source_repo_repository.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,12 @@ func SourceRepoRepositoryIdParseFunc(d *schema.ResourceData, config *Config) err
9696
func (u *SourceRepoRepositoryIamUpdater) GetResourceIamPolicy() (*cloudresourcemanager.Policy, error) {
9797
url := u.qualifyRepositoryUrl("getIamPolicy")
9898

99-
policy, err := sendRequest(u.Config, "GET", url, nil)
99+
project, err := getProject(u.d, u.Config)
100+
if err != nil {
101+
return nil, err
102+
}
103+
104+
policy, err := sendRequest(u.Config, "GET", project, url, nil)
100105
if err != nil {
101106
return nil, errwrap.Wrapf(fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
102107
}
@@ -121,7 +126,12 @@ func (u *SourceRepoRepositoryIamUpdater) SetResourceIamPolicy(policy *cloudresou
121126

122127
url := u.qualifyRepositoryUrl("setIamPolicy")
123128

124-
_, err = sendRequestWithTimeout(u.Config, "POST", url, obj, u.d.Timeout(schema.TimeoutCreate))
129+
project, err := getProject(u.d, u.Config)
130+
if err != nil {
131+
return err
132+
}
133+
134+
_, err = sendRequestWithTimeout(u.Config, "POST", project, url, obj, u.d.Timeout(schema.TimeoutCreate))
125135
if err != nil {
126136
return errwrap.Wrapf(fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
127137
}

google/provider.go

+9-3
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ func Provider() terraform.ResourceProvider {
9797
},
9898
},
9999

100+
"user_project_override": {
101+
Type: schema.TypeBool,
102+
Optional: true,
103+
},
104+
100105
// Generated Products
101106
AccessContextManagerCustomEndpointEntryKey: AccessContextManagerCustomEndpointEntry,
102107
AppEngineCustomEndpointEntryKey: AppEngineCustomEndpointEntry,
@@ -357,9 +362,10 @@ func ResourceMapWithErrors() (map[string]*schema.Resource, error) {
357362

358363
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
359364
config := Config{
360-
Project: d.Get("project").(string),
361-
Region: d.Get("region").(string),
362-
Zone: d.Get("zone").(string),
365+
Project: d.Get("project").(string),
366+
Region: d.Get("region").(string),
367+
Zone: d.Get("zone").(string),
368+
UserProjectOverride: d.Get("user_project_override").(bool),
363369
}
364370

365371
// Add credential source

0 commit comments

Comments
 (0)