cloud-foundation-fabric/modules/analytics-hub/main.tf

66 lines
2.3 KiB
HCL

/**
* Copyright 2024 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
locals {
prefix = var.prefix == null || var.prefix == "" ? "" : "${var.prefix}_"
_factory_listings = {
for f in try(fileset(var.factories_config.listings, "*.yaml"), []) :
trimsuffix(f, ".yaml") => yamldecode(
file("${var.factories_config.listings}/${f}")
)
}
factory_listings = merge(local._factory_listings, var.listings)
}
resource "google_bigquery_analytics_hub_data_exchange" "data_exchange" {
project = var.project_id
location = var.region
data_exchange_id = "${local.prefix}${var.name}"
display_name = "${local.prefix}${var.name}"
description = var.description
primary_contact = var.primary_contact
documentation = var.documentation
icon = var.icon
}
resource "google_bigquery_analytics_hub_listing" "listing" {
for_each = local.factory_listings
project = var.project_id
location = var.region
data_exchange_id = google_bigquery_analytics_hub_data_exchange.data_exchange.data_exchange_id
listing_id = each.key
display_name = each.key
description = try(each.value.description, null)
primary_contact = try(each.value.primary_contact, null)
documentation = try(each.value.documentation, null)
icon = try(each.value.icon, null)
request_access = try(each.value.request_access, null)
categories = try(each.value.categories, null)
bigquery_dataset {
dataset = each.value.bigquery_dataset
}
dynamic "restricted_export_config" {
for_each = each.value.restricted_export_config != null ? [""] : []
content {
enabled = try(each.value.restricted_export_config.enabled, null)
restrict_query_result = try(each.value.restricted_export_config.restrict_query_result, null)
}
}
}