Skip to content

Commit bbcd741

Browse files
add datasources for all generated iam_resources (#7936) (#14662)
Signed-off-by: Modular Magician <[email protected]> Co-authored-by: Shuya Ma <[email protected]>
1 parent ab08068 commit bbcd741

File tree

240 files changed

+5802
-158
lines changed

Some content is hidden

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

240 files changed

+5802
-158
lines changed

.changelog/7936.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note: new-datasource
2+
`google_**_iam_policy`
3+
```

google/datasource_iam_policy.go

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
package google
2+
3+
import (
4+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
5+
6+
"fmt"
7+
8+
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
9+
)
10+
11+
var IamPolicyBaseDataSourceSchema = map[string]*schema.Schema{
12+
"policy_data": {
13+
Type: schema.TypeString,
14+
Computed: true,
15+
},
16+
"etag": {
17+
Type: schema.TypeString,
18+
Computed: true,
19+
},
20+
}
21+
22+
func DataSourceIamPolicy(parentSpecificSchema map[string]*schema.Schema, newUpdaterFunc newResourceIamUpdaterFunc, options ...func(*IamSettings)) *schema.Resource {
23+
settings := &IamSettings{}
24+
for _, o := range options {
25+
o(settings)
26+
}
27+
28+
return &schema.Resource{
29+
Read: DatasourceIamPolicyRead(newUpdaterFunc),
30+
// if non-empty, this will be used to send a deprecation message when the
31+
// datasource is used.
32+
DeprecationMessage: settings.DeprecationMessage,
33+
Schema: mergeSchemas(IamPolicyBaseDataSourceSchema, parentSpecificSchema),
34+
UseJSONNumber: true,
35+
}
36+
}
37+
38+
func DatasourceIamPolicyRead(newUpdaterFunc newResourceIamUpdaterFunc) schema.ReadFunc {
39+
return func(d *schema.ResourceData, meta interface{}) error {
40+
config := meta.(*transport_tpg.Config)
41+
42+
updater, err := newUpdaterFunc(d, config)
43+
if err != nil {
44+
return err
45+
}
46+
47+
policy, err := iamPolicyReadWithRetry(updater)
48+
if err != nil {
49+
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Resource %q with IAM Policy", updater.DescribeResource()))
50+
}
51+
52+
if err := d.Set("etag", policy.Etag); err != nil {
53+
return fmt.Errorf("Error setting etag: %s", err)
54+
}
55+
if err := d.Set("policy_data", marshalIamPolicy(policy)); err != nil {
56+
return fmt.Errorf("Error setting policy_data: %s", err)
57+
}
58+
d.SetId(updater.GetResourceId())
59+
60+
return nil
61+
}
62+
}

google/iam_apigee_environment_generated_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ func TestAccApigeeEnvironmentIamPolicyGenerated(t *testing.T) {
104104
Steps: []resource.TestStep{
105105
{
106106
Config: testAccApigeeEnvironmentIamPolicy_basicGenerated(context),
107+
Check: resource.TestCheckResourceAttrSet("data.google_apigee_environment_iam_policy.foo", "policy_data"),
107108
},
108109
{
109110
ResourceName: "google_apigee_environment_iam_policy.foo",
@@ -275,6 +276,14 @@ resource "google_apigee_environment_iam_policy" "foo" {
275276
env_id = google_apigee_environment.apigee_environment.name
276277
policy_data = data.google_iam_policy.foo.policy_data
277278
}
279+
280+
data "google_apigee_environment_iam_policy" "foo" {
281+
org_id = google_apigee_environment.apigee_environment.org_id
282+
env_id = google_apigee_environment.apigee_environment.name
283+
depends_on = [
284+
google_apigee_environment_iam_policy.foo
285+
]
286+
}
278287
`, context)
279288
}
280289

