137 lines
3.9 KiB
HCL
137 lines
3.9 KiB
HCL
/**
|
|
* Copyright 2026 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 "access_path" {
|
|
description = "The direction the gateway applies to: ingress (CLIENT_TO_AGENT) or egress (AGENT_TO_ANYWHERE) (if var.is_google_managed = false)."
|
|
type = string
|
|
default = null
|
|
|
|
validation {
|
|
condition = (
|
|
var.is_google_managed == true
|
|
&& var.access_path == null
|
|
? false : true
|
|
)
|
|
error_message = "You must specify var.access_path if var.is_google_managed = true."
|
|
}
|
|
|
|
validation {
|
|
condition = (
|
|
var.access_path != null
|
|
&& !(
|
|
lower(var.access_path) == "egress"
|
|
|| lower(var.access_path) == "ingress"
|
|
|| var.access_path == "CLIENT_TO_AGENT"
|
|
|| var.access_path == "AGENT_TO_ANYWHERE"
|
|
)
|
|
? false : true
|
|
)
|
|
|
|
error_message = "access_path can be one of the following: ingress (or CLIENT_TO_AGENT), egress (or AGENT_TO_ANYWHERE)."
|
|
}
|
|
}
|
|
|
|
variable "context" {
|
|
description = "Context-specific interpolations."
|
|
type = object({
|
|
locations = optional(map(string), {})
|
|
project_ids = optional(map(string), {})
|
|
psc_network_attachments = optional(map(string), {})
|
|
})
|
|
default = {}
|
|
nullable = false
|
|
}
|
|
|
|
variable "description" {
|
|
description = "The description of the Agent Gateway."
|
|
type = string
|
|
default = "Terraform managed."
|
|
}
|
|
|
|
variable "is_google_managed" {
|
|
description = "Whether the Agent Gateway is Google or self-managed."
|
|
type = bool
|
|
nullable = false
|
|
default = true
|
|
}
|
|
|
|
variable "labels" {
|
|
description = "Labels to associate to the Agent Gateway."
|
|
type = map(string)
|
|
default = null
|
|
}
|
|
|
|
variable "name" {
|
|
description = "The name of the Agent Gateway."
|
|
type = string
|
|
nullable = false
|
|
}
|
|
|
|
# Structured as object, as more arguments are coming soon
|
|
variable "networking_config" {
|
|
description = "The Agent Gateway networking configuration."
|
|
type = object({
|
|
psc_i_network_attachment_id = optional(string)
|
|
})
|
|
nullable = false
|
|
default = {}
|
|
}
|
|
|
|
variable "project_id" {
|
|
description = "The ID of the project where the data stores and the agents will be created."
|
|
type = string
|
|
nullable = false
|
|
}
|
|
|
|
variable "protocols" {
|
|
description = "The protocols managed by the Agent Gateway."
|
|
type = list(string)
|
|
nullable = false
|
|
default = ["MCP"]
|
|
|
|
validation {
|
|
condition = length(var.protocols) == 0 || (length(var.protocols) == 1 && var.protocols[0] == "MCP")
|
|
error_message = "var.protocols can be one of the following: [], [\"MCP\"]."
|
|
}
|
|
}
|
|
|
|
variable "proxy_uri" {
|
|
description = "The uri of a compatible self-managed proxy (if var.is_google_managed = false)."
|
|
type = string
|
|
default = null
|
|
|
|
validation {
|
|
condition = (
|
|
var.is_google_managed == false
|
|
&& var.proxy_uri == null
|
|
? false : true
|
|
)
|
|
error_message = "You must specify var.proxy_uri if var.is_google_managed = false."
|
|
}
|
|
}
|
|
|
|
variable "region" {
|
|
description = "The region where the agent gateway is created."
|
|
type = string
|
|
nullable = false
|
|
}
|
|
|
|
variable "registries" {
|
|
description = "A list of Agent Registries containing the agents, MCP servers and tools governed by the Agent Gateway. Note: Currently limited to project-scoped registries Must be of format //agentregistry.googleapis.com/{version}/projects/{{project}}/locations/{{location}}."
|
|
type = list(string)
|
|
default = null
|
|
}
|