Skip to content

Commit 1dc241c

Browse files
Fix google_bigquery_analytics_hub_listing_subscription import (#15331) (#10855)
[upstream:bad7cb636a9df477041b88f5102e7fd95b49c638] Signed-off-by: Modular Magician <[email protected]>
1 parent 22ddb34 commit 1dc241c

File tree

3 files changed

+86
-1
lines changed

3 files changed

+86
-1
lines changed

.changelog/15331.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:bug
2+
bigqueryanalyticshub: fixed `google_bigquery_analytics_hub_listing_subscription` import
3+
```

google-beta/services/bigqueryanalyticshub/resource_bigquery_analytics_hub_listing_subscription.go

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
550632
func flattenBigqueryAnalyticsHubListingSubscriptionName(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
551633
return v
552634
}

google-beta/services/bigqueryanalyticshub/resource_bigquery_analytics_hub_listing_subscription_generated_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ func TestAccBigqueryAnalyticsHubListingSubscription_bigqueryAnalyticshubListingS
4949
ResourceName: "google_bigquery_analytics_hub_listing_subscription.subscription",
5050
ImportState: true,
5151
ImportStateVerify: true,
52-
ImportStateVerifyIgnore: []string{"data_exchange_id", "destination_dataset", "listing_id", "location"},
52+
ImportStateVerifyIgnore: []string{"data_exchange_id", "listing_id", "location"},
5353
},
5454
},
5555
})

0 commit comments

Comments
 (0)