Skip to content

Commit 09b36cf

Browse files
Adding support for log_linked_dataset_query_user_email attribute for BigQuery Analytics Hub Data exchanges. (#14266) (#23271)
[upstream:68abd8406f6ad82eabce2532151a2ab3b5f0df09] Signed-off-by: Modular Magician <[email protected]>
1 parent a1e1de4 commit 09b36cf

5 files changed

+85
-0
lines changed

.changelog/14266.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
bigqueryanalyticshub: added `log_linked_dataset_query_user_email` field to `google_bigquery_analytics_hub_data_exchange` resource
3+
```

google/services/bigqueryanalyticshub/resource_bigquery_analytics_hub_data_exchange.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,12 @@ func ResourceBigqueryAnalyticsHubDataExchange() *schema.Resource {
8888
Optional: true,
8989
Description: `Base64 encoded image representing the data exchange.`,
9090
},
91+
"log_linked_dataset_query_user_email": {
92+
Type: schema.TypeBool,
93+
Optional: true,
94+
ForceNew: true,
95+
Description: `If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.`,
96+
},
9197
"primary_contact": {
9298
Type: schema.TypeString,
9399
Optional: true,
@@ -194,6 +200,12 @@ func resourceBigqueryAnalyticsHubDataExchangeCreate(d *schema.ResourceData, meta
194200
} else if v, ok := d.GetOkExists("sharing_environment_config"); !tpgresource.IsEmptyValue(reflect.ValueOf(sharingEnvironmentConfigProp)) && (ok || !reflect.DeepEqual(v, sharingEnvironmentConfigProp)) {
195201
obj["sharingEnvironmentConfig"] = sharingEnvironmentConfigProp
196202
}
203+
logLinkedDatasetQueryUserEmailProp, err := expandBigqueryAnalyticsHubDataExchangeLogLinkedDatasetQueryUserEmail(d.Get("log_linked_dataset_query_user_email"), d, config)
204+
if err != nil {
205+
return err
206+
} else if v, ok := d.GetOkExists("log_linked_dataset_query_user_email"); !tpgresource.IsEmptyValue(reflect.ValueOf(logLinkedDatasetQueryUserEmailProp)) && (ok || !reflect.DeepEqual(v, logLinkedDatasetQueryUserEmailProp)) {
207+
obj["logLinkedDatasetQueryUserEmail"] = logLinkedDatasetQueryUserEmailProp
208+
}
197209

198210
url, err := tpgresource.ReplaceVars(d, config, "{{BigqueryAnalyticsHubBasePath}}projects/{{project}}/locations/{{location}}/dataExchanges?data_exchange_id={{data_exchange_id}}")
199211
if err != nil {
@@ -307,6 +319,9 @@ func resourceBigqueryAnalyticsHubDataExchangeRead(d *schema.ResourceData, meta i
307319
if err := d.Set("sharing_environment_config", flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfig(res["sharingEnvironmentConfig"], d, config)); err != nil {
308320
return fmt.Errorf("Error reading DataExchange: %s", err)
309321
}
322+
if err := d.Set("log_linked_dataset_query_user_email", flattenBigqueryAnalyticsHubDataExchangeLogLinkedDatasetQueryUserEmail(res["logLinkedDatasetQueryUserEmail"], d, config)); err != nil {
323+
return fmt.Errorf("Error reading DataExchange: %s", err)
324+
}
310325

311326
return nil
312327
}
@@ -563,6 +578,10 @@ func flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDcrExchangeC
563578
return []interface{}{transformed}
564579
}
565580

581+
func flattenBigqueryAnalyticsHubDataExchangeLogLinkedDatasetQueryUserEmail(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
582+
return v
583+
}
584+
566585
func expandBigqueryAnalyticsHubDataExchangeDisplayName(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
567586
return v, nil
568587
}
@@ -638,3 +657,7 @@ func expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDcrExchangeCo
638657

639658
return transformed, nil
640659
}
660+
661+
func expandBigqueryAnalyticsHubDataExchangeLogLinkedDatasetQueryUserEmail(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
662+
return v, nil
663+
}

google/services/bigqueryanalyticshub/resource_bigquery_analytics_hub_data_exchange_generated_meta.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ fields:
1414
- field: 'listing_count'
1515
- field: 'location'
1616
provider_only: true
17+
- field: 'log_linked_dataset_query_user_email'
1718
- field: 'name'
1819
- field: 'primary_contact'
1920
- field: 'sharing_environment_config.dcr_exchange_config'

google/services/bigqueryanalyticshub/resource_bigquery_analytics_hub_data_exchange_generated_test.go

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,43 @@ resource "google_bigquery_analytics_hub_data_exchange" "data_exchange" {
105105
`, context)
106106
}
107107