google/iam_artifact_registry_repository_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccArtifactRegistryRepositoryIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccArtifactRegistryRepositoryIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_artifact_registry_repository_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_artifact_registry_repository_iam_policy.foo",
@@ -159,6 +160,15 @@ resource "google_artifact_registry_repository_iam_policy" "foo" {
159160
repository = google_artifact_registry_repository.my-repo.name
160161
policy_data = data.google_iam_policy.foo.policy_data
161162
}
163+
164+
data "google_artifact_registry_repository_iam_policy" "foo" {
165+
project = google_artifact_registry_repository.my-repo.project
166+
location = google_artifact_registry_repository.my-repo.location
167+
repository = google_artifact_registry_repository.my-repo.name
168+
depends_on = [
169+
google_artifact_registry_repository_iam_policy.foo
170+
]
171+
}
162172
`, context)
163173
}
164174

google/iam_bigquery_analytics_hub_data_exchange_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccBigqueryAnalyticsHubDataExchangeIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccBigqueryAnalyticsHubDataExchangeIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_bigquery_analytics_hub_data_exchange_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_bigquery_analytics_hub_data_exchange_iam_policy.foo",
@@ -159,6 +160,15 @@ resource "google_bigquery_analytics_hub_data_exchange_iam_policy" "foo" {
159160
data_exchange_id = google_bigquery_analytics_hub_data_exchange.data_exchange.data_exchange_id
160161
policy_data = data.google_iam_policy.foo.policy_data
161162
}
163+
164+
data "google_bigquery_analytics_hub_data_exchange_iam_policy" "foo" {
165+
project = google_bigquery_analytics_hub_data_exchange.data_exchange.project
166+
location = google_bigquery_analytics_hub_data_exchange.data_exchange.location
167+
data_exchange_id = google_bigquery_analytics_hub_data_exchange.data_exchange.data_exchange_id
168+
depends_on = [
169+
google_bigquery_analytics_hub_data_exchange_iam_policy.foo
170+
]
171+
}
162172
`, context)
163173
}
164174

google/iam_bigquery_analytics_hub_listing_generated_test.go

+11
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccBigqueryAnalyticsHubListingIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccBigqueryAnalyticsHubListingIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_bigquery_analytics_hub_listing_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_bigquery_analytics_hub_listing_iam_policy.foo",
@@ -199,6 +200,16 @@ resource "google_bigquery_analytics_hub_listing_iam_policy" "foo" {
199200
listing_id = google_bigquery_analytics_hub_listing.listing.listing_id
200201
policy_data = data.google_iam_policy.foo.policy_data
201202
}
203+
204+
data "google_bigquery_analytics_hub_listing_iam_policy" "foo" {
205+
project = google_bigquery_analytics_hub_listing.listing.project
206+
location = google_bigquery_analytics_hub_listing.listing.location
207+
data_exchange_id = google_bigquery_analytics_hub_listing.listing.data_exchange_id
208+
listing_id = google_bigquery_analytics_hub_listing.listing.listing_id
209+
depends_on = [
210+
google_bigquery_analytics_hub_listing_iam_policy.foo
211+
]
212+
}
202213
`, context)
203214
}
204215

google/iam_bigquery_connection_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ func TestAccBigqueryConnectionConnectionIamPolicyGenerated(t *testing.T) {
110110
Steps: []resource.TestStep{
111111
{
112112
Config: testAccBigqueryConnectionConnectionIamPolicy_basicGenerated(context),
113+
Check: resource.TestCheckResourceAttrSet("data.google_bigquery_connection_iam_policy.foo", "policy_data"),
113114
},
114115
{
115116
ResourceName: "google_bigquery_connection_iam_policy.foo",
@@ -173,6 +174,15 @@ resource "google_bigquery_connection_iam_policy" "foo" {
173174
connection_id = google_bigquery_connection.connection.connection_id
174175
policy_data = data.google_iam_policy.foo.policy_data
175176
}
177+
178+
data "google_bigquery_connection_iam_policy" "foo" {
179+
project = google_bigquery_connection.connection.project
180+
location = google_bigquery_connection.connection.location
181+
connection_id = google_bigquery_connection.connection.connection_id
182+
depends_on = [
183+
google_bigquery_connection_iam_policy.foo
184+
]
185+
}
176186
`, context)
177187
}
178188

