Skip to content

Commit 6791e0f

Browse files
akramhusseinmodular-magician
authored andcommitted
Add google_storage_transfer_project_service_account data_source
1 parent c807d3a commit 6791e0f

6 files changed

Lines changed: 157 additions & 38 deletions

google/config.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import (
4646
"google.golang.org/api/spanner/v1"
4747
"google.golang.org/api/sqladmin/v1beta4"
4848
"google.golang.org/api/storage/v1"
49+
"google.golang.org/api/storagetransfer/v1"
4950
)
5051

5152
// Config is the configuration structure used to instantiate the Google
@@ -91,6 +92,7 @@ type Config struct {
9192
clientCloudFunctions *cloudfunctions.Service
9293
clientCloudIoT *cloudiot.Service
9394
clientAppEngine *appengine.APIService
95+
clientStorageTransfer *storagetransfer.Service
9496

9597
bigtableClientFactory *BigtableClientFactory
9698
}
@@ -379,6 +381,13 @@ func (c *Config) loadAndValidate() error {
379381
}
380382
c.clientComposer.UserAgent = userAgent
381383

384+
log.Printf("[INFO] Instantiating Google Cloud Storage Transfer Client...")
385+
c.clientStorageTransfer, err = storagetransfer.New(client)
386+
if err != nil {
387+
return err
388+
}
389+
c.clientStorageTransfer.UserAgent = userAgent
390+
382391
return nil
383392
}
384393

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package google
2+
3+
import (
4+
"github.com/hashicorp/terraform/helper/schema"
5+
)
6+
7+
func dataSourceGoogleStorageTransferProjectServiceAccount() *schema.Resource {
8+
return &schema.Resource{
9+
Read: dataSourceGoogleStorageTransferProjectServiceAccountRead,
10+
Schema: map[string]*schema.Schema{
11+
"email": {
12+
Type: schema.TypeString,
13+
Computed: true,
14+
},
15+
"project": {
16+
Type: schema.TypeString,
17+
Optional: true,
18+
Computed: true,
19+
},
20+
},
21+
}
22+
}
23+
24+
func dataSourceGoogleStorageTransferProjectServiceAccountRead(d *schema.ResourceData, meta interface{}) error {
25+
config := meta.(*Config)
26+
27+
project, err := getProject(d, config)
28+
if err != nil {
29+
return err
30+
}
31+
32+
serviceAccount, err := config.clientStorageTransfer.GoogleServiceAccounts.Get(project).Do()
33+
if err != nil {
34+
return handleNotFoundError(err, d, "Google Cloud Storage Transfer service account not found")
35+
}
36+
37+
d.SetId(serviceAccount.AccountEmail)
38+
d.Set("email", serviceAccount.AccountEmail)
39+
d.Set("project", project)
40+
return nil
41+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package google
2+
3+
import (
4+
"testing"
5+
6+
"github.com/hashicorp/terraform/helper/resource"
7+
)
8+
9+
func TestAccDataSourceGoogleStorageTransferProjectServiceAccount_basic(t *testing.T) {
10+
t.Parallel()
11+
12+
resourceName := "data.google_storage_transfer_project_service_account.default"
13+
14+
resource.Test(t, resource.TestCase{
15+
PreCheck: func() { testAccPreCheck(t) },
16+
Providers: testAccProviders,
17+
Steps: []resource.TestStep{
18+
{
19+
Config: testAccCheckGoogleStorageTransferProjectServiceAccount_basic,
20+
Check: resource.ComposeTestCheckFunc(
21+
resource.TestCheckResourceAttrSet(resourceName, "id"),
22+
resource.TestCheckResourceAttrSet(resourceName, "email"),
23+
),
24+
},
25+
},
26+
})
27+
}
28+
29+
const testAccCheckGoogleStorageTransferProjectServiceAccount_basic = `
30+
data "google_storage_transfer_project_service_account" "default" { }
31+
`

google/provider.go

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -61,44 +61,45 @@ func Provider() terraform.ResourceProvider {
6161
},
6262

6363
DataSourcesMap: map[string]*schema.Resource{
64-
"google_active_folder": dataSourceGoogleActiveFolder(),
65-
"google_billing_account": dataSourceGoogleBillingAccount(),
66-
"google_dns_managed_zone": dataSourceDnsManagedZone(),
67-
"google_client_config": dataSourceGoogleClientConfig(),
68-
"google_cloudfunctions_function": dataSourceGoogleCloudFunctionsFunction(),
69-
"google_compute_address": dataSourceGoogleComputeAddress(),
70-
"google_compute_backend_service": dataSourceGoogleComputeBackendService(),
71-
"google_compute_default_service_account": dataSourceGoogleComputeDefaultServiceAccount(),
72-
"google_compute_forwarding_rule": dataSourceGoogleComputeForwardingRule(),
73-
"google_compute_image": dataSourceGoogleComputeImage(),
74-
"google_compute_instance": dataSourceGoogleComputeInstance(),
75-
"google_compute_instance_group": dataSourceGoogleComputeInstanceGroup(),
76-
"google_compute_global_address": dataSourceGoogleComputeGlobalAddress(),
77-
"google_compute_lb_ip_ranges": dataSourceGoogleComputeLbIpRanges(),
78-
"google_compute_network": dataSourceGoogleComputeNetwork(),
79-
"google_compute_regions": dataSourceGoogleComputeRegions(),
80-
"google_compute_region_instance_group": dataSourceGoogleComputeRegionInstanceGroup(),
81-
"google_compute_subnetwork": dataSourceGoogleComputeSubnetwork(),
82-
"google_compute_zones": dataSourceGoogleComputeZones(),
83-
"google_compute_vpn_gateway": dataSourceGoogleComputeVpnGateway(),
84-
"google_compute_ssl_policy": dataSourceGoogleComputeSslPolicy(),
85-
"google_container_cluster": dataSourceGoogleContainerCluster(),
86-
"google_container_engine_versions": dataSourceGoogleContainerEngineVersions(),
87-
"google_container_registry_repository": dataSourceGoogleContainerRepo(),
88-
"google_container_registry_image": dataSourceGoogleContainerImage(),
89-
"google_iam_policy": dataSourceGoogleIamPolicy(),
90-
"google_iam_role": dataSourceGoogleIamRole(),
91-
"google_kms_secret": dataSourceGoogleKmsSecret(),
92-
"google_folder": dataSourceGoogleFolder(),
93-
"google_netblock_ip_ranges": dataSourceGoogleNetblockIpRanges(),
94-
"google_organization": dataSourceGoogleOrganization(),
95-
"google_project": dataSourceGoogleProject(),
96-
"google_project_services": dataSourceGoogleProjectServices(),
97-
"google_service_account": dataSourceGoogleServiceAccount(),
98-
"google_service_account_key": dataSourceGoogleServiceAccountKey(),
99-
"google_storage_bucket_object": dataSourceGoogleStorageBucketObject(),
100-
"google_storage_object_signed_url": dataSourceGoogleSignedUrl(),
101-
"google_storage_project_service_account": dataSourceGoogleStorageProjectServiceAccount(),
64+
"google_active_folder": dataSourceGoogleActiveFolder(),
65+
"google_billing_account": dataSourceGoogleBillingAccount(),
66+
"google_dns_managed_zone": dataSourceDnsManagedZone(),
67+
"google_client_config": dataSourceGoogleClientConfig(),
68+
"google_cloudfunctions_function": dataSourceGoogleCloudFunctionsFunction(),
69+
"google_compute_address": dataSourceGoogleComputeAddress(),
70+
"google_compute_backend_service": dataSourceGoogleComputeBackendService(),
71+
"google_compute_default_service_account": dataSourceGoogleComputeDefaultServiceAccount(),
72+
"google_compute_forwarding_rule": dataSourceGoogleComputeForwardingRule(),
73+
"google_compute_image": dataSourceGoogleComputeImage(),
74+
"google_compute_instance": dataSourceGoogleComputeInstance(),
75+
"google_compute_instance_group": dataSourceGoogleComputeInstanceGroup(),
76+
"google_compute_global_address": dataSourceGoogleComputeGlobalAddress(),
77+
"google_compute_lb_ip_ranges": dataSourceGoogleComputeLbIpRanges(),
78+
"google_compute_network": dataSourceGoogleComputeNetwork(),
79+
"google_compute_regions": dataSourceGoogleComputeRegions(),
80+
"google_compute_region_instance_group": dataSourceGoogleComputeRegionInstanceGroup(),
81+
"google_compute_subnetwork": dataSourceGoogleComputeSubnetwork(),
82+
"google_compute_zones": dataSourceGoogleComputeZones(),
83+
"google_compute_vpn_gateway": dataSourceGoogleComputeVpnGateway(),
84+
"google_compute_ssl_policy": dataSourceGoogleComputeSslPolicy(),
85+
"google_container_cluster": dataSourceGoogleContainerCluster(),
86+
"google_container_engine_versions": dataSourceGoogleContainerEngineVersions(),
87+
"google_container_registry_repository": dataSourceGoogleContainerRepo(),
88+
"google_container_registry_image": dataSourceGoogleContainerImage(),
89+
"google_iam_policy": dataSourceGoogleIamPolicy(),
90+
"google_iam_role": dataSourceGoogleIamRole(),
91+
"google_kms_secret": dataSourceGoogleKmsSecret(),
92+
"google_folder": dataSourceGoogleFolder(),
93+
"google_netblock_ip_ranges": dataSourceGoogleNetblockIpRanges(),
94+
"google_organization": dataSourceGoogleOrganization(),
95+
"google_project": dataSourceGoogleProject(),
96+
"google_project_services": dataSourceGoogleProjectServices(),
97+
"google_service_account": dataSourceGoogleServiceAccount(),
98+
"google_service_account_key": dataSourceGoogleServiceAccountKey(),
99+
"google_storage_bucket_object": dataSourceGoogleStorageBucketObject(),
100+
"google_storage_object_signed_url": dataSourceGoogleSignedUrl(),
101+
"google_storage_project_service_account": dataSourceGoogleStorageProjectServiceAccount(),
102+
"google_storage_transfer_project_service_account": dataSourceGoogleStorageTransferProjectServiceAccount(),
102103
},
103104

104105
ResourcesMap: mergeResourceMaps(
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
layout: "google"
3+
page_title: "Google: google_storage_transfer_project_service_account"
4+
sidebar_current: "docs-google-datasource-storage-transfer-project-service-account"
5+
description: |-
6+
Retrieve default service account used by Storage Transfer Jobs running in this project
7+
---
8+
9+
# google\_storage\_transfer\_project\_service\_account
10+
11+
Use this data source to retrieve Storage Transfer service account for this project
12+
13+
## Example Usage
14+
15+
```hcl
16+
data "google_storage_transfer_project_service_account" "default" { }
17+
18+
output "default_account" {
19+
value = "${data.google_storage_transfer_project_service_account.default.email}"
20+
}
21+
```
22+
23+
## Argument Reference
24+
25+
The following arguments are supported:
26+
27+
* `project` - (Optional) The project ID. If it is not provided, the provider project is used.
28+
29+
30+
## Attributes Reference
31+
32+
The following attributes are exported:
33+
34+
* `email` - Email address of the default service account used by Storage Transfer Jobs running in this project

website/google.erb

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,9 @@
141141
<li<%= sidebar_current("docs-google-datasource-storage-project-service-account") %>>
142142
<a href="/docs/providers/google/d/google_storage_project_service_account.html">google_storage_project_service_account</a>
143143
</li>
144+
<li<%= sidebar_current("docs-google-datasource-storage-transfer-project-service-account") %>>
145+
<a href="/docs/providers/google/d/google_storage_transfer_project_service_account.html">google_storage_transfer_project_service_account</a>
146+
</li>
144147
</ul>
145148
</li>
146149

0 commit comments

Comments
 (0)