variables.tf (195 lines of code) (raw):
/**
* Copyright 2023 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.
*/
variable "dataset_id" {
description = "Unique ID for the dataset being provisioned."
type = string
}
variable "dataset_name" {
description = "Friendly name for the dataset being provisioned."
type = string
default = null
}
variable "description" {
description = "Dataset description."
type = string
default = null
}
variable "location" {
description = "The regional location for the dataset only US and EU are allowed in module"
type = string
default = "US"
}
variable "delete_contents_on_destroy" {
description = "(Optional) If set to true, delete all the tables in the dataset when destroying the resource; otherwise, destroying the resource will fail if tables are present."
type = bool
default = null
}
variable "deletion_protection" {
description = "Whether or not to allow Terraform to destroy the instance. Unless this field is set to false in Terraform state, a terraform destroy or terraform apply that would delete the instance will fail"
type = bool
default = false
}
variable "default_table_expiration_ms" {
description = "TTL of tables using the dataset in MS"
type = number
default = null
}
variable "max_time_travel_hours" {
description = "Defines the time travel window in hours"
type = number
default = null
}
variable "project_id" {
description = "Project where the dataset and table are created"
type = string
}
variable "encryption_key" {
description = "Default encryption key to apply to the dataset. Defaults to null (Google-managed)."
type = string
default = null
}
variable "dataset_labels" {
description = "Key value pairs in a map for dataset labels"
type = map(string)
default = {}
}
# Format: list(objects)
# domain: A domain to grant access to.
# group_by_email: An email address of a Google Group to grant access to.
# user_by_email: An email address of a user to grant access to.
# special_group: A special group to grant access to.
variable "access" {
description = "An array of objects that define dataset access for one or more entities."
type = any
# At least one owner access is required.
default = [{
role = "roles/bigquery.dataOwner"
special_group = "projectOwners"
}]
}
variable "tables" {
description = "A list of objects which include table_id, table_name, schema, clustering, time_partitioning, range_partitioning, expiration_time and labels."
default = []
type = list(object({
table_id = string,
description = optional(string),
table_name = optional(string),
schema = string,
clustering = list(string),
time_partitioning = object({
expiration_ms = string,
field = string,
type = string,
require_partition_filter = bool,
}),
range_partitioning = object({
field = string,
range = object({
start = string,
end = string,
interval = string,
}),
}),
expiration_time = string,
labels = map(string),
}))
}
variable "views" {
description = "A list of objects which include view_id and view query"
default = []
type = list(object({
view_id = string,
description = optional(string),
query = string,
use_legacy_sql = bool,
labels = map(string),
}))
}
variable "materialized_views" {
description = "A list of objects which includes view_id, view_query, clustering, time_partitioning, range_partitioning, expiration_time and labels"
default = []
type = list(object({
view_id = string,
description = optional(string),
query = string,
enable_refresh = bool,
refresh_interval_ms = string,
clustering = list(string),
time_partitioning = object({
expiration_ms = string,
field = string,
type = string,
require_partition_filter = bool,
}),
range_partitioning = object({
field = string,
range = object({
start = string,
end = string,
interval = string,
}),
}),
expiration_time = string,
max_staleness = optional(string),
labels = map(string),
}))
}
variable "external_tables" {
description = "A list of objects which include table_id, expiration_time, external_data_configuration, and labels."
default = []
type = list(object({
table_id = string,
description = optional(string),
autodetect = bool,
compression = string,
ignore_unknown_values = bool,
max_bad_records = number,
schema = string,
source_format = string,
source_uris = list(string),
csv_options = object({
quote = string,
allow_jagged_rows = bool,
allow_quoted_newlines = bool,
encoding = string,
field_delimiter = string,
skip_leading_rows = number,
}),
google_sheets_options = object({
range = string,
skip_leading_rows = number,
}),
hive_partitioning_options = object({
mode = string,
source_uri_prefix = string,
}),
expiration_time = string,
max_staleness = optional(string),
labels = map(string),
}))
}
variable "routines" {
description = "A list of objects which include routine_id, routine_type, routine_language, definition_body, return_type, routine_description and arguments."
default = []
type = list(object({
routine_id = string,
routine_type = string,
language = string,
definition_body = string,
return_type = string,
description = string,
arguments = list(object({
name = string,
data_type = string,
argument_kind = string,
mode = string,
})),
}))
}