108+
func TestAccBigqueryAnalyticsHubDataExchange_bigqueryAnalyticshubDataExchangeLogLinkedDatasetQueryUserExample(t *testing.T) {
109+
t.Parallel()
110+
111+
context := map[string]interface{}{
112+
"random_suffix": acctest.RandString(t, 10),
113+
}
114+
115+
acctest.VcrTest(t, resource.TestCase{
116+
PreCheck: func() { acctest.AccTestPreCheck(t) },
117+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
118+
CheckDestroy: testAccCheckBigqueryAnalyticsHubDataExchangeDestroyProducer(t),
119+
Steps: []resource.TestStep{
120+
{
121+
Config: testAccBigqueryAnalyticsHubDataExchange_bigqueryAnalyticshubDataExchangeLogLinkedDatasetQueryUserExample(context),
122+
},
123+
{
124+
ResourceName: "google_bigquery_analytics_hub_data_exchange.data_exchange",
125+
ImportState: true,
126+
ImportStateVerify: true,
127+
ImportStateVerifyIgnore: []string{"data_exchange_id", "location"},
128+
},
129+
},
130+
})
131+
}
132+
133+
func testAccBigqueryAnalyticsHubDataExchange_bigqueryAnalyticshubDataExchangeLogLinkedDatasetQueryUserExample(context map[string]interface{}) string {
134+
return acctest.Nprintf(`
135+
resource "google_bigquery_analytics_hub_data_exchange" "data_exchange" {
136+
location = "US"
137+
data_exchange_id = "tf_test_tf_test_log_email_data_exchange%{random_suffix}"
138+
display_name = "tf_test_tf_test_log_email_data_exchange%{random_suffix}"
139+
description = "Example for log email test for data exchange%{random_suffix}"
140+
log_linked_dataset_query_user_email = true
141+
}
142+
`, context)
143+
}
144+
108145
func testAccCheckBigqueryAnalyticsHubDataExchangeDestroyProducer(t *testing.T) func(s *terraform.State) error {
109146
return func(s *terraform.State) error {
110147
for name, rs := range s.RootModule().Resources {

website/docs/r/bigquery_analytics_hub_data_exchange.html.markdown

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,23 @@ resource "google_bigquery_analytics_hub_data_exchange" "data_exchange" {
6565
}
6666
}
6767
```
68+
<div class = "oics-button" style="float: right; margin: 0 0 -15px">
69+
<a href="https://console.cloud.google.com/cloudshell/open?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fterraform-google-modules%2Fdocs-examples.git&cloudshell_image=gcr.io%2Fcloudshell-images%2Fcloudshell%3Alatest&cloudshell_print=.%2Fmotd&cloudshell_tutorial=.%2Ftutorial.md&cloudshell_working_dir=bigquery_analyticshub_data_exchange_log_linked_dataset_query_user&open_in_editor=main.tf" target="_blank">
70+
<img alt="Open in Cloud Shell" src="//gstatic.com/cloudssh/images/open-btn.svg" style="max-height: 44px; margin: 32px auto; max-width: 100%;">
71+
</a>
72+
</div>
73+
## Example Usage - Bigquery Analyticshub Data Exchange Log Linked Dataset Query User
74+
75+
76+
```hcl
77+
resource "google_bigquery_analytics_hub_data_exchange" "data_exchange" {
78+
location = "US"
79+
data_exchange_id = "tf_test_log_email_data_exchange"
80+
display_name = "tf_test_log_email_data_exchange"
81+
description = "Example for log email test for data exchange"
82+
log_linked_dataset_query_user_email = true
83+
}
84+
```
6885

6986
## Argument Reference
7087

@@ -109,6 +126,10 @@ The following arguments are supported:
109126
This field is required for data clean room exchanges.
110127
Structure is [documented below](#nested_sharing_environment_config).
111128

129+
* `log_linked_dataset_query_user_email` -
130+
(Optional)
131+
If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
132+
112133
* `project` - (Optional) The ID of the project in which the resource belongs.
113134
If it is not provided, the provider project is used.
114135

0 commit comments

Comments
 (0)