google/iam_bigquery_datapolicy_data_policy_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccBigqueryDatapolicyDataPolicyIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccBigqueryDatapolicyDataPolicyIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_bigquery_datapolicy_data_policy_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_bigquery_datapolicy_data_policy_iam_policy.foo",
@@ -185,6 +186,15 @@ resource "google_bigquery_datapolicy_data_policy_iam_policy" "foo" {
185186
data_policy_id = google_bigquery_datapolicy_data_policy.data_policy.data_policy_id
186187
policy_data = data.google_iam_policy.foo.policy_data
187188
}
189+
190+
data "google_bigquery_datapolicy_data_policy_iam_policy" "foo" {
191+
project = google_bigquery_datapolicy_data_policy.data_policy.project
192+
location = google_bigquery_datapolicy_data_policy.data_policy.location
193+
data_policy_id = google_bigquery_datapolicy_data_policy.data_policy.data_policy_id
194+
depends_on = [
195+
google_bigquery_datapolicy_data_policy_iam_policy.foo
196+
]
197+
}
188198
`, context)
189199
}
190200

google/iam_bigquery_table_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ func TestAccBigQueryTableIamPolicyGenerated(t *testing.T) {
114114
Steps: []resource.TestStep{
115115
{
116116
Config: testAccBigQueryTableIamPolicy_basicGenerated(context),
117+
Check: resource.TestCheckResourceAttrSet("data.google_bigquery_table_iam_policy.foo", "policy_data"),
117118
},
118119
{
119120
ResourceName: "google_bigquery_table_iam_policy.foo",
@@ -459,6 +460,15 @@ resource "google_bigquery_table_iam_policy" "foo" {
459460
table_id = google_bigquery_table.test.table_id
460461
policy_data = data.google_iam_policy.foo.policy_data
461462
}
463+
464+
data "google_bigquery_table_iam_policy" "foo" {
465+
project = google_bigquery_table.test.project
466+
dataset_id = google_bigquery_table.test.dataset_id
467+
table_id = google_bigquery_table.test.table_id
468+
depends_on = [
469+
google_bigquery_table_iam_policy.foo
470+
]
471+
}
462472
`, context)
463473
}
464474

google/iam_binary_authorization_attestor_generated_test.go

+9
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccBinaryAuthorizationAttestorIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccBinaryAuthorizationAttestorIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_binary_authorization_attestor_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_binary_authorization_attestor_iam_policy.foo",
@@ -215,6 +216,14 @@ resource "google_binary_authorization_attestor_iam_policy" "foo" {
215216
attestor = google_binary_authorization_attestor.attestor.name
216217
policy_data = data.google_iam_policy.foo.policy_data
217218
}
219+
220+
data "google_binary_authorization_attestor_iam_policy" "foo" {
221+
project = google_binary_authorization_attestor.attestor.project
222+
attestor = google_binary_authorization_attestor.attestor.name
223+
depends_on = [
224+
google_binary_authorization_attestor_iam_policy.foo
225+
]
226+
}
218227
`, context)
219228
}
220229

google/iam_cloud_run_service_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ func TestAccCloudRunServiceIamPolicyGenerated(t *testing.T) {
101101
Steps: []resource.TestStep{
102102
{
103103
Config: testAccCloudRunServiceIamPolicy_basicGenerated(context),
104+
Check: resource.TestCheckResourceAttrSet("data.google_cloud_run_service_iam_policy.foo", "policy_data"),
104105
},
105106
{
106107
ResourceName: "google_cloud_run_service_iam_policy.foo",
@@ -184,6 +185,15 @@ resource "google_cloud_run_service_iam_policy" "foo" {
184185
service = google_cloud_run_service.default.name
185186
policy_data = data.google_iam_policy.foo.policy_data
186187
}
188+
189+
data "google_cloud_run_service_iam_policy" "foo" {
190+
location = google_cloud_run_service.default.location
191+
project = google_cloud_run_service.default.project
192+
service = google_cloud_run_service.default.name
193+
depends_on = [
194+
google_cloud_run_service_iam_policy.foo
195+
]
196+
}
187197
`, context)
188198
}
189199

