235 lines
8.1 KiB
Terraform
235 lines
8.1 KiB
Terraform
|
/**
|
||
|
* 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.
|
||
|
*/
|
||
|
|
||
|
# tfdoc:file:description URLmap variable.
|
||
|
|
||
|
variable "urlmap_config" {
|
||
|
description = "The URL map configuration."
|
||
|
type = object({
|
||
|
default_service = optional(string)
|
||
|
default_url_redirect = optional(object({
|
||
|
host = optional(string)
|
||
|
https = optional(bool)
|
||
|
path = optional(string)
|
||
|
prefix = optional(string)
|
||
|
response_code = optional(string)
|
||
|
strip_query = optional(bool)
|
||
|
}))
|
||
|
host_rules = optional(list(object({
|
||
|
hosts = list(string)
|
||
|
path_matcher = string
|
||
|
description = optional(string)
|
||
|
})))
|
||
|
path_matchers = optional(map(object({
|
||
|
description = optional(string)
|
||
|
default_service = optional(string)
|
||
|
default_url_redirect = optional(object({
|
||
|
host = optional(string)
|
||
|
https = optional(bool)
|
||
|
path = optional(string)
|
||
|
prefix = optional(string)
|
||
|
response_code = optional(string)
|
||
|
strip_query = optional(bool)
|
||
|
}))
|
||
|
path_rules = optional(list(object({
|
||
|
paths = list(string)
|
||
|
service = optional(string)
|
||
|
route_action = optional(object({
|
||
|
request_mirror_backend = optional(string)
|
||
|
cors_policy = optional(object({
|
||
|
allow_credentials = optional(bool)
|
||
|
allow_headers = optional(string)
|
||
|
allow_methods = optional(string)
|
||
|
allow_origin_regexes = list(string)
|
||
|
allow_origins = list(string)
|
||
|
disabled = optional(bool)
|
||
|
expose_headers = optional(string)
|
||
|
max_age = optional(string)
|
||
|
}))
|
||
|
fault_injection_policy = optional(object({
|
||
|
abort = optional(object({
|
||
|
percentage = number
|
||
|
status = number
|
||
|
}))
|
||
|
delay = optional(object({
|
||
|
fixed = object({
|
||
|
seconds = number
|
||
|
nanos = number
|
||
|
})
|
||
|
percentage = number
|
||
|
}))
|
||
|
}))
|
||
|
retry_policy = optional(object({
|
||
|
num_retries = number
|
||
|
retry_conditions = optional(list(string))
|
||
|
per_try_timeout = optional(object({
|
||
|
seconds = number
|
||
|
nanos = optional(number)
|
||
|
}))
|
||
|
}))
|
||
|
timeout = optional(object({
|
||
|
seconds = number
|
||
|
nanos = optional(number)
|
||
|
}))
|
||
|
url_rewrite = optional(object({
|
||
|
host = optional(string)
|
||
|
path_prefix = optional(string)
|
||
|
}))
|
||
|
weighted_backend_services = optional(map(object({
|
||
|
weight = number
|
||
|
header_action = optional(object({
|
||
|
request_add = optional(map(object({
|
||
|
value = string
|
||
|
replace = optional(bool, true)
|
||
|
})))
|
||
|
request_remove = optional(list(string))
|
||
|
response_add = optional(map(object({
|
||
|
value = string
|
||
|
replace = optional(bool, true)
|
||
|
})))
|
||
|
response_remove = optional(list(string))
|
||
|
}))
|
||
|
})))
|
||
|
}))
|
||
|
url_redirect = optional(object({
|
||
|
host = optional(string)
|
||
|
https = optional(bool)
|
||
|
path = optional(string)
|
||
|
prefix = optional(string)
|
||
|
response_code = optional(string)
|
||
|
strip_query = optional(bool)
|
||
|
}))
|
||
|
})))
|
||
|
route_rules = optional(list(object({
|
||
|
priority = number
|
||
|
service = optional(string)
|
||
|
header_action = optional(object({
|
||
|
request_add = optional(map(object({
|
||
|
value = string
|
||
|
replace = optional(bool, true)
|
||
|
})))
|
||
|
request_remove = optional(list(string))
|
||
|
response_add = optional(map(object({
|
||
|
value = string
|
||
|
replace = optional(bool, true)
|
||
|
})))
|
||
|
response_remove = optional(list(string))
|
||
|
}))
|
||
|
match_rules = optional(list(object({
|
||
|
ignore_case = optional(bool, false)
|
||
|
headers = optional(list(object({
|
||
|
name = string
|
||
|
invert_match = optional(bool, false)
|
||
|
type = optional(string, "present") # exact, prefix, suffix, regex, present, range
|
||
|
value = optional(string)
|
||
|
range_value = optional(object({
|
||
|
end = string
|
||
|
start = string
|
||
|
}))
|
||
|
})))
|
||
|
metadata_filters = optional(list(object({
|
||
|
labels = map(string)
|
||
|
match_all = bool # MATCH_ANY, MATCH_ALL
|
||
|
})))
|
||
|
path = optional(object({
|
||
|
value = string
|
||
|
type = optional(string, "prefix") # full, prefix, regex
|
||
|
}))
|
||
|
query_params = optional(list(object({
|
||
|
name = string
|
||
|
value = string
|
||
|
type = optional(string, "present") # exact, present, regex
|
||
|
})))
|
||
|
})))
|
||
|
route_action = optional(object({
|
||
|
request_mirror_backend = optional(string)
|
||
|
cors_policy = optional(object({
|
||
|
allow_credentials = optional(bool)
|
||
|
allow_headers = optional(string)
|
||
|
allow_methods = optional(string)
|
||
|
allow_origin_regexes = list(string)
|
||
|
allow_origins = list(string)
|
||
|
disabled = optional(bool)
|
||
|
expose_headers = optional(string)
|
||
|
max_age = optional(string)
|
||
|
}))
|
||
|
fault_injection_policy = optional(object({
|
||
|
abort = optional(object({
|
||
|
percentage = number
|
||
|
status = number
|
||
|
}))
|
||
|
delay = optional(object({
|
||
|
fixed = object({
|
||
|
seconds = number
|
||
|
nanos = number
|
||
|
})
|
||
|
percentage = number
|
||
|
}))
|
||
|
}))
|
||
|
retry_policy = optional(object({
|
||
|
num_retries = number
|
||
|
retry_conditions = optional(list(string))
|
||
|
per_try_timeout = optional(object({
|
||
|
seconds = number
|
||
|
nanos = optional(number)
|
||
|
}))
|
||
|
}))
|
||
|
timeout = optional(object({
|
||
|
seconds = number
|
||
|
nanos = optional(number)
|
||
|
}))
|
||
|
url_rewrite = optional(object({
|
||
|
host = optional(string)
|
||
|
path_prefix = optional(string)
|
||
|
}))
|
||
|
weighted_backend_services = optional(map(object({
|
||
|
weight = number
|
||
|
header_action = optional(object({
|
||
|
request_add = optional(map(object({
|
||
|
value = string
|
||
|
replace = optional(bool, true)
|
||
|
})))
|
||
|
request_remove = optional(list(string))
|
||
|
response_add = optional(map(object({
|
||
|
value = string
|
||
|
replace = optional(bool, true)
|
||
|
})))
|
||
|
response_remove = optional(list(string))
|
||
|
}))
|
||
|
})))
|
||
|
}))
|
||
|
url_redirect = optional(object({
|
||
|
host = optional(string)
|
||
|
https = optional(bool)
|
||
|
path = optional(string)
|
||
|
prefix = optional(string)
|
||
|
response_code = optional(string)
|
||
|
strip_query = optional(bool)
|
||
|
}))
|
||
|
})))
|
||
|
})))
|
||
|
test = optional(list(object({
|
||
|
host = string
|
||
|
path = string
|
||
|
service = string
|
||
|
description = optional(string)
|
||
|
})))
|
||
|
})
|
||
|
default = {
|
||
|
default_service = "default"
|
||
|
}
|
||
|
}
|