@@ -173,6 +173,30 @@ expiration time indicated by this property.`,
173173 Optional : true ,
174174 Description : `A user-friendly description of the dataset` ,
175175 },
176+ "external_catalog_dataset_options" : {
177+ Type : schema .TypeList ,
178+ Optional : true ,
179+ Description : `Options defining open source compatible datasets living in the BigQuery catalog. Contains
180+ metadata of open source database, schema or namespace represented by the current dataset.` ,
181+ MaxItems : 1 ,
182+ Elem : & schema.Resource {
183+ Schema : map [string ]* schema.Schema {
184+ "default_storage_location_uri" : {
185+ Type : schema .TypeString ,
186+ Optional : true ,
187+ Description : `The storage location URI for all tables in the dataset. Equivalent to hive metastore's
188+ database locationUri. Maximum length of 1024 characters.` ,
189+ },
190+ "parameters" : {
191+ Type : schema .TypeMap ,
192+ Optional : true ,
193+ Description : `A map of key value pairs defining the parameters and properties of the open source schema.
194+ Maximum size of 2Mib.` ,
195+ Elem : & schema.Schema {Type : schema .TypeString },
196+ },
197+ },
198+ },
199+ },
176200 "external_dataset_reference" : {
177201 Type : schema .TypeList ,
178202 Optional : true ,
@@ -556,6 +580,12 @@ func resourceBigQueryDatasetCreate(d *schema.ResourceData, meta interface{}) err
556580 } else if v , ok := d .GetOkExists ("resource_tags" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (resourceTagsProp )) && (ok || ! reflect .DeepEqual (v , resourceTagsProp )) {
557581 obj ["resourceTags" ] = resourceTagsProp
558582 }
583+ externalCatalogDatasetOptionsProp , err := expandBigQueryDatasetExternalCatalogDatasetOptions (d .Get ("external_catalog_dataset_options" ), d , config )
584+ if err != nil {
585+ return err
586+ } else if v , ok := d .GetOkExists ("external_catalog_dataset_options" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (externalCatalogDatasetOptionsProp )) && (ok || ! reflect .DeepEqual (v , externalCatalogDatasetOptionsProp )) {
587+ obj ["externalCatalogDatasetOptions" ] = externalCatalogDatasetOptionsProp
588+ }
559589 labelsProp , err := expandBigQueryDatasetEffectiveLabels (d .Get ("effective_labels" ), d , config )
560590 if err != nil {
561591 return err
@@ -723,6 +753,9 @@ func resourceBigQueryDatasetRead(d *schema.ResourceData, meta interface{}) error
723753 if err := d .Set ("resource_tags" , flattenBigQueryDatasetResourceTags (res ["resourceTags" ], d , config )); err != nil {
724754 return fmt .Errorf ("Error reading Dataset: %s" , err )
725755 }
756+ if err := d .Set ("external_catalog_dataset_options" , flattenBigQueryDatasetExternalCatalogDatasetOptions (res ["externalCatalogDatasetOptions" ], d , config )); err != nil {
757+ return fmt .Errorf ("Error reading Dataset: %s" , err )
758+ }
726759 if err := d .Set ("terraform_labels" , flattenBigQueryDatasetTerraformLabels (res ["labels" ], d , config )); err != nil {
727760 return fmt .Errorf ("Error reading Dataset: %s" , err )
728761 }
@@ -836,6 +869,12 @@ func resourceBigQueryDatasetUpdate(d *schema.ResourceData, meta interface{}) err
836869 } else if v , ok := d .GetOkExists ("resource_tags" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , resourceTagsProp )) {
837870 obj ["resourceTags" ] = resourceTagsProp
838871 }
872+ externalCatalogDatasetOptionsProp , err := expandBigQueryDatasetExternalCatalogDatasetOptions (d .Get ("external_catalog_dataset_options" ), d , config )
873+ if err != nil {
874+ return err
875+ } else if v , ok := d .GetOkExists ("external_catalog_dataset_options" ); ! tpgresource .IsEmptyValue (reflect .ValueOf (v )) && (ok || ! reflect .DeepEqual (v , externalCatalogDatasetOptionsProp )) {
876+ obj ["externalCatalogDatasetOptions" ] = externalCatalogDatasetOptionsProp
877+ }
839878 labelsProp , err := expandBigQueryDatasetEffectiveLabels (d .Get ("effective_labels" ), d , config )
840879 if err != nil {
841880 return err
@@ -1281,6 +1320,29 @@ func flattenBigQueryDatasetResourceTags(v interface{}, d *schema.ResourceData, c
12811320 return v
12821321}
12831322
1323+ func flattenBigQueryDatasetExternalCatalogDatasetOptions (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1324+ if v == nil {
1325+ return nil
1326+ }
1327+ original := v .(map [string ]interface {})
1328+ if len (original ) == 0 {
1329+ return nil
1330+ }
1331+ transformed := make (map [string ]interface {})
1332+ transformed ["parameters" ] =
1333+ flattenBigQueryDatasetExternalCatalogDatasetOptionsParameters (original ["parameters" ], d , config )
1334+ transformed ["default_storage_location_uri" ] =
1335+ flattenBigQueryDatasetExternalCatalogDatasetOptionsDefaultStorageLocationUri (original ["defaultStorageLocationUri" ], d , config )
1336+ return []interface {}{transformed }
1337+ }
1338+ func flattenBigQueryDatasetExternalCatalogDatasetOptionsParameters (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1339+ return v
1340+ }
1341+
1342+ func flattenBigQueryDatasetExternalCatalogDatasetOptionsDefaultStorageLocationUri (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
1343+ return v
1344+ }
1345+
12841346func flattenBigQueryDatasetTerraformLabels (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
12851347 if v == nil {
12861348 return v
@@ -1677,6 +1739,47 @@ func expandBigQueryDatasetResourceTags(v interface{}, d tpgresource.TerraformRes
16771739 return m , nil
16781740}
16791741
1742+ func expandBigQueryDatasetExternalCatalogDatasetOptions (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1743+ l := v .([]interface {})
1744+ if len (l ) == 0 || l [0 ] == nil {
1745+ return nil , nil
1746+ }
1747+ raw := l [0 ]
1748+ original := raw .(map [string ]interface {})
1749+ transformed := make (map [string ]interface {})
1750+
1751+ transformedParameters , err := expandBigQueryDatasetExternalCatalogDatasetOptionsParameters (original ["parameters" ], d , config )
1752+ if err != nil {
1753+ return nil , err
1754+ } else if val := reflect .ValueOf (transformedParameters ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1755+ transformed ["parameters" ] = transformedParameters
1756+ }
1757+
1758+ transformedDefaultStorageLocationUri , err := expandBigQueryDatasetExternalCatalogDatasetOptionsDefaultStorageLocationUri (original ["default_storage_location_uri" ], d , config )
1759+ if err != nil {
1760+ return nil , err
1761+ } else if val := reflect .ValueOf (transformedDefaultStorageLocationUri ); val .IsValid () && ! tpgresource .IsEmptyValue (val ) {
1762+ transformed ["defaultStorageLocationUri" ] = transformedDefaultStorageLocationUri
1763+ }
1764+
1765+ return transformed , nil
1766+ }
1767+
1768+ func expandBigQueryDatasetExternalCatalogDatasetOptionsParameters (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
1769+ if v == nil {
1770+ return map [string ]string {}, nil
1771+ }
1772+ m := make (map [string ]string )
1773+ for k , val := range v .(map [string ]interface {}) {
1774+ m [k ] = val .(string )
1775+ }
1776+ return m , nil
1777+ }
1778+
1779+ func expandBigQueryDatasetExternalCatalogDatasetOptionsDefaultStorageLocationUri (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (interface {}, error ) {
1780+ return v , nil
1781+ }
1782+
16801783func expandBigQueryDatasetEffectiveLabels (v interface {}, d tpgresource.TerraformResourceData , config * transport_tpg.Config ) (map [string ]string , error ) {
16811784 if v == nil {
16821785 return map [string ]string {}, nil
0 commit comments