google/iam_cloud_run_v2_job_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccCloudRunV2JobIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccCloudRunV2JobIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_cloud_run_v2_job_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_cloud_run_v2_job_iam_policy.foo",
@@ -183,6 +184,15 @@ resource "google_cloud_run_v2_job_iam_policy" "foo" {
183184
name = google_cloud_run_v2_job.default.name
184185
policy_data = data.google_iam_policy.foo.policy_data
185186
}
187+
188+
data "google_cloud_run_v2_job_iam_policy" "foo" {
189+
project = google_cloud_run_v2_job.default.project
190+
location = google_cloud_run_v2_job.default.location
191+
name = google_cloud_run_v2_job.default.name
192+
depends_on = [
193+
google_cloud_run_v2_job_iam_policy.foo
194+
]
195+
}
186196
`, context)
187197
}
188198

google/iam_cloud_run_v2_service_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccCloudRunV2ServiceIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccCloudRunV2ServiceIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_cloud_run_v2_service_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_cloud_run_v2_service_iam_policy.foo",
@@ -169,6 +170,15 @@ resource "google_cloud_run_v2_service_iam_policy" "foo" {
169170
name = google_cloud_run_v2_service.default.name
170171
policy_data = data.google_iam_policy.foo.policy_data
171172
}
173+
174+
data "google_cloud_run_v2_service_iam_policy" "foo" {
175+
project = google_cloud_run_v2_service.default.project
176+
location = google_cloud_run_v2_service.default.location
177+
name = google_cloud_run_v2_service.default.name
178+
depends_on = [
179+
google_cloud_run_v2_service_iam_policy.foo
180+
]
181+
}
172182
`, context)
173183
}
174184

google/iam_cloud_tasks_queue_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ func TestAccCloudTasksQueueIamPolicyGenerated(t *testing.T) {
9898
Steps: []resource.TestStep{
9999
{
100100
Config: testAccCloudTasksQueueIamPolicy_basicGenerated(context),
101+
Check: resource.TestCheckResourceAttrSet("data.google_cloud_tasks_queue_iam_policy.foo", "policy_data"),
101102
},
102103
{
103104
ResourceName: "google_cloud_tasks_queue_iam_policy.foo",
@@ -155,6 +156,15 @@ resource "google_cloud_tasks_queue_iam_policy" "foo" {
155156
name = google_cloud_tasks_queue.default.name
156157
policy_data = data.google_iam_policy.foo.policy_data
157158
}
159+
160+
data "google_cloud_tasks_queue_iam_policy" "foo" {
161+
project = google_cloud_tasks_queue.default.project
162+
location = google_cloud_tasks_queue.default.location
163+
name = google_cloud_tasks_queue.default.name
164+
depends_on = [
165+
google_cloud_tasks_queue_iam_policy.foo
166+
]
167+
}
158168
`, context)
159169
}
160170

google/iam_cloudfunctions2_function_generated_test.go

+10
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,7 @@ func TestAccCloudfunctions2functionIamPolicyGenerated(t *testing.T) {
110110
Steps: []resource.TestStep{
111111
{
112112
Config: testAccCloudfunctions2functionIamPolicy_basicGenerated(context),
113+
Check: resource.TestCheckResourceAttrSet("data.google_cloudfunctions2_function_iam_policy.foo", "policy_data"),
113114
},
114115
{
115116
ResourceName: "google_cloudfunctions2_function_iam_policy.foo",
@@ -247,6 +248,15 @@ resource "google_cloudfunctions2_function_iam_policy" "foo" {
247248
cloud_function = google_cloudfunctions2_function.function.name
248249
policy_data = data.google_iam_policy.foo.policy_data
249250
}
251+
252+
data "google_cloudfunctions2_function_iam_policy" "foo" {
253+
project = google_cloudfunctions2_function.function.project
254+
location = google_cloudfunctions2_function.function.location
255+
cloud_function = google_cloudfunctions2_function.function.name
256+
depends_on = [
257+
google_cloudfunctions2_function_iam_policy.foo
258+
]
259+
}
250260
`, context)
251261
}
252262

0 commit comments

Comments
 (0)