Skip to content

Commit c9f5596

Browse files
feat: (storagetransfer) added user_project_override for storage_transfer_job (#15064)
1 parent e9c7b3b commit c9f5596

File tree

2 files changed

+62
-4
lines changed

2 files changed

+62
-4
lines changed

mmv1/third_party/terraform/services/storagetransfer/resource_storage_transfer_job.go

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -989,11 +989,22 @@ func resourceStorageTransferJobCreate(d *schema.ResourceData, meta interface{})
989989
ServiceAccount: d.Get("service_account").(string),
990990
}
991991

992+
billingProject := project
993+
994+
// err == nil indicates that the billing_project value was found
995+
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
996+
billingProject = bp
997+
}
998+
992999
var res *storagetransfer.TransferJob
9931000

9941001
err = transport_tpg.Retry(transport_tpg.RetryOptions{
9951002
RetryFunc: func() error {
996-
res, err = config.NewStorageTransferClient(userAgent).TransferJobs.Create(transferJob).Do()
1003+
createCall := config.NewStorageTransferClient(userAgent).TransferJobs.Create(transferJob)
1004+
if config.UserProjectOverride {
1005+
createCall.Header().Add("X-Goog-User-Project", billingProject)
1006+
}
1007+
res, err = createCall.Do()
9971008
return err
9981009
},
9991010
})
@@ -1025,8 +1036,19 @@ func resourceStorageTransferJobRead(d *schema.ResourceData, meta interface{}) er
10251036
return err
10261037
}
10271038

1039+
billingProject := project
1040+
// err == nil indicates that the billing_project value was found
1041+
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
1042+
billingProject = bp
1043+
}
1044+
10281045
name := d.Get("name").(string)
1029-
res, err := config.NewStorageTransferClient(userAgent).TransferJobs.Get(name, project).Do()
1046+
readCall := config.NewStorageTransferClient(userAgent).TransferJobs.Get(name, project)
1047+
if config.UserProjectOverride {
1048+
readCall.Header().Add("X-Goog-User-Project", billingProject)
1049+
}
1050+
1051+
res, err := readCall.Do()
10301052
if err != nil {
10311053
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Transfer Job %q", name))
10321054
}
@@ -1184,7 +1206,18 @@ func resourceStorageTransferJobUpdate(d *schema.ResourceData, meta interface{})
11841206

11851207
updateRequest.UpdateTransferJobFieldMask = strings.Join(fieldMask, ",")
11861208

1187-
res, err := config.NewStorageTransferClient(userAgent).TransferJobs.Patch(d.Get("name").(string), updateRequest).Do()
1209+
billingProject := project
1210+
// err == nil indicates that the billing_project value was found
1211+
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
1212+
billingProject = bp
1213+
}
1214+
1215+
updateCall := config.NewStorageTransferClient(userAgent).TransferJobs.Patch(d.Get("name").(string), updateRequest)
1216+
if config.UserProjectOverride {
1217+
updateCall.Header().Add("X-Goog-User-Project", billingProject)
1218+
}
1219+
1220+
res, err := updateCall.Do()
11881221
if err != nil {
11891222
return err
11901223
}
@@ -1220,10 +1253,21 @@ func resourceStorageTransferJobDelete(d *schema.ResourceData, meta interface{})
12201253

12211254
updateRequest.UpdateTransferJobFieldMask = fieldMask
12221255

1256+
billingProject := project
1257+
1258+
// err == nil indicates that the billing_project value was found
1259+
if bp, err := tpgresource.GetBillingProject(d, config); err == nil {
1260+
billingProject = bp
1261+
}
1262+
12231263
// Update transfer job with status set to DELETE
12241264
log.Printf("[DEBUG] Setting status to DELETE for: %v\n\n", transferJobName)
12251265
err = retry.Retry(1*time.Minute, func() *retry.RetryError {
1226-
_, err := config.NewStorageTransferClient(userAgent).TransferJobs.Patch(transferJobName, updateRequest).Do()
1266+
deleteCall := config.NewStorageTransferClient(userAgent).TransferJobs.Patch(transferJobName, updateRequest)
1267+
if config.UserProjectOverride {
1268+
deleteCall.Header().Add("X-Goog-User-Project", billingProject)
1269+
}
1270+
_, err := deleteCall.Do()
12271271
if err != nil {
12281272
return retry.RetryableError(err)
12291273
}

mmv1/third_party/terraform/services/storagetransfer/resource_storage_transfer_job_test.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -194,6 +194,7 @@ func TestAccStorageTransferJob_transferJobName(t *testing.T) {
194194
testDataSourceBucketName := acctest.RandString(t, 10)
195195
testDataSinkName := acctest.RandString(t, 10)
196196
testTransferJobDescription := acctest.RandString(t, 10)
197+
testTransferUpdateJobDescription := acctest.RandString(t, 10)
197198
testTransferJobName := fmt.Sprintf("tf-test-transfer-job-%s", acctest.RandString(t, 10))
198199

199200
acctest.VcrTest(t, resource.TestCase{
@@ -209,6 +210,14 @@ func TestAccStorageTransferJob_transferJobName(t *testing.T) {
209210
ImportState: true,
210211
ImportStateVerify: true,
211212
},
213+
{
214+
Config: testAccStorageTransferJob_transferJobName(envvar.GetTestProjectFromEnv(), testDataSourceBucketName, testDataSinkName, testTransferUpdateJobDescription, testTransferJobName),
215+
},
216+
{
217+
ResourceName: "google_storage_transfer_job.transfer_job",
218+
ImportState: true,
219+
ImportStateVerify: true,
220+
},
212221
},
213222
})
214223
}
@@ -1191,6 +1200,10 @@ resource "google_storage_transfer_job" "transfer_job" {
11911200

11921201
func testAccStorageTransferJob_transferJobName(project string, dataSourceBucketName string, dataSinkBucketName string, transferJobDescription string, testTransferJobName string) string {
11931202
return fmt.Sprintf(`
1203+
provider "google" {
1204+
alias = "user-project-override"
1205+
user_project_override = true
1206+
}
11941207
data "google_storage_transfer_project_service_account" "default" {
11951208
project = "%s"
11961209
}
@@ -1227,6 +1240,7 @@ func testAccStorageTransferJob_transferJobName(project string, dataSourceBucketN
12271240
name = "transferJobs/%s"
12281241
description = "%s"
12291242
project = "%s"
1243+
provider = google.user-project-override
12301244
12311245
transfer_spec {
12321246
gcs_data_source {

0 commit comments

Comments
 (0)