65 lines
2.3 KiB
Terraform
65 lines
2.3 KiB
Terraform
|
/**
|
||
|
* 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)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|