@@ -91,6 +91,41 @@ func ResourceBigqueryAnalyticsHubDataExchange() *schema.Resource {
91
91
Optional : true ,
92
92
Description : `Email or URL of the primary point of contact of the data exchange.` ,
93
93
},
94
+ "sharing_environment_config" : {
95
+ Type : schema .TypeList ,
96
+ Computed : true ,
97
+ Optional : true ,
98
+ ForceNew : true ,
99
+ Description : `Configurable data sharing environment option for a data exchange.
100
+ This field is required for data clean room exchanges.` ,
101
+ MaxItems : 1 ,
102
+ Elem : & schema.Resource {
103
+ Schema : map [string ]* schema.Schema {
104
+ "dcr_exchange_config" : {
105
+ Type : schema .TypeList ,
106
+ Optional : true ,
107
+ ForceNew : true ,
108
+ Description : `Data Clean Room (DCR), used for privacy-safe and secured data sharing.` ,
109
+ MaxItems : 1 ,
110
+ Elem : & schema.Resource {
111
+ Schema : map [string ]* schema.Schema {},
112
+ },
113
+ ExactlyOneOf : []string {"sharing_environment_config.0.default_exchange_config" , "sharing_environment_config.0.dcr_exchange_config" },
114
+ },
115
+ "default_exchange_config" : {
116
+ Type : schema .TypeList ,
117
+ Optional : true ,
118
+ ForceNew : true ,
119
+ Description : `Default Analytics Hub data exchange, used for secured data sharing.` ,
120
+ MaxItems : 1 ,
121
+ Elem : & schema.Resource {
122
+ Schema : map [string ]* schema.Schema {},
123
+ },
124
+ ExactlyOneOf : []string {"sharing_environment_config.0.default_exchange_config" , "sharing_environment_config.0.dcr_exchange_config" },
125
+ },
126
+ },
127
+ },
128
+ },
94
129
"listing_count" : {
95
130
Type : schema .TypeInt ,
96
131
Computed : true ,
@@ -151,6 +186,12 @@ func resourceBigqueryAnalyticsHubDataExchangeCreate(d *schema.ResourceData, meta
151
186
} else if v , ok := d .GetOkExists ("icon" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (iconProp )) && (ok || ! reflect .DeepEqual (v , iconProp )) {
152
187
obj ["icon" ] = iconProp
153
188
}
189
+ sharingEnvironmentConfigProp , err := expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfig (d .Get ("sharing_environment_config" ), d , config )
190
+ if err != nil {
191
+ return err
192
+ } else if v , ok := d .GetOkExists ("sharing_environment_config" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (sharingEnvironmentConfigProp )) && (ok || ! reflect .DeepEqual (v , sharingEnvironmentConfigProp )) {
193
+ obj ["sharingEnvironmentConfig" ] = sharingEnvironmentConfigProp
194
+ }
154
195
155
196
url , err := tpgresource .ReplaceVars (d , config , "{{BigqueryAnalyticsHubBasePath}}projects/{{project}}/locations/{{location}}/dataExchanges?data_exchange_id={{data_exchange_id}}" )
156
197
if err != nil {
@@ -264,6 +305,9 @@ func resourceBigqueryAnalyticsHubDataExchangeRead(d *schema.ResourceData, meta i
264
305
if err := d .Set ("icon" , flattenBigqueryAnalyticsHubDataExchangeIcon (res ["icon" ], d , config )); err != nil {
265
306
return fmt .Errorf ("Error reading DataExchange: %s" , err )
266
307
}
308
+ if err := d .Set ("sharing_environment_config" , flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfig (res ["sharingEnvironmentConfig" ], d , config )); err != nil {
309
+ return fmt .Errorf ("Error reading DataExchange: %s" , err )
310
+ }
267
311
268
312
return nil
269
313
}
@@ -489,6 +533,37 @@ func flattenBigqueryAnalyticsHubDataExchangeIcon(v interface{}, d *schema.Resour
489
533
return v
490
534
}
491
535
536
+ func flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
537
+ if v == nil {
538
+ return nil
539
+ }
540
+ original := v .(map [string ]interface {})
541
+ if len (original ) == 0 {
542
+ return nil
543
+ }
544
+ transformed := make (map [string ]interface {})
545
+ transformed ["default_exchange_config" ] =
546
+ flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDefaultExchangeConfig (original ["defaultExchangeConfig" ], d , config )
547
+ transformed ["dcr_exchange_config" ] =
548
+ flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDcrExchangeConfig (original ["dcrExchangeConfig" ], d , config )
549
+ return []interface {}{transformed }
550
+ }
551
+ func flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDefaultExchangeConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
552
+ if v == nil {
553
+ return nil
554
+ }
555
+ transformed := make (map [string ]interface {})
556
+ return []interface {}{transformed }
557
+ }
558
+
559
+ func flattenBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDcrExchangeConfig (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
560
+ if v == nil {
561
+ return nil
562
+ }
563
+ transformed := make (map [string ]interface {})
564
+ return []interface {}{transformed }
565
+ }
566
+
492
567
func expandBigqueryAnalyticsHubDataExchangeDisplayName (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
493
568
return v , nil
494
569
}
@@ -508,3 +583,59 @@ func expandBigqueryAnalyticsHubDataExchangeDocumentation(v interface{}, d tpgres
508
583
func expandBigqueryAnalyticsHubDataExchangeIcon (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
509
584
return v , nil
510
585
}
586
+
587
+ func expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
588
+ l := v .([]interface {})
589
+ if len (l ) == 0 || l [0 ] == nil {
590
+ return nil , nil
591
+ }
592
+ raw := l [0 ]
593
+ original := raw .(map [string ]interface {})
594
+ transformed := make (map [string ]interface {})
595
+
596
+ transformedDefaultExchangeConfig , err := expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDefaultExchangeConfig (original ["default_exchange_config" ], d , config )
597
+ if err != nil {
598
+ return nil , err
599
+ } else {
600
+ transformed ["defaultExchangeConfig" ] = transformedDefaultExchangeConfig
601
+ }
602
+
603
+ transformedDcrExchangeConfig , err := expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDcrExchangeConfig (original ["dcr_exchange_config" ], d , config )
604
+ if err != nil {
605
+ return nil , err
606
+ } else {
607
+ transformed ["dcrExchangeConfig" ] = transformedDcrExchangeConfig
608
+ }
609
+
610
+ return transformed , nil
611
+ }
612
+
613
+ func expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDefaultExchangeConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
614
+ l := v .([]interface {})
615
+ if len (l ) == 0 {
616
+ return nil , nil
617
+ }
618
+
619
+ if l [0 ] == nil {
620
+ transformed := make (map [string ]interface {})
621
+ return transformed , nil
622
+ }
623
+ transformed := make (map [string ]interface {})
624
+
625
+ return transformed , nil
626
+ }
627
+
628
+ func expandBigqueryAnalyticsHubDataExchangeSharingEnvironmentConfigDcrExchangeConfig (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
629
+ l := v .([]interface {})
630
+ if len (l ) == 0 {
631
+ return nil , nil
632
+ }
633
+
634
+ if l [0 ] == nil {
635
+ transformed := make (map [string ]interface {})
636
+ return transformed , nil
637
+ }
638
+ transformed := make (map [string ]interface {})
639
+
640
+ return transformed , nil
641
+ }
0 commit comments