cloud-foundation-fabric/blueprints/cloud-operations/network-quota-monitoring/deploy-cloud-function/variables.tf

117 lines
3.6 KiB
HCL

/**
* Copyright 2022 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 "bundle_path" {
description = "Path used to write the intermediate Cloud Function code bundle."
type = string
default = "./bundle.zip"
}
variable "cloud_function_config" {
description = "Optional Cloud Function configuration."
type = object({
bucket_name = optional(string)
build_worker_pool_id = optional(string)
bundle_path = optional(string, "./bundle.zip")
debug = optional(bool, false)
memory_mb = optional(number, 256)
source_dir = optional(string, "../src")
timeout_seconds = optional(number, 540)
version = optional(string, "v1")
vpc_connector = optional(object({
name = string
egress_settings = optional(string, "ALL_TRAFFIC")
}))
})
default = {}
nullable = false
}
variable "dashboard_json_path" {
description = "Optional monitoring dashboard to deploy."
type = string
default = null
}
variable "discovery_config" {
description = "Discovery configuration. Discovery root is the organization or a folder. If monitored folders and projects are empty, every project under the discovery root node will be monitored."
type = object({
discovery_root = string
monitored_folders = list(string)
monitored_projects = list(string)
custom_quota_file = optional(string)
})
nullable = false
validation {
condition = (
var.discovery_config.monitored_folders != null &&
var.discovery_config.monitored_projects != null
)
error_message = "Monitored folders and projects can be empty lists, but they cannot be null."
}
}
variable "grant_discovery_iam_roles" {
description = "Optionally grant required IAM roles to Cloud Function service account."
type = bool
default = false
nullable = false
}
variable "labels" {
description = "Billing labels used for the Cloud Function, and the project if project_create is true."
type = map(string)
default = {}
}
variable "monitoring_project" {
description = "Project where generated metrics will be written. Default is to use the same project where the Cloud Function is deployed."
type = string
default = null
}
variable "name" {
description = "Name used to create Cloud Function related resources."
type = string
default = "net-dash"
}
variable "project_create_config" {
description = "Optional configuration if project creation is required."
type = object({
billing_account_id = string
parent_id = optional(string)
})
default = null
}
variable "project_id" {
description = "Project id where the Cloud Function will be deployed."
type = string
}
variable "region" {
description = "Compute region where the Cloud Function will be deployed."
type = string
default = "europe-west1"
}
variable "schedule_config" {
description = "Schedule timer configuration in crontab format."
type = string
default = "*/30 * * * *"
}