Skip to content

Commit df0bdc0

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

File tree

149 files changed

+1676
-1074
lines changed

Some content is hidden

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

149 files changed

+1676
-1074
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,
@@ -355,9 +360,10 @@ func ResourceMapWithErrors() (map[string]*schema.Resource, error) {
355360

356361
func providerConfigure(d *schema.ResourceData) (interface{}, error) {
357362
config := Config{
358-
Project: d.Get("project").(string),
359-
Region: d.Get("region").(string),
360-
Zone: d.Get("zone").(string),
363+
Project: d.Get("project").(string),
364+
Region: d.Get("region").(string),
365+
Zone: d.Get("zone").(string),
366+
UserProjectOverride: d.Get("user_project_override").(bool),
361367
}
362368

363369
// Add credential source

google/redis_operation.go

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

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

@@ -28,7 +29,7 @@ func (w *RedisOperationWaiter) QueryOp() (interface{}, error) {
2829
}
2930
// Returns the proper get.
3031
url := fmt.Sprintf("https://redis.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 redisOperationWaitTime(config *Config, op map[string]interface{}, project, activity string, timeoutMinutes int) error {
@@ -37,7 +38,8 @@ func redisOperationWaitTime(config *Config, op map[string]interface{}, project,
3738
return nil
3839
}
3940
w := &RedisOperationWaiter{
40-
Config: config,
41+
Config: config,
42+
Project: project,
4143
}
4244
if err := w.CommonOperationWaiter.SetOp(op); err != nil {
4345
return err

google/resource_access_context_manager_access_level.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -204,7 +204,7 @@ func resourceAccessContextManagerAccessLevelCreate(d *schema.ResourceData, meta
204204
}
205205

206206
log.Printf("[DEBUG] Creating new AccessLevel: %#v", obj)
207-
res, err := sendRequestWithTimeout(config, "POST", url, obj, d.Timeout(schema.TimeoutCreate))
207+
res, err := sendRequestWithTimeout(config, "POST", "", url, obj, d.Timeout(schema.TimeoutCreate))
208208
if err != nil {
209209
return fmt.Errorf("Error creating AccessLevel: %s", err)
210210
}
@@ -239,7 +239,7 @@ func resourceAccessContextManagerAccessLevelRead(d *schema.ResourceData, meta in
239239
return err
240240
}
241241

242-
res, err := sendRequest(config, "GET", url, nil)
242+
res, err := sendRequest(config, "GET", "", url, nil)
243243
if err != nil {
244244
return handleNotFoundError(err, d, fmt.Sprintf("AccessContextManagerAccessLevel %q", d.Id()))
245245
}
@@ -313,7 +313,7 @@ func resourceAccessContextManagerAccessLevelUpdate(d *schema.ResourceData, meta
313313
if err != nil {
314314
return err
315315
}
316-
res, err := sendRequestWithTimeout(config, "PATCH", url, obj, d.Timeout(schema.TimeoutUpdate))
316+
res, err := sendRequestWithTimeout(config, "PATCH", "", url, obj, d.Timeout(schema.TimeoutUpdate))
317317

318318
if err != nil {
319319
return fmt.Errorf("Error updating AccessLevel %q: %s", d.Id(), err)
@@ -340,7 +340,8 @@ func resourceAccessContextManagerAccessLevelDelete(d *schema.ResourceData, meta
340340

341341
var obj map[string]interface{}
342342
log.Printf("[DEBUG] Deleting AccessLevel %q", d.Id())
343-
res, err := sendRequestWithTimeout(config, "DELETE", url, obj, d.Timeout(schema.TimeoutDelete))
343+
344+
res, err := sendRequestWithTimeout(config, "DELETE", "", url, obj, d.Timeout(schema.TimeoutDelete))
344345
if err != nil {
345346
return handleNotFoundError(err, d, "AccessLevel")
346347
}

google/resource_access_context_manager_access_policy.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ func resourceAccessContextManagerAccessPolicyCreate(d *schema.ResourceData, meta
9090
}
9191

9292
log.Printf("[DEBUG] Creating new AccessPolicy: %#v", obj)
93-
res, err := sendRequestWithTimeout(config, "POST", url, obj, d.Timeout(schema.TimeoutCreate))
93+
res, err := sendRequestWithTimeout(config, "POST", "", url, obj, d.Timeout(schema.TimeoutCreate))
9494
if err != nil {
9595
return fmt.Errorf("Error creating AccessPolicy: %s", err)
9696
}
@@ -135,7 +135,7 @@ func resourceAccessContextManagerAccessPolicyRead(d *schema.ResourceData, meta i
135135
return err
136136
}
137137

138-
res, err := sendRequest(config, "GET", url, nil)
138+
res, err := sendRequest(config, "GET", "", url, nil)
139139
if err != nil {
140140
return handleNotFoundError(err, d, fmt.Sprintf("AccessContextManagerAccessPolicy %q", d.Id()))
141141
}
@@ -187,7 +187,7 @@ func resourceAccessContextManagerAccessPolicyUpdate(d *schema.ResourceData, meta
187187
if err != nil {
188188
return err
189189
}
190-
res, err := sendRequestWithTimeout(config, "PATCH", url, obj, d.Timeout(schema.TimeoutUpdate))
190+
res, err := sendRequestWithTimeout(config, "PATCH", "", url, obj, d.Timeout(schema.TimeoutUpdate))
191191

192192
if err != nil {
193193
return fmt.Errorf("Error updating AccessPolicy %q: %s", d.Id(), err)
@@ -214,7 +214,8 @@ func resourceAccessContextManagerAccessPolicyDelete(d *schema.ResourceData, meta
214214

215215
var obj map[string]interface{}
216216
log.Printf("[DEBUG] Deleting AccessPolicy %q", d.Id())
217-
res, err := sendRequestWithTimeout(config, "DELETE", url, obj, d.Timeout(schema.TimeoutDelete))
217+
218+
res, err := sendRequestWithTimeout(config, "DELETE", "", url, obj, d.Timeout(schema.TimeoutDelete))
218219
if err != nil {
219220
return handleNotFoundError(err, d, "AccessPolicy")
220221
}

google/resource_access_context_manager_service_perimeter.go

+5-4
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ func resourceAccessContextManagerServicePerimeterCreate(d *schema.ResourceData,
162162
}
163163

164164
log.Printf("[DEBUG] Creating new ServicePerimeter: %#v", obj)
165-
res, err := sendRequestWithTimeout(config, "POST", url, obj, d.Timeout(schema.TimeoutCreate))
165+
res, err := sendRequestWithTimeout(config, "POST", "", url, obj, d.Timeout(schema.TimeoutCreate))
166166
if err != nil {
167167
return fmt.Errorf("Error creating ServicePerimeter: %s", err)
168168
}
@@ -197,7 +197,7 @@ func resourceAccessContextManagerServicePerimeterRead(d *schema.ResourceData, me
197197
return err
198198
}
199199

200-
res, err := sendRequest(config, "GET", url, nil)
200+
res, err := sendRequest(config, "GET", "", url, nil)
201201
if err != nil {
202202
return handleNotFoundError(err, d, fmt.Sprintf("AccessContextManagerServicePerimeter %q", d.Id()))
203203
}
@@ -280,7 +280,7 @@ func resourceAccessContextManagerServicePerimeterUpdate(d *schema.ResourceData,
280280
if err != nil {
281281
return err
282282
}
283-
res, err := sendRequestWithTimeout(config, "PATCH", url, obj, d.Timeout(schema.TimeoutUpdate))
283+
res, err := sendRequestWithTimeout(config, "PATCH", "", url, obj, d.Timeout(schema.TimeoutUpdate))
284284

285285
if err != nil {
286286
return fmt.Errorf("Error updating ServicePerimeter %q: %s", d.Id(), err)
@@ -307,7 +307,8 @@ func resourceAccessContextManagerServicePerimeterDelete(d *schema.ResourceData,
307307

308308
var obj map[string]interface{}
309309
log.Printf("[DEBUG] Deleting ServicePerimeter %q", d.Id())
310-
res, err := sendRequestWithTimeout(config, "DELETE", url, obj, d.Timeout(schema.TimeoutDelete))
310+
311+
res, err := sendRequestWithTimeout(config, "DELETE", "", url, obj, d.Timeout(schema.TimeoutDelete))
311312
if err != nil {
312313
return handleNotFoundError(err, d, "ServicePerimeter")
313314
}

0 commit comments

Comments
 (0)