@@ -382,6 +382,18 @@ func resourceBigqueryAnalyticsHubListingSubscriptionRead(d *schema.ResourceData,
382382 if err != nil {
383383 return transport_tpg .HandleNotFoundError (err , d , fmt .Sprintf ("BigqueryAnalyticsHubListingSubscription %q" , d .Id ()))
384384 }
385+ // Set data_exchange_id and listing_id from res["listing"]
386+ listing := res ["listing" ].(string )
387+ parts := strings .Split (listing , "/" )
388+ if len (parts ) != 8 {
389+ return fmt .Errorf ("Listing name %q is not in the expected format projects/*/locations/*/dataExchanges/*/listings/*" , listing )
390+ }
391+ if err := d .Set ("data_exchange_id" , parts [5 ]); err != nil {
392+ return fmt .Errorf ("Error reading ListingSubscription: %s" , err )
393+ }
394+ if err := d .Set ("listing_id" , parts [7 ]); err != nil {
395+ return fmt .Errorf ("Error reading ListingSubscription: %s" , err )
396+ }
385397
386398 res , err = resourceBigqueryAnalyticsHubListingSubscriptionDecoder (d , meta , res )
387399 if err != nil {
@@ -399,6 +411,9 @@ func resourceBigqueryAnalyticsHubListingSubscriptionRead(d *schema.ResourceData,
399411 return fmt .Errorf ("Error reading ListingSubscription: %s" , err )
400412 }
401413
414+ if err := d .Set ("destination_dataset" , flattenBigqueryAnalyticsHubListingSubscriptionDestinationDataset (res ["destinationDataset" ], d , config )); err != nil {
415+ return fmt .Errorf ("Error reading ListingSubscription: %s" , err )
416+ }
402417 if err := d .Set ("name" , flattenBigqueryAnalyticsHubListingSubscriptionName (res ["name" ], d , config )); err != nil {
403418 return fmt .Errorf ("Error reading ListingSubscription: %s" , err )
404419 }
@@ -547,6 +562,73 @@ func resourceBigqueryAnalyticsHubListingSubscriptionImport(d *schema.ResourceDat
547562 return []* schema.ResourceData {d }, nil
548563}
549564
565+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDataset (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
566+ if v == nil {
567+ return nil
568+ }
569+ original := v .(map [string ]interface {})
570+ if len (original ) == 0 {
571+ return nil
572+ }
573+ transformed := make (map [string ]interface {})
574+ transformed ["location" ] =
575+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetLocation (original ["location" ], d , config )
576+ transformed ["dataset_reference" ] =
577+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDatasetReference (original ["datasetReference" ], d , config )
578+ transformed ["friendly_name" ] =
579+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetFriendlyName (original ["friendlyName" ], d , config )
580+ transformed ["description" ] =
581+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDescription (original ["description" ], d , config )
582+ transformed ["labels" ] =
583+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetLabels (original ["labels" ], d , config )
584+ return []interface {}{transformed }
585+ }
586+
587+ // Older Datasets in BigQuery have no Location set in the API response. This may be an issue when importing
588+ // datasets created before BigQuery was available in multiple zones. We can safely assume that these datasets
589+ // are in the US, as this was the default at the time.
590+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetLocation (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
591+ if v == nil {
592+ return "US"
593+ }
594+ return v
595+ }
596+
597+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDatasetReference (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
598+ if v == nil {
599+ return nil
600+ }
601+ original := v .(map [string ]interface {})
602+ if len (original ) == 0 {
603+ return nil
604+ }
605+ transformed := make (map [string ]interface {})
606+ transformed ["dataset_id" ] =
607+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDatasetReferenceDatasetId (original ["datasetId" ], d , config )
608+ transformed ["project_id" ] =
609+ flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDatasetReferenceProjectId (original ["projectId" ], d , config )
610+ return []interface {}{transformed }
611+ }
612+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDatasetReferenceDatasetId (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
613+ return v
614+ }
615+
616+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDatasetReferenceProjectId (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
617+ return v
618+ }
619+
620+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetFriendlyName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
621+ return v
622+ }
623+
624+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetDescription (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
625+ return v
626+ }
627+
628+ func flattenBigqueryAnalyticsHubListingSubscriptionDestinationDatasetLabels (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
629+ return v
630+ }
631+
550632func flattenBigqueryAnalyticsHubListingSubscriptionName (v interface {}, d * schema.ResourceData , config * transport_tpg.Config ) interface {} {
551633 return v
552634}
0 commit comments