Skip to content

Instantly share code, notes, and snippets.

@alexjmoore
Created March 30, 2021 15:05
Show Gist options
  • Save alexjmoore/e0554867c194af530ae9f92ccd15bcc4 to your computer and use it in GitHub Desktop.
Save alexjmoore/e0554867c194af530ae9f92ccd15bcc4 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
[2021-03-30T16:04:45.638] [DEBUG] default - Terraform v0.14.9
⠋ starting...
⠋ downloading and generating modules and providers...
⠙ downloading and generating modules and providers...
[2021-03-30T16:04:45.857] [DEBUG] default - Initializing modules...
⠹ downloading and generating modules and providers...
⠸ downloading and generating modules and providers...
[2021-03-30T16:04:46.062] [DEBUG] default - Downloading terraform-google-modules/network/google 3.0.0 for google...
⠼ downloading and generating modules and providers...
⠴ downloading and generating modules and providers...
⠦ downloading and generating modules and providers...
⠧ downloading and generating modules and providers...
⠇ downloading and generating modules and providers...
⠏ downloading and generating modules and providers...
⠋ downloading and generating modules and providers...
⠙ downloading and generating modules and providers...
⠹ downloading and generating modules and providers...
⠸ downloading and generating modules and providers...
[2021-03-30T16:04:46.852] [DEBUG] default - - google in .terraform/modules/google
- google.routes in .terraform/modules/google/modules/routes
- google.subnets in .terraform/modules/google/modules/subnets
- google.vpc in .terraform/modules/google/modules/vpc
[2021-03-30T16:04:46.861] [DEBUG] default - 
[2021-03-30T16:04:46.862] [DEBUG] default - Initializing the backend...
[2021-03-30T16:04:46.868] [DEBUG] default - 
[2021-03-30T16:04:46.869] [DEBUG] default - Initializing provider plugins...
- Finding hashicorp/google versions matching ">= 2.12.0, ~> 3.0, ~> 3.45, < 4.0.0"...
⠼ downloading and generating modules and providers...
⠴ downloading and generating modules and providers...
[2021-03-30T16:04:46.987] [DEBUG] default - - Using hashicorp/google v3.62.0 from the shared cache directory
⠦ downloading and generating modules and providers...
⠧ downloading and generating modules and providers...
⠇ downloading and generating modules and providers...
[2021-03-30T16:04:47.242] [DEBUG] default - 
Terraform has created a lock file .terraform.lock.hcl to record the provider
selections it made above. Include this file in your version control repository
[2021-03-30T16:04:47.243] [DEBUG] default - so that Terraform can guarantee to make the same selections by default when
you run "terraform init" in the future.
[2021-03-30T16:04:47.245] [DEBUG] default - 
[2021-03-30T16:04:47.245] [DEBUG] default - Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.
If you ever set or change modules or backend configuration for Terraform,
[2021-03-30T16:04:47.246] [DEBUG] default - rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.
⠏ downloading and generating modules and providers...
⠋ downloading and generating modules and providers...
⠙ downloading and generating modules and providers...
⠹ downloading and generating modules and providers...
⠸ downloading and generating modules and providers...
⠼ downloading and generating modules and providers...
⠴ downloading and generating modules and providers...
⠦ downloading and generating modules and providers...
⠧ downloading and generating modules and providers...
⠇ downloading and generating modules and providers...
⠏ downloading and generating modules and providers...
⠋ downloading and generating modules and providers...
⠙ downloading and generating modules and providers...
⠹ downloading and generating modules and providers...
⠸ downloading and generating modules and providers...
⠼ downloading and generating modules and providers...
⠴ downloading and generating modules and providers...
⠦ downloading and generating modules and providers...
⠧ downloading and generating modules and providers...
⠇ downloading and generating modules and providers...
⠏ downloading and generating modules and providers...
⠋ downloading and generating modules and providers...
⠙ downloading and generating modules and providers...
⠹ downloading and generating modules and providers...
[2021-03-30T16:04:49.138] [DEBUG] default - {"format_version":"0.1","provider_schemas":{"registry.terraform.io/hashicorp/google":{"provider":{"version":0,"block":{"attributes":{"access_approval_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"access_context_manager_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"access_token":{"type":"string","description_kind":"plain","optional":true},"active_directory_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"apigee_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"app_engine_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"big_query_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"bigquery_data_transfer_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"bigquery_reservation_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"bigtable_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"billing_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"billing_project":{"type":"string","description_kind":"plain","optional":true},"binary_authorization_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_asset_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_billing_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_build_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_functions_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_identity_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_iot_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_run_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_scheduler_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"cloud_tasks_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"composer_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"compute_beta_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"compute_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"container_analysis_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"container_beta_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"container_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"credentials":{"type":"string","description_kind":"plain","optional":true},"data_catalog_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"data_loss_prevention_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"dataflow_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"dataproc_beta_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"dataproc_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"datastore_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"deployment_manager_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"dialogflow_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"dns_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"eventarc_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"filestore_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"firestore_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"game_services_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"healthcare_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"iam_credentials_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"iam_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"iap_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"identity_platform_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"impersonate_service_account":{"type":"string","description_kind":"plain","optional":true},"impersonate_service_account_delegates":{"type":["list","string"],"description_kind":"plain","optional":true},"kms_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"logging_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"ml_engine_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"monitoring_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"network_management_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"notebooks_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"os_config_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"os_login_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true},"pubsub_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"pubsub_lite_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"redis_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"region":{"type":"string","description_kind":"plain","optional":true},"request_timeout":{"type":"string","description_kind":"plain","optional":true},"resource_manager_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"resource_manager_v2_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"runtime_config_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"runtimeconfig_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"scopes":{"type":["list","string"],"description_kind":"plain","optional":true},"secret_manager_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"security_center_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"service_management_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"service_networking_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"service_usage_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"source_repo_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"spanner_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"sql_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"storage_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"storage_transfer_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"tpu_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"user_project_override":{"type":"bool","description_kind":"plain","optional":true},"vpc_access_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"workflows_custom_endpoint":{"type":"string","description_kind":"plain","optional":true},"zone":{"type":"string","description_kind":"plain","optional":true}},"block_types":{"batching":{"nesting_mode":"list","block":{"attributes":{"enable_batching":{"type":"bool","description_kind":"plain","optional":true},"send_after":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"resource_schemas":{"google_access_context_manager_access_level":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the AccessLevel and its use. Does not affect behavior.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Resource name for the Access Level. The short_name component must begin\nwith a letter and only include alphanumeric and '_'.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}","description_kind":"plain","required":true},"parent":{"type":"string","description":"The AccessPolicy this AccessLevel lives in.\nFormat: accessPolicies/{policy_id}","description_kind":"plain","required":true},"title":{"type":"string","description":"Human readable title. Must be unique within the Policy.","description_kind":"plain","required":true}},"block_types":{"basic":{"nesting_mode":"list","block":{"attributes":{"combining_function":{"type":"string","description":"How the conditions list should be combined to determine if a request\nis granted this AccessLevel. If AND is used, each Condition in\nconditions must be satisfied for the AccessLevel to be applied. If\nOR is used, at least one Condition in conditions must be satisfied\nfor the AccessLevel to be applied. Default value: \"AND\" Possible values: [\"AND\", \"OR\"]","description_kind":"plain","optional":true}},"block_types":{"conditions":{"nesting_mode":"list","block":{"attributes":{"ip_subnetworks":{"type":["list","string"],"description":"A list of CIDR block IP subnetwork specification. May be IPv4\nor IPv6.\nNote that for a CIDR IP address block, the specified IP address\nportion must be properly truncated (i.e. all the host bits must\nbe zero) or the input is considered malformed. For example,\n\"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly,\nfor IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\"\nis not. The originating IP of a request must be in one of the\nlisted subnets in order for this Condition to be true.\nIf empty, all IP addresses are allowed.","description_kind":"plain","optional":true},"members":{"type":["list","string"],"description":"An allowed list of members (users, service accounts).\nUsing groups is not supported yet.\n\nThe signed-in user originating the request must be a part of one\nof the provided members. If not specified, a request may come\nfrom any user (logged in/not logged in, not present in any\ngroups, etc.).\nFormats: 'user:{emailid}', 'serviceAccount:{emailid}'","description_kind":"plain","optional":true},"negate":{"type":"bool","description":"Whether to negate the Condition. If true, the Condition becomes\na NAND over its non-empty fields, each field must be false for\nthe Condition overall to be satisfied. Defaults to false.","description_kind":"plain","optional":true},"regions":{"type":["list","string"],"description":"The request must originate from one of the provided\ncountries/regions.\nFormat: A valid ISO 3166-1 alpha-2 code.","description_kind":"plain","optional":true},"required_access_levels":{"type":["list","string"],"description":"A list of other access levels defined in the same Policy,\nreferenced by resource name. Referencing an AccessLevel which\ndoes not exist is an error. All access levels listed must be\ngranted for the Condition to be true.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}","description_kind":"plain","optional":true}},"block_types":{"device_policy":{"nesting_mode":"list","block":{"attributes":{"allowed_device_management_levels":{"type":["list","string"],"description":"A list of allowed device management levels.\nAn empty list allows all management levels. Possible values: [\"MANAGEMENT_UNSPECIFIED\", \"NONE\", \"BASIC\", \"COMPLETE\"]","description_kind":"plain","optional":true},"allowed_encryption_statuses":{"type":["list","string"],"description":"A list of allowed encryptions statuses.\nAn empty list allows all statuses. Possible values: [\"ENCRYPTION_UNSPECIFIED\", \"ENCRYPTION_UNSUPPORTED\", \"UNENCRYPTED\", \"ENCRYPTED\"]","description_kind":"plain","optional":true},"require_admin_approval":{"type":"bool","description":"Whether the device needs to be approved by the customer admin.","description_kind":"plain","optional":true},"require_corp_owned":{"type":"bool","description":"Whether the device needs to be corp owned.","description_kind":"plain","optional":true},"require_screen_lock":{"type":"bool","description":"Whether or not screenlock is required for the DevicePolicy\nto be true. Defaults to false.","description_kind":"plain","optional":true}},"block_types":{"os_constraints":{"nesting_mode":"list","block":{"attributes":{"minimum_version":{"type":"string","description":"The minimum allowed OS version. If not set, any version\nof this OS satisfies the constraint.\nFormat: \"major.minor.patch\" such as \"10.5.301\", \"9.2.1\".","description_kind":"plain","optional":true},"os_type":{"type":"string","description":"The operating system type of the device. Possible values: [\"OS_UNSPECIFIED\", \"DESKTOP_MAC\", \"DESKTOP_WINDOWS\", \"DESKTOP_LINUX\", \"DESKTOP_CHROME_OS\"]","description_kind":"plain","required":true}},"description":"A list of allowed OS versions.\nAn empty list allows all types and all versions.","description_kind":"plain"}}},"description":"Device specific restrictions, all restrictions must hold for\nthe Condition to be true. If not specified, all devices are\nallowed.","description_kind":"plain"},"max_items":1}},"description":"A set of requirements for the AccessLevel to be granted.","description_kind":"plain"},"min_items":1}},"description":"A set of predefined conditions for the access level and a combining function.","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"block_types":{"expr":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of the expression","description_kind":"plain","optional":true},"expression":{"type":"string","description":"Textual representation of an expression in Common Expression Language syntax.","description_kind":"plain","required":true},"location":{"type":"string","description":"String indicating the location of the expression for error reporting, e.g. a file name and a position in the file","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title for the expression, i.e. a short string describing its purpose.","description_kind":"plain","optional":true}},"description":"Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language.\nThis page details the objects and attributes that are used to the build the CEL expressions for \ncustom access levels - https://cloud.google.com/access-context-manager/docs/custom-access-level-spec.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Custom access level conditions are set using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. \nSee CEL spec at: https://github.com/google/cel-spec.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_access_level_condition":{"version":0,"block":{"attributes":{"access_level":{"type":"string","description":"The name of the Access Level to add this condition to.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_subnetworks":{"type":["list","string"],"description":"A list of CIDR block IP subnetwork specification. May be IPv4\nor IPv6.\nNote that for a CIDR IP address block, the specified IP address\nportion must be properly truncated (i.e. all the host bits must\nbe zero) or the input is considered malformed. For example,\n\"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly,\nfor IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\"\nis not. The originating IP of a request must be in one of the\nlisted subnets in order for this Condition to be true.\nIf empty, all IP addresses are allowed.","description_kind":"plain","optional":true},"members":{"type":["list","string"],"description":"An allowed list of members (users, service accounts).\nUsing groups is not supported yet.\n\nThe signed-in user originating the request must be a part of one\nof the provided members. If not specified, a request may come\nfrom any user (logged in/not logged in, not present in any\ngroups, etc.).\nFormats: 'user:{emailid}', 'serviceAccount:{emailid}'","description_kind":"plain","optional":true},"negate":{"type":"bool","description":"Whether to negate the Condition. If true, the Condition becomes\na NAND over its non-empty fields, each field must be false for\nthe Condition overall to be satisfied. Defaults to false.","description_kind":"plain","optional":true},"regions":{"type":["list","string"],"description":"The request must originate from one of the provided\ncountries/regions.\nFormat: A valid ISO 3166-1 alpha-2 code.","description_kind":"plain","optional":true},"required_access_levels":{"type":["list","string"],"description":"A list of other access levels defined in the same Policy,\nreferenced by resource name. Referencing an AccessLevel which\ndoes not exist is an error. All access levels listed must be\ngranted for the Condition to be true.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}","description_kind":"plain","optional":true}},"block_types":{"device_policy":{"nesting_mode":"list","block":{"attributes":{"allowed_device_management_levels":{"type":["list","string"],"description":"A list of allowed device management levels.\nAn empty list allows all management levels. Possible values: [\"MANAGEMENT_UNSPECIFIED\", \"NONE\", \"BASIC\", \"COMPLETE\"]","description_kind":"plain","optional":true},"allowed_encryption_statuses":{"type":["list","string"],"description":"A list of allowed encryptions statuses.\nAn empty list allows all statuses. Possible values: [\"ENCRYPTION_UNSPECIFIED\", \"ENCRYPTION_UNSUPPORTED\", \"UNENCRYPTED\", \"ENCRYPTED\"]","description_kind":"plain","optional":true},"require_admin_approval":{"type":"bool","description":"Whether the device needs to be approved by the customer admin.","description_kind":"plain","optional":true},"require_corp_owned":{"type":"bool","description":"Whether the device needs to be corp owned.","description_kind":"plain","optional":true},"require_screen_lock":{"type":"bool","description":"Whether or not screenlock is required for the DevicePolicy\nto be true. Defaults to false.","description_kind":"plain","optional":true}},"block_types":{"os_constraints":{"nesting_mode":"list","block":{"attributes":{"minimum_version":{"type":"string","description":"The minimum allowed OS version. If not set, any version\nof this OS satisfies the constraint.\nFormat: \"major.minor.patch\" such as \"10.5.301\", \"9.2.1\".","description_kind":"plain","optional":true},"os_type":{"type":"string","description":"The operating system type of the device. Possible values: [\"OS_UNSPECIFIED\", \"DESKTOP_MAC\", \"DESKTOP_WINDOWS\", \"DESKTOP_LINUX\", \"DESKTOP_CHROME_OS\"]","description_kind":"plain","required":true}},"description":"A list of allowed OS versions.\nAn empty list allows all types and all versions.","description_kind":"plain"}}},"description":"Device specific restrictions, all restrictions must hold for\nthe Condition to be true. If not specified, all devices are\nallowed.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_access_levels":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"parent":{"type":"string","description":"The AccessPolicy this AccessLevel lives in.\nFormat: accessPolicies/{policy_id}","description_kind":"plain","required":true}},"block_types":{"access_levels":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"Description of the AccessLevel and its use. Does not affect behavior.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Resource name for the Access Level. The short_name component must begin\nwith a letter and only include alphanumeric and '_'.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}","description_kind":"plain","required":true},"title":{"type":"string","description":"Human readable title. Must be unique within the Policy.","description_kind":"plain","required":true}},"block_types":{"basic":{"nesting_mode":"list","block":{"attributes":{"combining_function":{"type":"string","description":"How the conditions list should be combined to determine if a request\nis granted this AccessLevel. If AND is used, each Condition in\nconditions must be satisfied for the AccessLevel to be applied. If\nOR is used, at least one Condition in conditions must be satisfied\nfor the AccessLevel to be applied. Default value: \"AND\" Possible values: [\"AND\", \"OR\"]","description_kind":"plain","optional":true}},"block_types":{"conditions":{"nesting_mode":"list","block":{"attributes":{"ip_subnetworks":{"type":["list","string"],"description":"A list of CIDR block IP subnetwork specification. May be IPv4\nor IPv6.\nNote that for a CIDR IP address block, the specified IP address\nportion must be properly truncated (i.e. all the host bits must\nbe zero) or the input is considered malformed. For example,\n\"192.0.2.0/24\" is accepted but \"192.0.2.1/24\" is not. Similarly,\nfor IPv6, \"2001:db8::/32\" is accepted whereas \"2001:db8::1/32\"\nis not. The originating IP of a request must be in one of the\nlisted subnets in order for this Condition to be true.\nIf empty, all IP addresses are allowed.","description_kind":"plain","optional":true},"members":{"type":["list","string"],"description":"An allowed list of members (users, service accounts).\nUsing groups is not supported yet.\n\nThe signed-in user originating the request must be a part of one\nof the provided members. If not specified, a request may come\nfrom any user (logged in/not logged in, not present in any\ngroups, etc.).\nFormats: 'user:{emailid}', 'serviceAccount:{emailid}'","description_kind":"plain","optional":true},"negate":{"type":"bool","description":"Whether to negate the Condition. If true, the Condition becomes\na NAND over its non-empty fields, each field must be false for\nthe Condition overall to be satisfied. Defaults to false.","description_kind":"plain","optional":true},"regions":{"type":["list","string"],"description":"The request must originate from one of the provided\ncountries/regions.\nFormat: A valid ISO 3166-1 alpha-2 code.","description_kind":"plain","optional":true},"required_access_levels":{"type":["list","string"],"description":"A list of other access levels defined in the same Policy,\nreferenced by resource name. Referencing an AccessLevel which\ndoes not exist is an error. All access levels listed must be\ngranted for the Condition to be true.\nFormat: accessPolicies/{policy_id}/accessLevels/{short_name}","description_kind":"plain","optional":true}},"block_types":{"device_policy":{"nesting_mode":"list","block":{"attributes":{"allowed_device_management_levels":{"type":["list","string"],"description":"A list of allowed device management levels.\nAn empty list allows all management levels. Possible values: [\"MANAGEMENT_UNSPECIFIED\", \"NONE\", \"BASIC\", \"COMPLETE\"]","description_kind":"plain","optional":true},"allowed_encryption_statuses":{"type":["list","string"],"description":"A list of allowed encryptions statuses.\nAn empty list allows all statuses. Possible values: [\"ENCRYPTION_UNSPECIFIED\", \"ENCRYPTION_UNSUPPORTED\", \"UNENCRYPTED\", \"ENCRYPTED\"]","description_kind":"plain","optional":true},"require_admin_approval":{"type":"bool","description":"Whether the device needs to be approved by the customer admin.","description_kind":"plain","optional":true},"require_corp_owned":{"type":"bool","description":"Whether the device needs to be corp owned.","description_kind":"plain","optional":true},"require_screen_lock":{"type":"bool","description":"Whether or not screenlock is required for the DevicePolicy\nto be true. Defaults to false.","description_kind":"plain","optional":true}},"block_types":{"os_constraints":{"nesting_mode":"list","block":{"attributes":{"minimum_version":{"type":"string","description":"The minimum allowed OS version. If not set, any version\nof this OS satisfies the constraint.\nFormat: \"major.minor.patch\" such as \"10.5.301\", \"9.2.1\".","description_kind":"plain","optional":true},"os_type":{"type":"string","description":"The operating system type of the device. Possible values: [\"OS_UNSPECIFIED\", \"DESKTOP_MAC\", \"DESKTOP_WINDOWS\", \"DESKTOP_LINUX\", \"DESKTOP_CHROME_OS\"]","description_kind":"plain","required":true}},"description":"A list of allowed OS versions.\nAn empty list allows all types and all versions.","description_kind":"plain"}}},"description":"Device specific restrictions, all restrictions must hold for\nthe Condition to be true. If not specified, all devices are\nallowed.","description_kind":"plain"},"max_items":1}},"description":"A set of requirements for the AccessLevel to be granted.","description_kind":"plain"},"min_items":1}},"description":"A set of predefined conditions for the access level and a combining function.","description_kind":"plain"},"max_items":1},"custom":{"nesting_mode":"list","block":{"block_types":{"expr":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of the expression","description_kind":"plain","optional":true},"expression":{"type":"string","description":"Textual representation of an expression in Common Expression Language syntax.","description_kind":"plain","required":true},"location":{"type":"string","description":"String indicating the location of the expression for error reporting, e.g. a file name and a position in the file","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title for the expression, i.e. a short string describing its purpose.","description_kind":"plain","optional":true}},"description":"Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language.\nThis page details the objects and attributes that are used to the build the CEL expressions for \ncustom access levels - https://cloud.google.com/access-context-manager/docs/custom-access-level-spec.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Custom access level conditions are set using the Cloud Common Expression Language to represent the necessary conditions for the level to apply to a request. \nSee CEL spec at: https://github.com/google/cel-spec.","description_kind":"plain"},"max_items":1}},"description":"The desired Access Levels that should replace all existing Access Levels in the Access Policy.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_access_policy":{"version":0,"block":{"attributes":{"create_time":{"type":"string","description":"Time the AccessPolicy was created in UTC.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Resource name of the AccessPolicy. Format: {policy_id}","description_kind":"plain","computed":true},"parent":{"type":"string","description":"The parent of this AccessPolicy in the Cloud Resource Hierarchy.\nFormat: organizations/{organization_id}","description_kind":"plain","required":true},"title":{"type":"string","description":"Human readable title. Does not affect behavior.","description_kind":"plain","required":true},"update_time":{"type":"string","description":"Time the AccessPolicy was updated in UTC.","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_gcp_user_access_binding":{"version":0,"block":{"attributes":{"access_levels":{"type":["list","string"],"description":"Required. Access level that a user must have to be granted access. Only one access level is supported, not multiple. This repeated field must have exactly one element. Example: \"accessPolicies/9522/accessLevels/device_trusted\"","description_kind":"plain","required":true},"group_key":{"type":"string","description":"Required. Immutable. Google Group id whose members are subject to this binding's restrictions. See \"id\" in the G Suite Directory API's Groups resource. If a group's email address/alias is changed, this resource will continue to point at the changed group. This field does not accept group email addresses or aliases. Example: \"01d520gv4vjcrht\"","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Immutable. Assigned by the server during creation. The last segment has an arbitrary length and has only URI unreserved characters (as defined by RFC 3986 Section 2.3). Should not be specified by the client during creation. Example: \"organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N\"","description_kind":"plain","computed":true},"organization_id":{"type":"string","description":"Required. ID of the parent organization.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_service_perimeter":{"version":0,"block":{"attributes":{"create_time":{"type":"string","description":"Time the AccessPolicy was created in UTC.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the ServicePerimeter and its use. Does not affect\nbehavior.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Resource name for the ServicePerimeter. The short_name component must\nbegin with a letter and only include alphanumeric and '_'.\nFormat: accessPolicies/{policy_id}/servicePerimeters/{short_name}","description_kind":"plain","required":true},"parent":{"type":"string","description":"The AccessPolicy this ServicePerimeter lives in.\nFormat: accessPolicies/{policy_id}","description_kind":"plain","required":true},"perimeter_type":{"type":"string","description":"Specifies the type of the Perimeter. There are two types: regular and\nbridge. Regular Service Perimeter contains resources, access levels,\nand restricted services. Every resource can be in at most\nONE regular Service Perimeter.\n\nIn addition to being in a regular service perimeter, a resource can also\nbe in zero or more perimeter bridges. A perimeter bridge only contains\nresources. Cross project operations are permitted if all effected\nresources share some perimeter (whether bridge or regular). Perimeter\nBridge does not contain access levels or services: those are governed\nentirely by the regular perimeter that resource is in.\n\nPerimeter Bridges are typically useful when building more complex\ntopologies with many independent perimeters that need to share some data\nwith a common perimeter, but should not be able to share data among\nthemselves. Default value: \"PERIMETER_TYPE_REGULAR\" Possible values: [\"PERIMETER_TYPE_REGULAR\", \"PERIMETER_TYPE_BRIDGE\"]","description_kind":"plain","optional":true},"title":{"type":"string","description":"Human readable title. Must be unique within the Policy.","description_kind":"plain","required":true},"update_time":{"type":"string","description":"Time the AccessPolicy was updated in UTC.","description_kind":"plain","computed":true},"use_explicit_dry_run_spec":{"type":"bool","description":"Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists\nfor all Service Perimeters, and that spec is identical to the status for those\nService Perimeters. When this flag is set, it inhibits the generation of the\nimplicit spec, thereby allowing the user to explicitly provide a\nconfiguration (\"spec\") to use in a dry-run version of the Service Perimeter.\nThis allows the user to test changes to the enforced config (\"status\") without\nactually enforcing them. This testing is done through analyzing the differences\nbetween currently enforced and suggested restrictions. useExplicitDryRunSpec must\nbet set to True if any of the fields in the spec are set to non-default values.","description_kind":"plain","optional":true}},"block_types":{"spec":{"nesting_mode":"list","block":{"attributes":{"access_levels":{"type":["list","string"],"description":"A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\n\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}","description_kind":"plain","optional":true},"resources":{"type":["list","string"],"description":"A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}","description_kind":"plain","optional":true},"restricted_services":{"type":["list","string"],"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","description_kind":"plain","optional":true}},"block_types":{"egress_policies":{"nesting_mode":"list","block":{"block_types":{"egress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this 'EgressPolicy'. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"description":"/ Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1},"egress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', that match this to stanza. A request matches if it contains a resource in this list. If * is specified for resources, then this 'EgressTo' rule will authorize access to all resources outside the perimeter.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for 'method' should be a valid method name for the corresponding 'serviceName' in 'ApiOperation'. If '*' used as value for method, then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by 'serviceName' field. A single MethodSelector entry with '*' specified for the 'method' field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' that this egress rule applies to. A request matches if it contains an operation/service in this list.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and destination resources that cause this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"ingress_policies":{"nesting_mode":"list","block":{"block_types":{"ingress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this ingress policy. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"block_types":{"sources":{"nesting_mode":"list","block":{"attributes":{"access_level":{"type":"string","description":"/ An 'AccessLevel' resource name that allow resources within the 'ServicePerimeters' to be accessed from the internet. 'AccessLevels' listed must be in the same policy as this 'ServicePerimeter'. Referencing a nonexistent 'AccessLevel' will cause an error. If no 'AccessLevel' names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example 'accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.' If * is specified, then all IngressSources will be allowed.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"/ A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects are allowed. Format 'projects/{project_number}' The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. '*' is not allowed, the case of allowing all Google Cloud resources only is not supported.","description_kind":"plain","optional":true}},"description":"/ Sources that this 'IngressPolicy' authorizes access from.","description_kind":"plain"}}},"description":"/ Defines the conditions on the source of a request causing this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1},"ingress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', protected by this 'ServicePerimeter' that are allowed to be accessed by sources defined in the corresponding 'IngressFrom'. A request matches if it contains a resource in this list. If '*' is specified for resources, then this 'IngressTo' rule will authorize access to all resources inside the perimeter, provided that the request also matches the 'operations' field.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for method should be a valid method name for the corresponding serviceName in 'ApiOperation'. If '*' used as value for 'method', then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by serviceName field. A single 'MethodSelector' entry with '*' specified for the method field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' are allowed to perform in this 'ServicePerimeter'.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and request destination that cause this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of 'IngressPolicies' to apply to the perimeter. A perimeter may have multiple 'IngressPolicies', each of which is evaluated separately. Access is granted if any 'Ingress Policy' grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"vpc_accessible_services":{"nesting_mode":"list","block":{"attributes":{"allowed_services":{"type":["list","string"],"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","description_kind":"plain","optional":true},"enable_restriction":{"type":"bool","description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","description_kind":"plain","optional":true}},"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","description_kind":"plain"},"max_items":1}},"description":"Proposed (or dry run) ServicePerimeter configuration.\nThis configuration allows to specify and test ServicePerimeter configuration\nwithout enforcing actual access restrictions. Only allowed to be set when\nthe 'useExplicitDryRunSpec' flag is set.","description_kind":"plain"},"max_items":1},"status":{"nesting_mode":"list","block":{"attributes":{"access_levels":{"type":["list","string"],"description":"A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\n\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}","description_kind":"plain","optional":true},"resources":{"type":["list","string"],"description":"A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}","description_kind":"plain","optional":true},"restricted_services":{"type":["set","string"],"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","description_kind":"plain","optional":true}},"block_types":{"egress_policies":{"nesting_mode":"list","block":{"block_types":{"egress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this 'EgressPolicy'. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"description":"/ Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1},"egress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', that match this to stanza. A request matches if it contains a resource in this list. If * is specified for resources, then this 'EgressTo' rule will authorize access to all resources outside the perimeter.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for 'method' should be a valid method name for the corresponding 'serviceName' in 'ApiOperation'. If '*' used as value for method, then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by 'serviceName' field. A single MethodSelector entry with '*' specified for the 'method' field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' that this egress rule applies to. A request matches if it contains an operation/service in this list.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and destination resources that cause this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"ingress_policies":{"nesting_mode":"list","block":{"block_types":{"ingress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this ingress policy. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"block_types":{"sources":{"nesting_mode":"list","block":{"attributes":{"access_level":{"type":"string","description":"/ An 'AccessLevel' resource name that allow resources within the 'ServicePerimeters' to be accessed from the internet. 'AccessLevels' listed must be in the same policy as this 'ServicePerimeter'. Referencing a nonexistent 'AccessLevel' will cause an error. If no 'AccessLevel' names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example 'accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.' If * is specified, then all IngressSources will be allowed.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"/ A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects are allowed. Format 'projects/{project_number}' The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. '*' is not allowed, the case of allowing all Google Cloud resources only is not supported.","description_kind":"plain","optional":true}},"description":"/ Sources that this 'IngressPolicy' authorizes access from.","description_kind":"plain"}}},"description":"/ Defines the conditions on the source of a request causing this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1},"ingress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', protected by this 'ServicePerimeter' that are allowed to be accessed by sources defined in the corresponding 'IngressFrom'. A request matches if it contains a resource in this list. If '*' is specified for resources, then this 'IngressTo' rule will authorize access to all resources inside the perimeter, provided that the request also matches the 'operations' field.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for method should be a valid method name for the corresponding serviceName in 'ApiOperation'. If '*' used as value for 'method', then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by serviceName field. A single 'MethodSelector' entry with '*' specified for the method field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' are allowed to perform in this 'ServicePerimeter'.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and request destination that cause this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of 'IngressPolicies' to apply to the perimeter. A perimeter may have multiple 'IngressPolicies', each of which is evaluated separately. Access is granted if any 'Ingress Policy' grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"vpc_accessible_services":{"nesting_mode":"list","block":{"attributes":{"allowed_services":{"type":["set","string"],"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","description_kind":"plain","optional":true},"enable_restriction":{"type":"bool","description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","description_kind":"plain","optional":true}},"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","description_kind":"plain"},"max_items":1}},"description":"ServicePerimeter configuration. Specifies sets of resources,\nrestricted services and access levels that determine\nperimeter content and boundaries.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_service_perimeter_resource":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"perimeter_name":{"type":"string","description":"The name of the Service Perimeter to add this resource to.","description_kind":"plain","required":true},"resource":{"type":"string","description":"A GCP resource that is inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_access_context_manager_service_perimeters":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"parent":{"type":"string","description":"The AccessPolicy this ServicePerimeter lives in.\nFormat: accessPolicies/{policy_id}","description_kind":"plain","required":true}},"block_types":{"service_perimeters":{"nesting_mode":"set","block":{"attributes":{"create_time":{"type":"string","description":"Time the AccessPolicy was created in UTC.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the ServicePerimeter and its use. Does not affect\nbehavior.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Resource name for the ServicePerimeter. The short_name component must\nbegin with a letter and only include alphanumeric and '_'.\nFormat: accessPolicies/{policy_id}/servicePerimeters/{short_name}","description_kind":"plain","required":true},"perimeter_type":{"type":"string","description":"Specifies the type of the Perimeter. There are two types: regular and\nbridge. Regular Service Perimeter contains resources, access levels,\nand restricted services. Every resource can be in at most\nONE regular Service Perimeter.\n\nIn addition to being in a regular service perimeter, a resource can also\nbe in zero or more perimeter bridges. A perimeter bridge only contains\nresources. Cross project operations are permitted if all effected\nresources share some perimeter (whether bridge or regular). Perimeter\nBridge does not contain access levels or services: those are governed\nentirely by the regular perimeter that resource is in.\n\nPerimeter Bridges are typically useful when building more complex\ntopologies with many independent perimeters that need to share some data\nwith a common perimeter, but should not be able to share data among\nthemselves. Default value: \"PERIMETER_TYPE_REGULAR\" Possible values: [\"PERIMETER_TYPE_REGULAR\", \"PERIMETER_TYPE_BRIDGE\"]","description_kind":"plain","optional":true},"title":{"type":"string","description":"Human readable title. Must be unique within the Policy.","description_kind":"plain","required":true},"update_time":{"type":"string","description":"Time the AccessPolicy was updated in UTC.","description_kind":"plain","computed":true},"use_explicit_dry_run_spec":{"type":"bool","description":"Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly exists\nfor all Service Perimeters, and that spec is identical to the status for those\nService Perimeters. When this flag is set, it inhibits the generation of the\nimplicit spec, thereby allowing the user to explicitly provide a\nconfiguration (\"spec\") to use in a dry-run version of the Service Perimeter.\nThis allows the user to test changes to the enforced config (\"status\") without\nactually enforcing them. This testing is done through analyzing the differences\nbetween currently enforced and suggested restrictions. useExplicitDryRunSpec must\nbet set to True if any of the fields in the spec are set to non-default values.","description_kind":"plain","optional":true}},"block_types":{"spec":{"nesting_mode":"list","block":{"attributes":{"access_levels":{"type":["list","string"],"description":"A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\n\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}","description_kind":"plain","optional":true},"resources":{"type":["list","string"],"description":"A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}","description_kind":"plain","optional":true},"restricted_services":{"type":["list","string"],"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","description_kind":"plain","optional":true}},"block_types":{"egress_policies":{"nesting_mode":"list","block":{"block_types":{"egress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this 'EgressPolicy'. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"description":"/ Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1},"egress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', that match this to stanza. A request matches if it contains a resource in this list. If * is specified for resources, then this 'EgressTo' rule will authorize access to all resources outside the perimeter.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for 'method' should be a valid method name for the corresponding 'serviceName' in 'ApiOperation'. If '*' used as value for method, then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by 'serviceName' field. A single MethodSelector entry with '*' specified for the 'method' field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' that this egress rule applies to. A request matches if it contains an operation/service in this list.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and destination resources that cause this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"ingress_policies":{"nesting_mode":"list","block":{"block_types":{"ingress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this ingress policy. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"block_types":{"sources":{"nesting_mode":"list","block":{"attributes":{"access_level":{"type":"string","description":"/ An 'AccessLevel' resource name that allow resources within the 'ServicePerimeters' to be accessed from the internet. 'AccessLevels' listed must be in the same policy as this 'ServicePerimeter'. Referencing a nonexistent 'AccessLevel' will cause an error. If no 'AccessLevel' names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example 'accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.' If * is specified, then all IngressSources will be allowed.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"/ A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects are allowed. Format 'projects/{project_number}' The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. '*' is not allowed, the case of allowing all Google Cloud resources only is not supported.","description_kind":"plain","optional":true}},"description":"/ Sources that this 'IngressPolicy' authorizes access from.","description_kind":"plain"}}},"description":"/ Defines the conditions on the source of a request causing
[2021-03-30T16:04:49.139] [DEBUG] default -  this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1},"ingress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', protected by this 'ServicePerimeter' that are allowed to be accessed by sources defined in the corresponding 'IngressFrom'. A request matches if it contains a resource in this list. If '*' is specified for resources, then this 'IngressTo' rule will authorize access to all resources inside the perimeter, provided that the request also matches the 'operations' field.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for method should be a valid method name for the corresponding serviceName in 'ApiOperation'. If '*' used as value for 'method', then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by serviceName field. A single 'MethodSelector' entry with '*' specified for the method field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' are allowed to perform in this 'ServicePerimeter'.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and request destination that cause this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of 'IngressPolicies' to apply to the perimeter. A perimeter may have multiple 'IngressPolicies', each of which is evaluated separately. Access is granted if any 'Ingress Policy' grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"vpc_accessible_services":{"nesting_mode":"list","block":{"attributes":{"allowed_services":{"type":["list","string"],"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","description_kind":"plain","optional":true},"enable_restriction":{"type":"bool","description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","description_kind":"plain","optional":true}},"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","description_kind":"plain"},"max_items":1}},"description":"Proposed (or dry run) ServicePerimeter configuration.\nThis configuration allows to specify and test ServicePerimeter configuration\nwithout enforcing actual access restrictions. Only allowed to be set when\nthe 'useExplicitDryRunSpec' flag is set.","description_kind":"plain"},"max_items":1},"status":{"nesting_mode":"list","block":{"attributes":{"access_levels":{"type":["list","string"],"description":"A list of AccessLevel resource names that allow resources within\nthe ServicePerimeter to be accessed from the internet.\nAccessLevels listed must be in the same policy as this\nServicePerimeter. Referencing a nonexistent AccessLevel is a\nsyntax error. If no AccessLevel names are listed, resources within\nthe perimeter can only be accessed via GCP calls with request\norigins within the perimeter. For Service Perimeter Bridge, must\nbe empty.\n\nFormat: accessPolicies/{policy_id}/accessLevels/{access_level_name}","description_kind":"plain","optional":true},"resources":{"type":["list","string"],"description":"A list of GCP resources that are inside of the service perimeter.\nCurrently only projects are allowed.\nFormat: projects/{project_number}","description_kind":"plain","optional":true},"restricted_services":{"type":["set","string"],"description":"GCP services that are subject to the Service Perimeter\nrestrictions. Must contain a list of services. For example, if\n'storage.googleapis.com' is specified, access to the storage\nbuckets inside the perimeter must meet the perimeter's access\nrestrictions.","description_kind":"plain","optional":true}},"block_types":{"egress_policies":{"nesting_mode":"list","block":{"block_types":{"egress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this 'EgressPolicy'. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access to outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"description":"/ Defines conditions on the source of a request causing this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1},"egress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', that match this to stanza. A request matches if it contains a resource in this list. If * is specified for resources, then this 'EgressTo' rule will authorize access to all resources outside the perimeter.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with serviceName field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for 'method' should be a valid method name for the corresponding 'serviceName' in 'ApiOperation'. If '*' used as value for method, then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by 'serviceName' field. A single MethodSelector entry with '*' specified for the 'method' field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' that this egress rule applies to. A request matches if it contains an operation/service in this list.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and destination resources that cause this 'EgressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of EgressPolicies to apply to the perimeter. A perimeter may have multiple EgressPolicies, each of which is evaluated separately. Access is granted if any EgressPolicy grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"ingress_policies":{"nesting_mode":"list","block":{"block_types":{"ingress_from":{"nesting_mode":"list","block":{"attributes":{"identities":{"type":["list","string"],"description":"/ A list of identities that are allowed access through this ingress policy. Should be in the format of email address. The email address should represent individual user or service account only.","description_kind":"plain","optional":true},"identity_type":{"type":"string","description":"/ Specifies the type of identities that are allowed access from outside the perimeter. If left unspecified, then members of 'identities' field will be allowed access. Possible values: [\"IDENTITY_TYPE_UNSPECIFIED\", \"ANY_IDENTITY\", \"ANY_USER_ACCOUNT\", \"ANY_SERVICE_ACCOUNT\"]","description_kind":"plain","optional":true}},"block_types":{"sources":{"nesting_mode":"list","block":{"attributes":{"access_level":{"type":"string","description":"/ An 'AccessLevel' resource name that allow resources within the 'ServicePerimeters' to be accessed from the internet. 'AccessLevels' listed must be in the same policy as this 'ServicePerimeter'. Referencing a nonexistent 'AccessLevel' will cause an error. If no 'AccessLevel' names are listed, resources within the perimeter can only be accessed via Google Cloud calls with request origins within the perimeter. Example 'accessPolicies/MY_POLICY/accessLevels/MY_LEVEL.' If * is specified, then all IngressSources will be allowed.","description_kind":"plain","optional":true},"resource":{"type":"string","description":"/ A Google Cloud resource that is allowed to ingress the perimeter. Requests from these resources will be allowed to access perimeter data. Currently only projects are allowed. Format 'projects/{project_number}' The project may be in any Google Cloud organization, not just the organization that the perimeter is defined in. '*' is not allowed, the case of allowing all Google Cloud resources only is not supported.","description_kind":"plain","optional":true}},"description":"/ Sources that this 'IngressPolicy' authorizes access from.","description_kind":"plain"}}},"description":"/ Defines the conditions on the source of a request causing this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1},"ingress_to":{"nesting_mode":"list","block":{"attributes":{"resources":{"type":["list","string"],"description":"/ A list of resources, currently only projects in the form 'projects/\u003cprojectnumber\u003e', protected by this 'ServicePerimeter' that are allowed to be accessed by sources defined in the corresponding 'IngressFrom'. A request matches if it contains a resource in this list. If '*' is specified for resources, then this 'IngressTo' rule will authorize access to all resources inside the perimeter, provided that the request also matches the 'operations' field.","description_kind":"plain","optional":true}},"block_types":{"operations":{"nesting_mode":"list","block":{"attributes":{"service_name":{"type":"string","description":"/ The name of the API whose methods or permissions the 'IngressPolicy' or 'EgressPolicy' want to allow. A single 'ApiOperation' with 'serviceName' field set to '*' will allow all methods AND permissions for all services.","description_kind":"plain","optional":true}},"block_types":{"method_selectors":{"nesting_mode":"list","block":{"attributes":{"method":{"type":"string","description":"/ Value for method should be a valid method name for the corresponding serviceName in 'ApiOperation'. If '*' used as value for 'method', then ALL methods and permissions are allowed.","description_kind":"plain","optional":true},"permission":{"type":"string","description":"/ Value for permission should be a valid Cloud IAM permission for the corresponding 'serviceName' in 'ApiOperation'.","description_kind":"plain","optional":true}},"description":"/ API methods or permissions to allow. Method or permission must belong to the service specified by serviceName field. A single 'MethodSelector' entry with '*' specified for the method field will allow all methods AND permissions for the service specified in 'serviceName'.","description_kind":"plain"}}},"description":"/ A list of 'ApiOperations' the sources specified in corresponding 'IngressFrom' are allowed to perform in this 'ServicePerimeter'.","description_kind":"plain"}}},"description":"/ Defines the conditions on the 'ApiOperation' and request destination that cause this 'IngressPolicy' to apply.","description_kind":"plain"},"max_items":1}},"description":"/ List of 'IngressPolicies' to apply to the perimeter. A perimeter may have multiple 'IngressPolicies', each of which is evaluated separately. Access is granted if any 'Ingress Policy' grants it. Must be empty for a perimeter bridge.","description_kind":"plain"}},"vpc_accessible_services":{"nesting_mode":"list","block":{"attributes":{"allowed_services":{"type":["set","string"],"description":"The list of APIs usable within the Service Perimeter.\nMust be empty unless 'enableRestriction' is True.","description_kind":"plain","optional":true},"enable_restriction":{"type":"bool","description":"Whether to restrict API calls within the Service Perimeter to the\nlist of APIs specified in 'allowedServices'.","description_kind":"plain","optional":true}},"description":"Specifies how APIs are allowed to communicate within the Service\nPerimeter.","description_kind":"plain"},"max_items":1}},"description":"ServicePerimeter configuration. Specifies sets of resources,\nrestricted services and access levels that determine\nperimeter content and boundaries.","description_kind":"plain"},"max_items":1}},"description":"The desired Service Perimeters that should replace all existing Service Perimeters in the Access Policy.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_active_directory_domain":{"version":0,"block":{"attributes":{"admin":{"type":"string","description":"The name of delegated administrator account used to perform Active Directory operations. \nIf not specified, setupadmin will be used.","description_kind":"plain","optional":true},"authorized_networks":{"type":["set","string"],"description":"The full names of the Google Compute Engine networks the domain instance is connected to. The domain is only available on networks listed in authorizedNetworks.\nIf CIDR subnets overlap between networks, domain creation will fail.","description_kind":"plain","optional":true},"domain_name":{"type":"string","description":"The fully qualified domain name. e.g. mydomain.myorganization.com, with the restrictions, \nhttps://cloud.google.com/managed-microsoft-ad/reference/rest/v1/projects.locations.global.domains.","description_kind":"plain","required":true},"fqdn":{"type":"string","description":"The fully-qualified domain name of the exposed domain used by clients to connect to the service. \nSimilar to what would be chosen for an Active Directory set up on an internal network.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"Resource labels that can contain user-provided metadata","description_kind":"plain","optional":true},"locations":{"type":["list","string"],"description":"Locations where domain needs to be provisioned. [regions][compute/docs/regions-zones/] \ne.g. us-west1 or us-east4 Service supports up to 4 locations at once. Each location will use a /26 block.","description_kind":"plain","required":true},"name":{"type":"string","description":"The unique name of the domain using the format: 'projects/{project}/locations/global/domains/{domainName}'.","description_kind":"plain","computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"reserved_ip_range":{"type":"string","description":"The CIDR range of internal addresses that are reserved for this domain. Reserved networks must be /24 or larger. \nRanges must be unique and non-overlapping with existing subnets in authorizedNetworks","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_active_directory_domain_trust":{"version":0,"block":{"attributes":{"domain":{"type":"string","description":"The fully qualified domain name. e.g. mydomain.myorganization.com, with the restrictions, \nhttps://cloud.google.com/managed-microsoft-ad/reference/rest/v1/projects.locations.global.domains.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"selective_authentication":{"type":"bool","description":"Whether the trusted side has forest/domain wide access or selective access to an approved set of resources.","description_kind":"plain","optional":true},"target_dns_ip_addresses":{"type":["set","string"],"description":"The target DNS server IP addresses which can resolve the remote domain involved in the trust.","description_kind":"plain","required":true},"target_domain_name":{"type":"string","description":"The fully qualified target domain name which will be in trust with the current domain.","description_kind":"plain","required":true},"trust_direction":{"type":"string","description":"The trust direction, which decides if the current domain is trusted, trusting, or both. Possible values: [\"INBOUND\", \"OUTBOUND\", \"BIDIRECTIONAL\"]","description_kind":"plain","required":true},"trust_handshake_secret":{"type":"string","description":"The trust secret used for the handshake with the target domain. This will not be stored.","description_kind":"plain","required":true,"sensitive":true},"trust_type":{"type":"string","description":"The type of trust represented by the trust resource. Possible values: [\"FOREST\", \"EXTERNAL\"]","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_apigee_envgroup":{"version":0,"block":{"attributes":{"hostnames":{"type":["list","string"],"description":"Hostnames of the environment group.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The resource ID of the environment group.","description_kind":"plain","required":true},"org_id":{"type":"string","description":"The Apigee Organization associated with the Apigee environment group,\nin the format 'organizations/{{org_name}}'.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_apigee_environment":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the environment.","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"Display name of the environment.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The resource ID of the environment.","description_kind":"plain","required":true},"org_id":{"type":"string","description":"The Apigee Organization associated with the Apigee environment,\nin the format 'organizations/{{org_name}}'.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_apigee_instance":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"Description of the instance.","description_kind":"plain","optional":true},"disk_encryption_key_name":{"type":"string","description":"Customer Managed Encryption Key (CMEK) used for disk and volume encryption. Required for Apigee paid subscriptions only.\nUse the following format: 'projects/([^/]+)/locations/([^/]+)/keyRings/([^/]+)/cryptoKeys/([^/]+)'","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"Display name of the instance.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Output only. Hostname or IP address of the exposed Apigee endpoint used by clients to connect to the service.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"Compute Engine location where the instance resides. For trial organization\nsubscriptions, the location must be a Compute Engine zone. For paid organization\nsubscriptions, it should correspond to a Compute Engine region.","description_kind":"plain","required":true},"name":{"type":"string","description":"Resource ID of the instance.","description_kind":"plain","required":true},"org_id":{"type":"string","description":"The Apigee Organization associated with the Apigee instance,\nin the format 'organizations/{{org_name}}'.","description_kind":"plain","required":true},"peering_cidr_range":{"type":"string","description":"The size of the CIDR block range that will be reserved by the instance. Default value: \"SLASH_16\" Possible values: [\"SLASH_16\", \"SLASH_20\"]","description_kind":"plain","optional":true},"port":{"type":"string","description":"Output only. Port number of the exposed Apigee endpoint.","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_apigee_organization":{"version":0,"block":{"attributes":{"analytics_region":{"type":"string","description":"Primary GCP region for analytics data storage. For valid values, see [Create an Apigee organization](https://cloud.google.com/apigee/docs/api-platform/get-started/create-org).","description_kind":"plain","optional":true},"authorized_network":{"type":"string","description":"Compute Engine network used for Service Networking to be peered with Apigee runtime instances.\nSee [Getting started with the Service Networking API](https://cloud.google.com/service-infrastructure/docs/service-networking/getting-started).\nValid only when 'RuntimeType' is set to CLOUD. The value can be updated only when there are no runtime instances. For example: \"default\".","description_kind":"plain","optional":true},"ca_certificate":{"type":"string","description":"Output only. Base64-encoded public certificate for the root CA of the Apigee organization.\nValid only when 'RuntimeType' is CLOUD. A base64-encoded string.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Description of the Apigee organization.","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"The display name of the Apigee organization.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Output only. Name of the Apigee organization.","description_kind":"plain","computed":true},"project_id":{"type":"string","description":"The project ID associated with the Apigee organization.","description_kind":"plain","required":true},"runtime_database_encryption_key_name":{"type":"string","description":"Cloud KMS key name used for encrypting the data that is stored and replicated across runtime instances.\nUpdate is not allowed after the organization is created.\nIf not specified, a Google-Managed encryption key will be used.\nValid only when 'RuntimeType' is CLOUD. For example: 'projects/foo/locations/us/keyRings/bar/cryptoKeys/baz'.","description_kind":"plain","optional":true},"runtime_type":{"type":"string","description":"Runtime type of the Apigee organization based on the Apigee subscription purchased. Default value: \"CLOUD\" Possible values: [\"CLOUD\", \"HYBRID\"]","description_kind":"plain","optional":true},"subscription_type":{"type":"string","description":"Output only. Subscription type of the Apigee organization.\nValid values include trial (free, limited, and for evaluation purposes only) or paid (full subscription has been purchased).","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_app_engine_application":{"version":0,"block":{"attributes":{"app_id":{"type":"string","description":"Identifier of the app.","description_kind":"plain","computed":true},"auth_domain":{"type":"string","description":"The domain to authenticate users with when using App Engine's User API.","description_kind":"plain","optional":true,"computed":true},"code_bucket":{"type":"string","description":"The GCS bucket code is being stored in for this app.","description_kind":"plain","computed":true},"database_type":{"type":"string","description_kind":"plain","optional":true,"computed":true},"default_bucket":{"type":"string","description":"The GCS bucket content is being stored in for this app.","description_kind":"plain","computed":true},"default_hostname":{"type":"string","description":"The default hostname for this app.","description_kind":"plain","computed":true},"gcr_domain":{"type":"string","description":"The GCR domain used for storing managed Docker images for this app.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location_id":{"type":"string","description":"The location to serve the app from.","description_kind":"plain","required":true},"name":{"type":"string","description":"Unique name of the app.","description_kind":"plain","computed":true},"project":{"type":"string","description":"The project ID to create the application under.","description_kind":"plain","optional":true,"computed":true},"serving_status":{"type":"string","description":"The serving status of the app.","description_kind":"plain","optional":true,"computed":true},"url_dispatch_rule":{"type":["list",["object",{"domain":"string","path":"string","service":"string"}]],"description":"A list of dispatch rule blocks. Each block has a domain, path, and service field.","description_kind":"plain","computed":true}},"block_types":{"feature_settings":{"nesting_mode":"list","block":{"attributes":{"split_health_checks":{"type":"bool","description_kind":"plain","required":true}},"description":"A block of optional settings to configure specific App Engine features:","description_kind":"plain"},"max_items":1},"iap":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Adapted for use with the app","description_kind":"plain","optional":true},"oauth2_client_id":{"type":"string","description":"OAuth2 client ID to use for the authentication flow.","description_kind":"plain","required":true},"oauth2_client_secret":{"type":"string","description":"OAuth2 client secret to use for the authentication flow. The SHA-256 hash of the value is returned in the oauth2ClientSecretSha256 field.","description_kind":"plain","required":true,"sensitive":true},"oauth2_client_secret_sha256":{"type":"string","description":"Hex-encoded SHA-256 hash of the client secret.","description_kind":"plain","computed":true,"sensitive":true}},"description":"Settings for enabling Cloud Identity Aware Proxy","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_app_engine_application_url_dispatch_rules":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"dispatch_rules":{"nesting_mode":"list","block":{"attributes":{"domain":{"type":"string","description":"Domain name to match against. The wildcard \"*\" is supported if specified before a period: \"*.\".\nDefaults to matching all domains: \"*\".","description_kind":"plain","optional":true},"path":{"type":"string","description":"Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.\nThe sum of the lengths of the domain and path may not exceed 100 characters.","description_kind":"plain","required":true},"service":{"type":"string","description":"Pathname within the host. Must start with a \"/\". A single \"*\" can be included at the end of the path.\nThe sum of the lengths of the domain and path may not exceed 100 characters.","description_kind":"plain","required":true}},"description":"Rules to match an HTTP request and dispatch that request to a service.","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_app_engine_domain_mapping":{"version":0,"block":{"attributes":{"domain_name":{"type":"string","description":"Relative name of the domain serving the application. Example: example.com.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Full path to the DomainMapping resource in the API. Example: apps/myapp/domainMapping/example.com.","description_kind":"plain","computed":true},"override_strategy":{"type":"string","description":"Whether the domain creation should override any existing mappings for this domain.\nBy default, overrides are rejected. Default value: \"STRICT\" Possible values: [\"STRICT\", \"OVERRIDE\"]","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"resource_records":{"type":["list",["object",{"name":"string","rrdata":"string","type":"string"}]],"description":"The resource records required to configure this domain mapping. These records must be added to the domain's DNS\nconfiguration in order to serve the application via this domain mapping.","description_kind":"plain","computed":true}},"block_types":{"ssl_settings":{"nesting_mode":"list","block":{"attributes":{"certificate_id":{"type":"string","description":"ID of the AuthorizedCertificate resource configuring SSL for the application. Clearing this field will\nremove SSL support.\nBy default, a managed certificate is automatically created for every domain mapping. To omit SSL support\nor to configure SSL manually, specify 'SslManagementType.MANUAL' on a 'CREATE' or 'UPDATE' request. You must be\nauthorized to administer the 'AuthorizedCertificate' resource to manually map it to a DomainMapping resource.\nExample: 12345.","description_kind":"plain","optional":true,"computed":true},"pending_managed_certificate_id":{"type":"string","description":"ID of the managed 'AuthorizedCertificate' resource currently being provisioned, if applicable. Until the new\nmanaged certificate has been successfully provisioned, the previous SSL state will be preserved. Once the\nprovisioning process completes, the 'certificateId' field will reflect the new managed certificate and this\nfield will be left empty. To remove SSL support while there is still a pending managed certificate, clear the\n'certificateId' field with an update request.","description_kind":"plain","computed":true},"ssl_management_type":{"type":"string","description":"SSL management type for this domain. If 'AUTOMATIC', a managed certificate is automatically provisioned.\nIf 'MANUAL', 'certificateId' must be manually specified in order to configure SSL for this domain. Possible values: [\"AUTOMATIC\", \"MANUAL\"]","description_kind":"plain","required":true}},"description":"SSL configuration for this domain. If unconfigured, this domain will not serve with SSL.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_app_engine_firewall_rule":{"version":0,"block":{"attributes":{"action":{"type":"string","description":"The action to take if this rule matches. Possible values: [\"UNSPECIFIED_ACTION\", \"ALLOW\", \"DENY\"]","description_kind":"plain","required":true},"description":{"type":"string","description":"An optional string description of this rule.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"priority":{"type":"number","description":"A positive integer that defines the order of rule evaluation.\nRules with the lowest priority are evaluated first.\n\nA default rule at priority Int32.MaxValue matches all IPv4 and\nIPv6 traffic when no previous rule matches. Only the action of\nthis rule can be modified by the user.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"source_range":{"type":"string","description":"IP address or range, defined using CIDR notation, of requests that this rule applies to.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_app_engine_flexible_app_version":{"version":0,"block":{"attributes":{"beta_settings":{"type":["map","string"],"description":"Metadata settings that are supplied to this version to enable beta runtime features.","description_kind":"plain","optional":true},"default_expiration":{"type":"string","description":"Duration that static files should be cached by web proxies and browsers.\nOnly applicable if the corresponding StaticFilesHandler does not specify its own expiration time.","description_kind":"plain","optional":true},"delete_service_on_destroy":{"type":"bool","description_kind":"plain","optional":true},"env_variables":{"type":["map","string"],"description":"Environment variables available to the application. As these are not returned in the API request, Terraform will not detect any changes made outside of the Terraform config.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"inbound_services":{"type":["set","string"],"description":"A list of the types of messages that this application is able to receive. Possible values: [\"INBOUND_SERVICE_MAIL\", \"INBOUND_SERVICE_MAIL_BOUNCE\", \"INBOUND_SERVICE_XMPP_ERROR\", \"INBOUND_SERVICE_XMPP_MESSAGE\", \"INBOUND_SERVICE_XMPP_SUBSCRIBE\", \"INBOUND_SERVICE_XMPP_PRESENCE\", \"INBOUND_SERVICE_CHANNEL_PRESENCE\", \"INBOUND_SERVICE_WARMUP\"]","description_kind":"plain","optional":true},"instance_class":{"type":"string","description":"Instance class that is used to run this version. Valid values are\nAutomaticScaling: F1, F2, F4, F4_1G\nManualScaling: B1, B2, B4, B8, B4_1G\nDefaults to F1 for AutomaticScaling and B1 for ManualScaling.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Full path to the Version resource in the API. Example, \"v1\".","description_kind":"plain","computed":true},"nobuild_files_regex":{"type":"string","description":"Files that match this pattern will not be built into this version. Only applicable for Go runtimes.","description_kind":"plain","optional":true},"noop_on_destroy":{"type":"bool","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"runtime":{"type":"string","description":"Desired runtime. Example python27.","description_kind":"plain","required":true},"runtime_api_version":{"type":"string","description":"The version of the API in the given runtime environment.\nPlease see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref","description_kind":"plain","optional":true,"computed":true},"runtime_channel":{"type":"string","description":"The channel of the runtime to use. Only available for some runtimes.","description_kind":"plain","optional":true},"runtime_main_executable_path":{"type":"string","description":"The path or name of the app's main executable.","description_kind":"plain","optional":true},"service":{"type":"string","description":"AppEngine service resource","description_kind":"plain","required":true},"serving_status":{"type":"string","description":"Current serving status of this version. Only the versions with a SERVING status create instances and can be billed. Default value: \"SERVING\" Possible values: [\"SERVING\", \"STOPPED\"]","description_kind":"plain","optional":true},"version_id":{"type":"string","description":"Relative name of the version within the service. For example, 'v1'. Version names can contain only lowercase letters, numbers, or hyphens.\nReserved names,\"default\", \"latest\", and any name with the prefix \"ah-\".","description_kind":"plain","optional":true}},"block_types":{"api_config":{"nesting_mode":"list","block":{"attributes":{"auth_fail_action":{"type":"string","description":"Action to take when users access resources that require authentication. Default value: \"AUTH_FAIL_ACTION_REDIRECT\" Possible values: [\"AUTH_FAIL_ACTION_REDIRECT\", \"AUTH_FAIL_ACTION_UNAUTHORIZED\"]","description_kind":"plain","optional":true},"login":{"type":"string","description":"Level of login required to access this resource. Default value: \"LOGIN_OPTIONAL\" Possible values: [\"LOGIN_OPTIONAL\", \"LOGIN_ADMIN\", \"LOGIN_REQUIRED\"]","description_kind":"plain","optional":true},"script":{"type":"string","description":"Path to the script from the application root directory.","description_kind":"plain","required":true},"security_level":{"type":"string","description":"Security (HTTPS) enforcement for this URL. Possible values: [\"SECURE_DEFAULT\", \"SECURE_NEVER\", \"SECURE_OPTIONAL\", \"SECURE_ALWAYS\"]","description_kind":"plain","optional":true},"url":{"type":"string","description":"URL to serve the endpoint at.","description_kind":"plain","optional":true}},"description":"Serving configuration for Google Cloud Endpoints.","description_kind":"plain"},"max_items":1},"automatic_scaling":{"nesting_mode":"list","block":{"attributes":{"cool_down_period":{"type":"string","description":"The time period that the Autoscaler should wait before it starts collecting information from a new instance.\nThis prevents the autoscaler from collecting information when the instance is initializing,\nduring which the collected usage would not be reliable. Default: 120s","description_kind":"plain","optional":true},"max_concurrent_requests":{"type":"number","description":"Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.\n\nDefaults to a runtime-specific value.","description_kind":"plain","optional":true,"computed":true},"max_idle_instances":{"type":"number","description":"Maximum number of idle instances that should be maintained for this version.","description_kind":"plain","optional":true},"max_pending_latency":{"type":"string","description":"Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.","description_kind":"plain","optional":true},"max_total_instances":{"type":"number","description":"Maximum number of instances that should be started to handle requests for this version. Default: 20","description_kind":"plain","optional":true},"min_idle_instances":{"type":"number","description":"Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.","description_kind":"plain","optional":true},"min_pending_latency":{"type":"string","description":"Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.","description_kind":"plain","optional":true},"min_total_instances":{"type":"number","description":"Minimum number of running instances that should be maintained for this version. Default: 2","description_kind":"plain","optional":true}},"block_types":{"cpu_utilization":{"nesting_mode":"list","block":{"attributes":{"aggregation_window_length":{"type":"string","description":"Period of time over which CPU utilization is calculated.","description_kind":"plain","optional":true},"target_utilization":{"type":"number","description":"Target CPU utilization ratio to maintain when scaling. Must be between 0 and 1.","description_kind":"plain","required":true}},"description":"Target scaling by CPU usage.","description_kind":"plain"},"min_items":1,"max_items":1},"disk_utilization":{"nesting_mode":"list","block":{"attributes":{"target_read_bytes_per_second":{"type":"number","description":"Target bytes read per second.","description_kind":"plain","optional":true},"target_read_ops_per_second":{"type":"number","description":"Target ops read per seconds.","description_kind":"plain","optional":true},"target_write_bytes_per_second":{"type":"number","description":"Target bytes written per second.","description_kind":"plain","optional":true},"target_write_ops_per_second":{"type":"number","description":"Target ops written per second.","description_kind":"plain","optional":true}},"description":"Target scaling by disk usage.","description_kind":"plain"},"max_items":1},"network_utilization":{"nesting_mode":"list","block":{"attributes":{"target_received_bytes_per_second":{"type":"number","description":"Target bytes received per second.","description_kind":"plain","optional":true},"target_received_packets_per_second":{"type":"number","description":"Target packets received per second.","description_kind":"plain","optional":true},"target_sent_bytes_per_second":{"type":"number","description":"Target bytes sent per second.","description_kind":"plain","optional":true},"target_sent_packets_per_second":{"type":"number","description":"Target packets sent per second.","description_kind":"plain","optional":true}},"description":"Target scaling by network usage.","description_kind":"plain"},"max_items":1},"request_utilization":{"nesting_mode":"list","block":{"attributes":{"target_concurrent_requests":{"type":"number","description":"Target number of concurrent requests.","description_kind":"plain","optional":true},"target_request_count_per_second":{"type":"string","description":"Target requests per second.","description_kind":"plain","optional":true}},"description":"Target scaling by request utilization.","description_kind":"plain"},"max_items":1}},"description":"Automatic scaling is based on request rate, response latencies, and other application metrics.","description_kind":"plain"},"max_items":1},"deployment":{"nesting_mode":"list","block":{"block_types":{"cloud_build_options":{"nesting_mode":"list","block":{"attributes":{"app_yaml_path":{"type":"string","description":"Path to the yaml file used in deployment, used to determine runtime configuration details.","description_kind":"plain","required":true},"cloud_build_timeout":{"type":"string","description":"The Cloud Build timeout used as part of any dependent builds performed by version creation. Defaults to 10 minutes.\n\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","description_kind":"plain","optional":true}},"description":"Options for the build operations performed as a part of the version deployment. Only applicable when creating a version using source code directly.","description_kind":"plain"},"max_items":1},"container":{"nesting_mode":"list","block":{"attributes":{"image":{"type":"string","description":"URI to the hosted container image in Google Container Registry. The URI must be fully qualified and include a tag or digest.\nExamples: \"gcr.io/my-project/image:tag\" or \"gcr.io/my-project/image@digest\"","description_kind":"plain","required":true}},"description":"The Docker image for the container that runs the version.","description_kind":"plain"},"max_items":1},"files":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"sha1_sum":{"type":"string","description":"SHA1 checksum of the file","description_kind":"plain","optional":true},"source_url":{"type":"string","description":"Source URL","description_kind":"plain","required":true}},"description":"Manifest of the files stored in Google Cloud Storage that are included as part of this version.\nAll files must be readable using the credentials supplied with this call.","description_kind":"plain"}},"zip":{"nesting_mode":"list","block":{"attributes":{"files_count":{"type":"number","description":"files count","description_kind":"plain","optional":true},"source_url":{"type":"string","description":"Source URL","description_kind":"plain","required":true}},"description":"Zip File","description_kind":"plain"},"max_items":1}},"description":"Code and application artifacts that make up this version.","description_kind":"plain"},"max_items":1},"endpoints_api_service":{"nesting_mode":"list","block":{"attributes":{"config_id":{"type":"string","description":"Endpoints service configuration ID as specified by the Service Management API. For example \"2016-09-19r1\".\n\nBy default, the rollout strategy for Endpoints is \"FIXED\". This means that Endpoints starts up with a particular configuration ID.\nWhen a new configuration is rolled out, Endpoints must be given the new configuration ID. The configId field is used to give the configuration ID\nand is required in this case.\n\nEndpoints also has a rollout strategy called \"MANAGED\". When using this, Endpoints fetches the latest configuration and does not need\nthe configuration ID. In this case, configId must be omitted.","description_kind":"plain","optional":true},"disable_trace_sampling":{"type":"bool","description":"Enable or disable trace sampling. By default, this is set to false for enabled.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Endpoints service name which is the name of the \"service\" resource in the Service Management API.\nFor example \"myapi.endpoints.myproject.cloud.goog\"","description_kind":"plain","required":true},"rollout_strategy":{"type":"string","description":"Endpoints rollout strategy. If FIXED, configId must be specified. If MANAGED, configId must be omitted. Default value: \"FIXED\" Possible values: [\"FIXED\", \"MANAGED\"]","description_kind":"plain","optional":true}},"description":"Code and application artifacts that make up this version.","description_kind":"plain"},"max_items":1},"entrypoint":{"nesting_mode":"list","block":{"attributes":{"shell":{"type":"string","description":"The format should be a shell command that can be fed to bash -c.","description_kind":"plain","required":true}},"description":"The entrypoint for the application.","description_kind":"plain"},"max_items":1},"handlers":{"nesting_mode":"list","block":{"attributes":{"auth_fail_action":{"type":"string","description":"Actions to take when the user is not logged in. Possible values: [\"AUTH_FAIL_ACTION_REDIRECT\", \"AUTH_FAIL_ACTION_UNAUTHORIZED\"]","description_kind":"plain","optional":true},"login":{"type":"string","description":"Methods to restrict access to a URL based on login status. Possible values: [\"LOGIN_OPTIONAL\", \"LOGIN_ADMIN\", \"LOGIN_REQUIRED\"]","description_kind":"plain","optional":true},"redirect_http_response_code":{"type":"string","description":"30x code to use when performing redirects for the secure field. Possible values: [\"REDIRECT_HTTP_RESPONSE_CODE_301\", \"REDIRECT_HTTP_RESPONSE_CODE_302\", \"REDIRECT_HTTP_RESPONSE_CODE_303\", \"REDIRECT_HTTP_RESPONSE_CODE_307\"]","description_kind":"plain","optional":true},"security_level":{"type":"string","description":"Security (HTTPS) enforcement for this URL. Possible values: [\"SECURE_DEFAULT\", \"SECURE_NEVER\", \"SECURE_OPTIONAL\", \"SECURE_ALWAYS\"]","description_kind":"plain","optional":true},"url_regex":{"type":"string","description":"URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings.\nAll URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.","description_kind":"plain","optional":true}},"block_types":{"script":{"nesting_mode":"list","block":{"attributes":{"script_path":{"type":"string","description":"Path to the script from the application root directory.","description_kind":"plain","required":true}},"description":"Executes a script to handle the requests that match this URL pattern.\nOnly the auto value is supported for Node.js in the App Engine standard environment, for example \"script:\" \"auto\".","description_kind":"plain"},"max_items":1},"static_files":{"nesting_mode":"list","block":{"attributes":{"application_readable":{"type":"bool","description":"Whether files should also be uploaded as code data. By default, files declared in static file handlers are\nuploaded as static data and are only served to end users; they cannot be read by the application. If enabled,\nuploads are charged against both your code and static data storage resource quotas.","description_kind":"plain","optional":true},"expiration":{"type":"string","description":"Time a static file served by this handler should be cached by web proxies and browsers.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example \"3.5s\".\nDefault is '0s'","description_kind":"plain","optional":true},"http_headers":{"type":["map","string"],"description":"HTTP headers to use for all responses from these URLs.\nAn object containing a list of \"key:value\" value pairs.\".","description_kind":"plain","optional":true},"mime_type":{"type":"string","description":"MIME type used to serve all files served by this handler.\nDefaults to file-specific MIME types, which are derived from each file's filename extension.","description_kind":"plain","optional":true},"path":{"type":"string","description":"Path to the static files matched by the URL pattern, from the application root directory.\nThe path can refer to text matched in groupings in the URL pattern.","description_kind":"plain","optional":true},"require_matching_file":{"type":"bool","description":"Whether this handler should match the request if the file referenced by the handler does not exist.","description_kind":"plain","optional":true},"upload_path_regex":{"type":"string","description":"Regular expression that matches the file paths for all files that should be referenced by this handler.","description_kind":"plain","optional":true}},"description":"Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files.\nStatic file handlers describe which files in the application directory are static files, and which URLs serve them.","description_kind":"plain"},"max_items":1}},"description":"An ordered list of URL-matching patterns that should be applied to incoming requests.\nThe first matching URL handles the request and other request handlers are not attempted.","description_kind":"plain"}},"liveness_check":{"nesting_mode":"list","block":{"attributes":{"check_interval":{"type":"string","description":"Interval between health checks.","description_kind":"plain","optional":true},"failure_threshold":{"type":"number","description":"Number of consecutive failed checks required before considering the VM unhealthy. Default: 4.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"","description_kind":"plain","optional":true},"initial_delay":{"type":"string","description":"The initial delay before starting to execute the checks. Default: \"300s\"","description_kind":"plain","optional":true},"path":{"type":"string","description":"The request path.","description_kind":"plain","required":true},"success_threshold":{"type":"number","description":"Number of consecutive successful checks required before considering the VM healthy. Default: 2.","description_kind":"plain","optional":true},"timeout":{"type":"string","description":"Time before the check is considered failed. Default: \"4s\"","description_kind":"plain","optional":true}},"description":"Health checking configuration for VM instances. Unhealthy instances are killed and replaced with new instances.","description_kind":"plain"},"min_items":1,"max_items":1},"manual_scaling":{"nesting_mode":"list","block":{"attributes":{"instances":{"type":"number","description":"Number of instances to assign to the service at the start.\n\n**Note:** When managing the number of instances at runtime through the App Engine Admin API or the (now deprecated) Python 2\nModules API set_num_instances() you must use 'lifecycle.ignore_changes = [\"manual_scaling\"[0].instances]' to prevent drift detection.","description_kind":"plain","required":true}},"description":"A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.","description_kind":"plain"},"max_items":1},"network":{"nesting_mode":"list","block":{"attributes":{"forwarded_ports":{"type":["list","string"],"description":"List of ports, or port pairs, to forward from the virtual machine to the application container.","description_kind":"plain","optional":true},"instance_tag":{"type":"string","description":"Tag to apply to the instance during creation.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Google Compute Engine network where the virtual machines are created. Specify the short name, not the resource path.","description_kind":"plain","required":true},"session_affinity":{"type":"bool","description":"Enable session affinity.","description_kind":"plain","optional":true},"subnetwork":{"type":"string","description":"Google Cloud Platform sub-network where the virtual machines are created. Specify the short name, not the resource path.\n\nIf the network that the instance is being created in is a Legacy network, then the IP address is allocated from the IPv4Range.\nIf the network that the instance is being created in is an auto Subnet Mode Network, then only network name should be specified (not the subnetworkName) and the IP address is created from the IPCidrRange of the subnetwork that exists in that zone for that network.\nIf the network that the instance is being created in is a custom Subnet Mode Network, then the subnetworkName must be specified and the IP address is created from the IPCidrRange of the subnetwork.\nIf specified, the subnetwork must exist in the same region as the App Engine flexible environment application.","description_kind":"plain","optional":true}},"description":"Extra network settings","description_kind":"plain"},"max_items":1},"readiness_check":{"nesting_mode":"list","block":{"attributes":{"app_start_timeout":{"type":"string","description":"A maximum time limit on application initialization, measured from moment the application successfully\nreplies to a healthcheck until it is ready to serve traffic. Default: \"300s\"","description_kind":"plain","optional":true},"check_interval":{"type":"string","description":"Interval between health checks. Default: \"5s\".","description_kind":"plain","optional":true},"failure_threshold":{"type":"number","description":"Number of consecutive failed checks required before removing traffic. Default: 2.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host header to send when performing a HTTP Readiness check. Example: \"myapp.appspot.com\"","description_kind":"plain","optional":true},"path":{"type":"string","description":"The request path.","description_kind":"plain","required":true},"success_threshold":{"type":"number","description":"Number of consecutive successful checks required before receiving traffic. Default: 2.","description_kind":"plain","optional":true},"timeout":{"type":"string","description":"Time before the check is considered failed. Default: \"4s\"","description_kind":"plain","optional":true}},"description":"Configures readiness health checking for instances. Unhealthy instances are not put into the backend traffic rotation.","description_kind":"plain"},"min_items":1,"max_items":1},"resources":{"nesting_mode":"list","block":{"attributes":{"cpu":{"type":"number","description":"Number of CPU cores needed.","description_kind":"plain","optional":true},"disk_gb":{"type":"number","description":"Disk size (GB) needed.","description_kind":"plain","optional":true},"memory_gb":{"type":"number","description":"Memory (GB) needed.","description_kind":"plain","optional":true}},"block_types":{"volumes":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Unique name for the volume.","description_kind":"plain","required":true},"size_gb":{"type":"number","description":"Volume size in gigabytes.","description_kind":"plain","required":true},"volume_type":{"type":"string","description":"Underlying volume type, e.g. 'tmpfs'.","description_kind":"plain","required":true}},"description":"List of ports, or port pairs, to forward from the virtual machine to the application container.","description_kind":"plain"}}},"description":"Machine resources for a version.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"vpc_access_connector":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.","description_kind":"plain","required":true}},"description":"Enables VPC connectivity for standard apps.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_app_engine_service_split_traffic":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"migrate_traffic":{"type":"bool","description":"If set to true traffic will be migrated to this version.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service":{"type":"string","description":"The name of the service these settings apply to.","description_kind":"plain","required":true}},"block_types":{"split":{"nesting_mode":"list","block":{"attributes":{"allocations":{"type":["map","string"],"description":"Mapping from version IDs within the service to fractional (0.000, 1] allocations of traffic for that version. Each version can be specified only once, but some versions in the service may not have any traffic allocation. Services that have traffic allocated cannot be deleted until either the service is deleted or their traffic allocation is removed. Allocations must sum to 1. Up to two decimal place precision is supported for IP-based splits and up to three decimal places is supported for cookie-based splits.","description_kind":"plain","required":true},"shard_by":{"type":"string","description":"Mechanism used to determine which version a request is sent to. The traffic selection algorithm will be stable for either type until allocations are changed. Possible values: [\"UNSPECIFIED\", \"COOKIE\", \"IP\", \"RANDOM\"]","description_kind":"plain","optional":true}},"description":"Mapping that defines fractional HTTP traffic diversion to different versions within the service.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_app_engine_standard_app_version":{"version":0,"block":{"attributes":{"delete_service_on_destroy":{"type":"bool","description_kind":"plain","optional":true},"env_variables":{"type":["map","string"],"description":"Environment variables available to the application.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"inbound_services":{"type":["set","string"],"description":"A list of the types of messages that this application is able to receive. Possible values: [\"INBOUND_SERVICE_MAIL\", \"INBOUND_SERVICE_MAIL_BOUNCE\", \"INBOUND_SERVICE_XMPP_ERROR\", \"INBOUND_SERVICE_XMPP_MESSAGE\", \"INBOUND_SERVICE_XMPP_SUBSCRIBE\", \"INBOUND_SERVICE_XMPP_PRESENCE\", \"INBOUND_SERVICE_CHANNEL_PRESENCE\", \"INBOUND_SERVICE_WARMUP\"]","description_kind":"plain","optional":true},"instance_class":{"type":"string","description":"Instance class that is used to run this version. Valid values are\nAutomaticScaling: F1, F2, F4, F4_1G\nBasicScaling or ManualScaling: B1, B2, B4, B4_1G, B8\nDefaults to F1 for AutomaticScaling and B2 for ManualScaling and BasicScaling. If no scaling is specified, AutomaticScaling is chosen.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Full path to the Version resource in the API. Example, \"v1\".","description_kind":"plain","computed":true},"noop_on_destroy":{"type":"bool","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"runtime":{"type":"string","description":"Desired runtime. Example python27.","description_kind":"plain","required":true},"runtime_api_version":{"type":"string","description":"The version of the API in the given runtime environment.\nPlease see the app.yaml reference for valid values at https://cloud.google.com/appengine/docs/standard//config/appref","description_kind":"plain","optional":true},"service":{"type":"string","description":"AppEngine service resource","description_kind":"plain","required":true},"threadsafe":{"type":"bool","description":"Whether multiple requests can be dispatched to this version at once.","description_kind":"plain","optional":true},"version_id":{"type":"string","description":"Relative name of the version within the service. For example, 'v1'. Version names can contain only lowercase letters, numbers, or hyphens. Reserved names,\"default\", \"latest\", and any name with the prefix \"ah-\".","description_kind":"plain","optional":true}},"block_types":{"automatic_scaling":{"nesting_mode":"list","block":{"attributes":{"max_concurrent_requests":{"type":"number","description":"Number of concurrent requests an automatic scaling instance can accept before the scheduler spawns a new instance.\n\nDefaults to a runtime-specific value.","description_kind":"plain","optional":true},"max_idle_instances":{"type":"number","description":"Maximum number of idle instance
[2021-03-30T16:04:49.141] [DEBUG] default - s that should be maintained for this version.","description_kind":"plain","optional":true},"max_pending_latency":{"type":"string","description":"Maximum amount of time that a request should wait in the pending queue before starting a new instance to handle it.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","description_kind":"plain","optional":true},"min_idle_instances":{"type":"number","description":"Minimum number of idle instances that should be maintained for this version. Only applicable for the default version of a service.","description_kind":"plain","optional":true},"min_pending_latency":{"type":"string","description":"Minimum amount of time a request should wait in the pending queue before starting a new instance to handle it.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","description_kind":"plain","optional":true}},"block_types":{"standard_scheduler_settings":{"nesting_mode":"list","block":{"attributes":{"max_instances":{"type":"number","description":"Maximum number of instances to run for this version. Set to zero to disable maxInstances configuration.","description_kind":"plain","optional":true},"min_instances":{"type":"number","description":"Minimum number of instances to run for this version. Set to zero to disable minInstances configuration.","description_kind":"plain","optional":true},"target_cpu_utilization":{"type":"number","description":"Target CPU utilization ratio to maintain when scaling. Should be a value in the range [0.50, 0.95], zero, or a negative value.","description_kind":"plain","optional":true},"target_throughput_utilization":{"type":"number","description":"Target throughput utilization ratio to maintain when scaling. Should be a value in the range [0.50, 0.95], zero, or a negative value.","description_kind":"plain","optional":true}},"description":"Scheduler settings for standard environment.","description_kind":"plain"},"max_items":1}},"description":"Automatic scaling is based on request rate, response latencies, and other application metrics.","description_kind":"plain"},"max_items":1},"basic_scaling":{"nesting_mode":"list","block":{"attributes":{"idle_timeout":{"type":"string","description":"Duration of time after the last request that an instance must wait before the instance is shut down.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\". Defaults to 900s.","description_kind":"plain","optional":true},"max_instances":{"type":"number","description":"Maximum number of instances to create for this version. Must be in the range [1.0, 200.0].","description_kind":"plain","required":true}},"description":"Basic scaling creates instances when your application receives requests. Each instance will be shut down when the application becomes idle. Basic scaling is ideal for work that is intermittent or driven by user activity.","description_kind":"plain"},"max_items":1},"deployment":{"nesting_mode":"list","block":{"block_types":{"files":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description_kind":"plain","required":true},"sha1_sum":{"type":"string","description":"SHA1 checksum of the file","description_kind":"plain","optional":true},"source_url":{"type":"string","description":"Source URL","description_kind":"plain","required":true}},"description":"Manifest of the files stored in Google Cloud Storage that are included as part of this version.\nAll files must be readable using the credentials supplied with this call.","description_kind":"plain"}},"zip":{"nesting_mode":"list","block":{"attributes":{"files_count":{"type":"number","description":"files count","description_kind":"plain","optional":true},"source_url":{"type":"string","description":"Source URL","description_kind":"plain","required":true}},"description":"Zip File","description_kind":"plain"},"max_items":1}},"description":"Code and application artifacts that make up this version.","description_kind":"plain"},"min_items":1,"max_items":1},"entrypoint":{"nesting_mode":"list","block":{"attributes":{"shell":{"type":"string","description":"The format should be a shell command that can be fed to bash -c.","description_kind":"plain","required":true}},"description":"The entrypoint for the application.","description_kind":"plain"},"max_items":1},"handlers":{"nesting_mode":"list","block":{"attributes":{"auth_fail_action":{"type":"string","description":"Actions to take when the user is not logged in. Possible values: [\"AUTH_FAIL_ACTION_REDIRECT\", \"AUTH_FAIL_ACTION_UNAUTHORIZED\"]","description_kind":"plain","optional":true},"login":{"type":"string","description":"Methods to restrict access to a URL based on login status. Possible values: [\"LOGIN_OPTIONAL\", \"LOGIN_ADMIN\", \"LOGIN_REQUIRED\"]","description_kind":"plain","optional":true},"redirect_http_response_code":{"type":"string","description":"30x code to use when performing redirects for the secure field. Possible values: [\"REDIRECT_HTTP_RESPONSE_CODE_301\", \"REDIRECT_HTTP_RESPONSE_CODE_302\", \"REDIRECT_HTTP_RESPONSE_CODE_303\", \"REDIRECT_HTTP_RESPONSE_CODE_307\"]","description_kind":"plain","optional":true},"security_level":{"type":"string","description":"Security (HTTPS) enforcement for this URL. Possible values: [\"SECURE_DEFAULT\", \"SECURE_NEVER\", \"SECURE_OPTIONAL\", \"SECURE_ALWAYS\"]","description_kind":"plain","optional":true},"url_regex":{"type":"string","description":"URL prefix. Uses regular expression syntax, which means regexp special characters must be escaped, but should not contain groupings.\nAll URLs that begin with this prefix are handled by this handler, using the portion of the URL after the prefix as part of the file path.","description_kind":"plain","optional":true}},"block_types":{"script":{"nesting_mode":"list","block":{"attributes":{"script_path":{"type":"string","description":"Path to the script from the application root directory.","description_kind":"plain","required":true}},"description":"Executes a script to handle the requests that match this URL pattern.\nOnly the auto value is supported for Node.js in the App Engine standard environment, for example \"script:\" \"auto\".","description_kind":"plain"},"max_items":1},"static_files":{"nesting_mode":"list","block":{"attributes":{"application_readable":{"type":"bool","description":"Whether files should also be uploaded as code data. By default, files declared in static file handlers are uploaded as\nstatic data and are only served to end users; they cannot be read by the application. If enabled, uploads are charged\nagainst both your code and static data storage resource quotas.","description_kind":"plain","optional":true},"expiration":{"type":"string","description":"Time a static file served by this handler should be cached by web proxies and browsers.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example \"3.5s\".","description_kind":"plain","optional":true},"http_headers":{"type":["map","string"],"description":"HTTP headers to use for all responses from these URLs.\nAn object containing a list of \"key:value\" value pairs.\".","description_kind":"plain","optional":true},"mime_type":{"type":"string","description":"MIME type used to serve all files served by this handler.\nDefaults to file-specific MIME types, which are derived from each file's filename extension.","description_kind":"plain","optional":true},"path":{"type":"string","description":"Path to the static files matched by the URL pattern, from the application root directory. The path can refer to text matched in groupings in the URL pattern.","description_kind":"plain","optional":true},"require_matching_file":{"type":"bool","description":"Whether this handler should match the request if the file referenced by the handler does not exist.","description_kind":"plain","optional":true},"upload_path_regex":{"type":"string","description":"Regular expression that matches the file paths for all files that should be referenced by this handler.","description_kind":"plain","optional":true}},"description":"Files served directly to the user for a given URL, such as images, CSS stylesheets, or JavaScript source files. Static file handlers describe which files in the application directory are static files, and which URLs serve them.","description_kind":"plain"},"max_items":1}},"description":"An ordered list of URL-matching patterns that should be applied to incoming requests.\nThe first matching URL handles the request and other request handlers are not attempted.","description_kind":"plain"}},"libraries":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the library. Example \"django\".","description_kind":"plain","optional":true},"version":{"type":"string","description":"Version of the library to select, or \"latest\".","description_kind":"plain","optional":true}},"description":"Configuration for third-party Python runtime libraries that are required by the application.","description_kind":"plain"}},"manual_scaling":{"nesting_mode":"list","block":{"attributes":{"instances":{"type":"number","description":"Number of instances to assign to the service at the start.\n\n**Note:** When managing the number of instances at runtime through the App Engine Admin API or the (now deprecated) Python 2\nModules API set_num_instances() you must use 'lifecycle.ignore_changes = [\"manual_scaling\"[0].instances]' to prevent drift detection.","description_kind":"plain","required":true}},"description":"A service with manual scaling runs continuously, allowing you to perform complex initialization and rely on the state of its memory over time.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"vpc_access_connector":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Full Serverless VPC Access Connector name e.g. /projects/my-project/locations/us-central1/connectors/c1.","description_kind":"plain","required":true}},"description":"Enables VPC connectivity for standard apps.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_data_transfer_config":{"version":0,"block":{"attributes":{"data_refresh_window_days":{"type":"number","description":"The number of days to look back to automatically refresh the data.\nFor example, if dataRefreshWindowDays = 10, then every day BigQuery\nreingests data for [today-10, today-1], rather than ingesting data for\njust [today-1]. Only valid if the data source supports the feature.\nSet the value to 0 to use the default value.","description_kind":"plain","optional":true},"data_source_id":{"type":"string","description":"The data source id. Cannot be changed once the transfer config is created.","description_kind":"plain","required":true},"destination_dataset_id":{"type":"string","description":"The BigQuery target dataset id.","description_kind":"plain","required":true},"disabled":{"type":"bool","description":"When set to true, no runs are scheduled for a given transfer.","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"The user specified display name for the transfer config.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"The geographic location where the transfer config should reside.\nExamples: US, EU, asia-northeast1. The default value is US.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The resource name of the transfer config. Transfer config names have the\nform projects/{projectId}/locations/{location}/transferConfigs/{configId}.\nWhere configId is usually a uuid, but this is not required.\nThe name is ignored when creating a transfer config.","description_kind":"plain","computed":true},"notification_pubsub_topic":{"type":"string","description":"Pub/Sub topic where notifications will be sent after transfer runs\nassociated with this transfer config finish.","description_kind":"plain","optional":true},"params":{"type":["map","string"],"description":"These parameters are specific to each data source.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"schedule":{"type":"string","description":"Data transfer schedule. If the data source does not support a custom\nschedule, this should be empty. If it is empty, the default value for\nthe data source will be used. The specified times are in UTC. Examples\nof valid format: 1st,3rd monday of month 15:30, every wed,fri of jan,\njun 13:15, and first sunday of quarter 00:00. See more explanation\nabout the format here:\nhttps://cloud.google.com/appengine/docs/flexible/python/scheduling-jobs-with-cron-yaml#the_schedule_format\nNOTE: the granularity should be at least 8 hours, or less frequent.","description_kind":"plain","optional":true},"service_account_name":{"type":"string","description":"Optional service account name. If this field is set, transfer config will\nbe created with this service account credentials. It requires that\nrequesting user calling this API has permissions to act as this service account.","description_kind":"plain","optional":true}},"block_types":{"email_preferences":{"nesting_mode":"list","block":{"attributes":{"enable_failure_email":{"type":"bool","description":"If true, email notifications will be sent on transfer run failures.","description_kind":"plain","required":true}},"description":"Email notifications will be sent according to these preferences to the\nemail address of the user who owns this transfer config.","description_kind":"plain"},"max_items":1},"schedule_options":{"nesting_mode":"list","block":{"attributes":{"disable_auto_scheduling":{"type":"bool","description":"If true, automatic scheduling of data transfer runs for this\nconfiguration will be disabled. The runs can be started on ad-hoc\nbasis using transferConfigs.startManualRuns API. When automatic\nscheduling is disabled, the TransferConfig.schedule field will\nbe ignored.","description_kind":"plain","optional":true},"end_time":{"type":"string","description":"Defines time to stop scheduling transfer runs. A transfer run cannot be\nscheduled at or after the end time. The end time can be changed at any\nmoment. The time when a data transfer can be triggered manually is not\nlimited by this option.","description_kind":"plain","optional":true},"start_time":{"type":"string","description":"Specifies time to start scheduling transfer runs. The first run will be\nscheduled at or after the start time according to a recurrence pattern\ndefined in the schedule string. The start time can be changed at any\nmoment. The time when a data transfer can be triggered manually is not\nlimited by this option.","description_kind":"plain","optional":true}},"description":"Options customizing the data transfer schedule.","description_kind":"plain"},"max_items":1},"sensitive_params":{"nesting_mode":"list","block":{"attributes":{"secret_access_key":{"type":"string","description":"The Secret Access Key of the AWS account transferring data from.","description_kind":"plain","required":true,"sensitive":true}},"description":"Different parameters are configured primarily using the the 'params' field on this\nresource. This block contains the parameters which contain secrets or passwords so that they can be marked\nsensitive and hidden from plan output. The name of the field, eg: secret_access_key, will be the key\nin the 'params' map in the api request.\n\nCredentials may not be specified in both locations and will cause an error. Changing from one location\nto a different credential configuration in the config will require an apply to update state.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_bigquery_dataset":{"version":0,"block":{"attributes":{"creation_time":{"type":"number","description":"The time when this dataset was created, in milliseconds since the\nepoch.","description_kind":"plain","computed":true},"dataset_id":{"type":"string","description":"A unique ID for this dataset, without the project name. The ID\nmust contain only letters (a-z, A-Z), numbers (0-9), or\nunderscores (_). The maximum length is 1,024 characters.","description_kind":"plain","required":true},"default_partition_expiration_ms":{"type":"number","description":"The default partition expiration for all partitioned tables in\nthe dataset, in milliseconds.\n\n\nOnce this property is set, all newly-created partitioned tables in\nthe dataset will have an 'expirationMs' property in the 'timePartitioning'\nsettings set to this value, and changing the value will only\naffect new tables, not existing ones. The storage in a partition will\nhave an expiration time of its partition time plus this value.\nSetting this property overrides the use of 'defaultTableExpirationMs'\nfor partitioned tables: only one of 'defaultTableExpirationMs' and\n'defaultPartitionExpirationMs' will be used for any new partitioned\ntable. If you provide an explicit 'timePartitioning.expirationMs' when\ncreating or updating a partitioned table, that value takes precedence\nover the default partition expiration time indicated by this property.","description_kind":"plain","optional":true},"default_table_expiration_ms":{"type":"number","description":"The default lifetime of all tables in the dataset, in milliseconds.\nThe minimum value is 3600000 milliseconds (one hour).\n\n\nOnce this property is set, all newly-created tables in the dataset\nwill have an 'expirationTime' property set to the creation time plus\nthe value in this property, and changing the value will only affect\nnew tables, not existing ones. When the 'expirationTime' for a given\ntable is reached, that table will be deleted automatically.\nIf a table's 'expirationTime' is modified or removed before the\ntable expires, or if you provide an explicit 'expirationTime' when\ncreating a table, that value takes precedence over the default\nexpiration time indicated by this property.","description_kind":"plain","optional":true},"delete_contents_on_destroy":{"type":"bool","description_kind":"plain","optional":true},"description":{"type":"string","description":"A user-friendly description of the dataset","description_kind":"plain","optional":true},"etag":{"type":"string","description":"A hash of the resource.","description_kind":"plain","computed":true},"friendly_name":{"type":"string","description":"A descriptive name for the dataset","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"The labels associated with this dataset. You can use these to\norganize and group your datasets","description_kind":"plain","optional":true},"last_modified_time":{"type":"number","description":"The date when this dataset or any of its tables was last modified, in\nmilliseconds since the epoch.","description_kind":"plain","computed":true},"location":{"type":"string","description":"The geographic location where the dataset should reside.\nSee [official docs](https://cloud.google.com/bigquery/docs/dataset-locations).\n\n\nThere are two types of locations, regional or multi-regional. A regional\nlocation is a specific geographic place, such as Tokyo, and a multi-regional\nlocation is a large geographic area, such as the United States, that\ncontains at least two geographic places.\n\n\nThe default value is multi-regional location 'US'.\nChanging this forces a new resource to be created.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"access":{"nesting_mode":"set","block":{"attributes":{"domain":{"type":"string","description":"A domain to grant access to. Any users signed in with the\ndomain specified will be granted the specified access","description_kind":"plain","optional":true},"group_by_email":{"type":"string","description":"An email address of a Google Group to grant access to.","description_kind":"plain","optional":true},"role":{"type":"string","description":"Describes the rights granted to the user specified by the other\nmember of the access object. Basic, predefined, and custom roles\nare supported. Predefined roles that have equivalent basic roles\nare swapped by the API to their basic counterparts. See\n[official docs](https://cloud.google.com/bigquery/docs/access-control).","description_kind":"plain","optional":true},"special_group":{"type":"string","description":"A special group to grant access to. Possible values include:\n\n\n* 'projectOwners': Owners of the enclosing project.\n\n\n* 'projectReaders': Readers of the enclosing project.\n\n\n* 'projectWriters': Writers of the enclosing project.\n\n\n* 'allAuthenticatedUsers': All authenticated BigQuery users.","description_kind":"plain","optional":true},"user_by_email":{"type":"string","description":"An email address of a user to grant access to. For example:\nfred@example.com","description_kind":"plain","optional":true}},"block_types":{"view":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","required":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","required":true},"table_id":{"type":"string","description":"The ID of the table. The ID must contain only letters (a-z,\nA-Z), numbers (0-9), or underscores (_). The maximum length\nis 1,024 characters.","description_kind":"plain","required":true}},"description":"A view from a different dataset to grant access to. Queries\nexecuted against that view will have read access to tables in\nthis dataset. The role field is not required when this field is\nset. If that view is updated by any user, access to the view\nneeds to be granted again via an update operation.","description_kind":"plain"},"max_items":1}},"description":"An array of objects that define dataset access for one or more entities.","description_kind":"plain"}},"default_encryption_configuration":{"nesting_mode":"list","block":{"attributes":{"kms_key_name":{"type":"string","description":"Describes the Cloud KMS encryption key that will be used to protect destination\nBigQuery table. The BigQuery Service Account associated with your project requires\naccess to this encryption key.","description_kind":"plain","required":true}},"description":"The default encryption key for all tables in the dataset. Once this property is set,\nall newly-created partitioned tables in the dataset will have encryption key set to\nthis value, unless table creation request (or query) overrides the key.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_bigquery_dataset_access":{"version":0,"block":{"attributes":{"api_updated_member":{"type":"bool","description":"If true, represents that that the iam_member in the config was translated to a different member type by the API, and is stored in state as a different member type","description_kind":"plain","computed":true},"dataset_id":{"type":"string","description":"A unique ID for this dataset, without the project name. The ID\nmust contain only letters (a-z, A-Z), numbers (0-9), or\nunderscores (_). The maximum length is 1,024 characters.","description_kind":"plain","required":true},"domain":{"type":"string","description":"A domain to grant access to. Any users signed in with the\ndomain specified will be granted the specified access","description_kind":"plain","optional":true},"group_by_email":{"type":"string","description":"An email address of a Google Group to grant access to.","description_kind":"plain","optional":true},"iam_member":{"type":"string","description":"Some other type of member that appears in the IAM Policy but isn't a user,\ngroup, domain, or special group. For example: 'allUsers'","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description":"Describes the rights granted to the user specified by the other\nmember of the access object. Basic, predefined, and custom roles are\nsupported. Predefined roles that have equivalent basic roles are\nswapped by the API to their basic counterparts, and will show a diff\npost-create. See\n[official docs](https://cloud.google.com/bigquery/docs/access-control).","description_kind":"plain","optional":true},"special_group":{"type":"string","description":"A special group to grant access to. Possible values include:\n\n\n* 'projectOwners': Owners of the enclosing project.\n\n\n* 'projectReaders': Readers of the enclosing project.\n\n\n* 'projectWriters': Writers of the enclosing project.\n\n\n* 'allAuthenticatedUsers': All authenticated BigQuery users.","description_kind":"plain","optional":true},"user_by_email":{"type":"string","description":"An email address of a user to grant access to. For example:\nfred@example.com","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"view":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","required":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","required":true},"table_id":{"type":"string","description":"The ID of the table. The ID must contain only letters (a-z,\nA-Z), numbers (0-9), or underscores (_). The maximum length\nis 1,024 characters.","description_kind":"plain","required":true}},"description":"A view from a different dataset to grant access to. Queries\nexecuted against that view will have read access to tables in\nthis dataset. The role field is not required when this field is\nset. If that view is updated by any user, access to the view\nneeds to be granted again via an update operation.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_dataset_iam_binding":{"version":0,"block":{"attributes":{"dataset_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_dataset_iam_member":{"version":0,"block":{"attributes":{"dataset_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_dataset_iam_policy":{"version":0,"block":{"attributes":{"dataset_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_bigquery_job":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"job_id":{"type":"string","description":"The ID of the job. The ID must contain only letters (a-z, A-Z), numbers (0-9), underscores (_), or dashes (-). The maximum length is 1,024 characters.","description_kind":"plain","required":true},"job_timeout_ms":{"type":"string","description":"Job timeout in milliseconds. If this time limit is exceeded, BigQuery may attempt to terminate the job.","description_kind":"plain","optional":true},"job_type":{"type":"string","description":"The type of the job.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"The labels associated with this job. You can use these to organize and group your jobs.","description_kind":"plain","optional":true},"location":{"type":"string","description":"The geographic location of the job. The default value is US.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"status":{"type":["list",["object",{"error_result":["list",["object",{"location":"string","message":"string","reason":"string"}]],"errors":["list",["object",{"location":"string","message":"string","reason":"string"}]],"state":"string"}]],"description":"The status of this job. Examine this value when polling an asynchronous job to see if the job is complete.","description_kind":"plain","computed":true},"user_email":{"type":"string","description":"Email address of the user who ran the job.","description_kind":"plain","computed":true}},"block_types":{"copy":{"nesting_mode":"list","block":{"attributes":{"create_disposition":{"type":"string","description":"Specifies whether the job is allowed to create new tables. The following values are supported:\nCREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table.\nCREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result.\nCreation, truncation and append actions occur as one atomic update upon job completion Default value: \"CREATE_IF_NEEDED\" Possible values: [\"CREATE_IF_NEEDED\", \"CREATE_NEVER\"]","description_kind":"plain","optional":true},"write_disposition":{"type":"string","description":"Specifies the action that occurs if the destination table already exists. The following values are supported:\nWRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result.\nWRITE_APPEND: If the table already exists, BigQuery appends the data to the table.\nWRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result.\nEach action is atomic and only occurs if BigQuery is able to complete the job successfully.\nCreation, truncation and append actions occur as one atomic update upon job completion. Default value: \"WRITE_EMPTY\" Possible values: [\"WRITE_TRUNCATE\", \"WRITE_APPEND\", \"WRITE_EMPTY\"]","description_kind":"plain","optional":true}},"block_types":{"destination_encryption_configuration":{"nesting_mode":"list","block":{"attributes":{"kms_key_name":{"type":"string","description":"Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table.\nThe BigQuery Service Account associated with your project requires access to this encryption key.","description_kind":"plain","required":true}},"description":"Custom encryption configuration (e.g., Cloud KMS keys)","description_kind":"plain"},"max_items":1},"destination_table":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","optional":true,"computed":true},"table_id":{"type":"string","description":"The table. Can be specified '{{table_id}}' if 'project_id' and 'dataset_id' are also set,\nor of the form 'projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}' if not.","description_kind":"plain","required":true}},"description":"The destination table.","description_kind":"plain"},"max_items":1},"source_tables":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","optional":true,"computed":true},"table_id":{"type":"string","description":"The table. Can be specified '{{table_id}}' if 'project_id' and 'dataset_id' are also set,\nor of the form 'projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}' if not.","description_kind":"plain","required":true}},"description":"Source tables to copy.","description_kind":"plain"},"min_items":1}},"description":"Copies a table.","description_kind":"plain"},"max_items":1},"extract":{"nesting_mode":"list","block":{"attributes":{"compression":{"type":"string","description":"The compression type to use for exported files. Possible values include GZIP, DEFLATE, SNAPPY, and NONE.\nThe default value is NONE. DEFLATE and SNAPPY are only supported for Avro.","description_kind":"plain","optional":true},"destination_format":{"type":"string","description":"The exported file format. Possible values include CSV, NEWLINE_DELIMITED_JSON and AVRO for tables and SAVED_MODEL for models.\nThe default value for tables is CSV. Tables with nested or repeated fields cannot be exported as CSV.\nThe default value for models is SAVED_MODEL.","description_kind":"plain","optional":true,"computed":true},"destination_uris":{"type":["list","string"],"description":"A list of fully-qualified Google Cloud Storage URIs where the extracted table should be written.","description_kind":"plain","required":true},"field_delimiter":{"type":"string","description":"When extracting data in CSV format, this defines the delimiter to use between fields in the exported data.\nDefault is ','","description_kind":"plain","optional":true,"computed":true},"print_header":{"type":"bool","description":"Whether to print out a header row in the results. Default is true.","description_kind":"plain","optional":true},"use_avro_logical_types":{"type":"bool","description":"Whether to use logical types when extracting to AVRO format.","description_kind":"plain","optional":true}},"block_types":{"source_model":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this model.","description_kind":"plain","required":true},"model_id":{"type":"string","description":"The ID of the model.","description_kind":"plain","required":true},"project_id":{"type":"string","description":"The ID of the project containing this model.","description_kind":"plain","required":true}},"description":"A reference to the model being exported.","description_kind":"plain"},"max_items":1},"source_table":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","optional":true,"computed":true},"table_id":{"type":"string","description":"The table. Can be specified '{{table_id}}' if 'project_id' and 'dataset_id' are also set,\nor of the form 'projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}' if not.","description_kind":"plain","required":true}},"description":"A reference to the table being exported.","description_kind":"plain"},"max_items":1}},"description":"Configures an extract job.","description_kind":"plain"},"max_items":1},"load":{"nesting_mode":"list","block":{"attributes":{"allow_jagged_rows":{"type":"bool","description":"Accept rows that are missing trailing optional columns. The missing values are treated as nulls.\nIf false, records with missing trailing columns are treated as bad records, and if there are too many bad records,\nan invalid error is returned in the job result. The default value is false. Only applicable to CSV, ignored for other formats.","description_kind":"plain","optional":true},"allow_quoted_newlines":{"type":"bool","description":"Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file.\nThe default value is false.","description_kind":"plain","optional":true},"autodetect":{"type":"bool","description":"Indicates if we should automatically infer the options and schema for CSV and JSON sources.","description_kind":"plain","optional":true},"create_disposition":{"type":"string","description":"Specifies whether the job is allowed to create new tables. The following values are supported:\nCREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table.\nCREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result.\nCreation, truncation and append actions occur as one atomic update upon job completion Default value: \"CREATE_IF_NEEDED\" Possible values: [\"CREATE_IF_NEEDED\", \"CREATE_NEVER\"]","description_kind":"plain","optional":true},"encoding":{"type":"string","description":"The character encoding of the data. The supported values are UTF-8 or ISO-8859-1.\nThe default value is UTF-8. BigQuery decodes the data after the raw, binary data\nhas been split using the values of the quote and fieldDelimiter properties.","description_kind":"plain","optional":true},"field_delimiter":{"type":"string","description":"The separator for fields in a CSV file. The separator can be any ISO-8859-1 single-byte character.\nTo use a character in the range 128-255, you must encode the character as UTF8. BigQuery converts\nthe string to ISO-8859-1 encoding, and then uses the first byte of the encoded string to split the\ndata in its raw, binary state. BigQuery also supports the escape sequence \"\\t\" to specify a tab separator.\nThe default value is a comma (',').","description_kind":"plain","optional":true,"computed":true},"ignore_unknown_values":{"type":"bool","description":"Indicates if BigQuery should allow extra values that are not represented in the table schema.\nIf true, the extra values are ignored. If false, records with extra columns are treated as bad records,\nand if there are too many bad records, an invalid error is returned in the job result.\nThe default value is false. The sourceFormat property determines what BigQuery treats as an extra value:\nCSV: Trailing columns\nJSON: Named values that don't match any column names","description_kind":"plain","optional":true},"max_bad_records":{"type":"number","description":"The maximum number of bad records that BigQuery can ignore when running the job. If the number of bad records exceeds this value,\nan invalid error is returned in the job result. The default value is 0, which requires that all records are valid.","description_kind":"plain","optional":true},"null_marker":{"type":"string","description":"Specifies a string that represents a null value in a CSV file. For example, if you specify \"\\N\", BigQuery interprets \"\\N\" as a null value\nwhen loading a CSV file. The default value is the empty string. If you set this property to a custom value, BigQuery throws an error if an\nempty string is present for all data types except for STRING and BYTE. For STRING and BYTE columns, BigQuery interprets the empty string as\nan empty value.","description_kind":"plain","optional":true},"projection_fields":{"type":["list","string"],"description":"If sourceFormat is set to \"DATASTORE_BACKUP\", indicates which entity properties to load into BigQuery from a Cloud Datastore backup.\nProperty names are case sensitive and must be top-level properties. If no properties are specified, BigQuery loads all properties.\nIf any named property isn't found in the Cloud Datastore backup, an invalid error is returned in the job result.","description_kind":"plain","optional":true},"quote":{"type":"string","description":"The value that is used to quote data sections in a CSV file. BigQuery converts the string to ISO-8859-1 encoding,\nand then uses the first byte of the encoded string to split the data in its raw, binary state.\nThe default value is a double-quote ('\"'). If your data does not contain quoted sections, set the property value to an empty string.\nIf your data contains quoted newline characters, you must also set the allowQuotedNewlines property to true.","description_kind":"plain","optional":true,"computed":true},"schema_update_options":{"type":["list","string"],"description":"Allows the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or\nsupplied in the job configuration. Schema update options are supported in two cases: when writeDisposition is WRITE_APPEND;\nwhen writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table, specified by partition decorators.\nFor normal tables, WRITE_TRUNCATE will always overwrite the schema. One or more of the following values are specified:\nALLOW_FIELD_ADDITION: allow adding a nullable field to the schema.\nALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.","description_kind":"plain","optional":true},"skip_leading_rows":{"type":"number","description":"The number of rows at the top of a CSV file that BigQuery will skip when loading the data.\nThe default value is 0. This property is useful if you have header rows in the file that should be skipped.\nWhen autodetect is on, the behavior is the following:\nskipLeadingRows unspecified - Autodetect tries to detect headers in the first row. If they are not detected,\nthe row is read as data. Otherwise data is read starting from the second row.\nskipLeadingRows is 0 - Instructs autodetect that there are no headers and data should be read starting from the first row.\nskipLeadingRows = N \u003e 0 - Autodetect skips N-1 rows and tries to detect headers in row N. If headers are not detected,\nrow N is just skipped. Otherwise row N is used to extract column names for the detected schema.","description_kind":"plain","optional":true},"source_format":{"type":"string","description":"The format of the data files. For CSV files, specify \"CSV\". For datastore backups, specify \"DATASTORE_BACKUP\".\nFor newline-delimited JSON, specify \"NEWLINE_DELIMITED_JSON\". For Avro, specify \"AVRO\". For parquet, specify \"PARQUET\".\nFor orc, specify \"ORC\". The default value is CSV.","description_kind":"plain","optional":true},"source_uris":{"type":["list","string"],"description":"The fully-qualified URIs that point to your data in Google Cloud.\nFor Google Cloud Storage URIs: Each URI can contain one '*' wildcard character\nand it must come after the 'bucket' name. Size limits related to load jobs apply\nto external data sources. For Google Cloud Bigtable URIs: Exactly one URI can be\nspecified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table.\nFor Google Cloud Datastore backups: Exactly one URI can be specified. Also, the '*' wildcard character is not allowed.","description_kind":"plain","required":true},"write_disposition":{"type":"string","description":"Specifies the action that occurs if the destination table already exists. The following values are supported:\nWRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result.\nWRITE_APPEND: If the table already exists, BigQuery appends the data to the table.\nWRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result.\nEach action is atomic and only occurs if BigQuery is able to complete the job successfully.\nCreation, truncation and append actions occur as one atomic update upon job completion. Default value: \"WRITE_EMPTY\" Possible values: [\"WRITE_TRUNCATE\", \"WRITE_APPEND\", \"WRITE_EMPTY\"]","description_kind":"plain","optional":true}},"block_types":{"destination_encryption_configuration":{"nesting_mode":"list","block":{"attributes":{"kms_key_name":{"type":"string","description":"Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table.\nThe BigQuery Service Account associated with your project requires access to this encryption key.","description_kind":"plain","required":true}},"description":"Custom encryption configuration (e.g., Cloud KMS keys)","description_kind":"plain"},"max_items":1},"destination_table":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","optional":true,"computed":true},"table_id":{"type":"string","description":"The table. Can be specified '{{table_id}}' if 'project_id' and 'dataset_id' are also set,\nor of the form 'projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}' if not.","description_kind":"plain","required":true}},"description":"The destination table to load the data into.","description_kind":"plain"},"min_items":1,"max_items":1},"time_partitioning":{"nesting_mode":"list","block":{"attributes":{"expiration_ms":{"type":"string","description":"Number of milliseconds for which to keep the storage for a partition. A wrapper is used here because 0 is an invalid value.","description_kind":"plain","optional":true},"field":{"type":"string","description":"If not set, the table is partitioned by pseudo column '_PARTITIONTIME'; if set, the table is partitioned by this field.\nThe field must be a top-level TIMESTAMP or DATE field. Its mode must be NULLABLE or REQUIRED.\nA wrapper is used here because an empty string is an invalid value.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The only type supported is DAY, which will generate one partition per day. Providing an empty string used to cause an error,\nbut in OnePlatform the field will be treated as unset.","description_kind":"plain","required":true}},"description":"Time-based partitioning specification for the destination table.","description_kind":"plain"},"max_items":1}},"description":"Configures a load job.","description_kind":"plain"},"max_items":1},"query":{"nesting_mode":"list","block":{"attributes":{"allow_large_results":{"type":"bool","description":"If true and query uses legacy SQL dialect, allows the query to produce arbitrarily large result tables at a slight cost in performance.\nRequires destinationTable to be set. For standard SQL queries, this flag is ignored and large results are always allowed.\nHowever, you must still set destinationTable when result size exceeds the allowed maximum response size.","description_kind":"plain","optional":true},"create_disposition":{"type":"string","description":"Specifies whether the job is allowed to create new tables. The following values are supported:\nCREATE_IF_NEEDED: If the table does not exist, BigQuery creates the table.\nCREATE_NEVER: The table must already exist. If it does not, a 'notFound' error is returned in the job result.\nCreation, truncation and append actions occur as one atomic update upon job completion Default value: \"CREATE_IF_NEEDED\" Possible values: [\"CREATE_IF_NEEDED\", \"CREATE_NEVER\"]","description_kind":"plain","optional":true},"flatten_results":{"type":"bool","description":"If true and query uses legacy SQL dialect, flattens all nested and repeated fields in the query results.\nallowLargeResults must be true if this is set to false. For standard SQL queries, this flag is ignored and results are never flattened.","description_kind":"plain","optional":true},"maximum_billing_tier":{"type":"number","description":"Limits the billing tier for this job. Queries that have resource usage beyond this tier will fail (without incurring a charge).\nIf unspecified, this will be set to your project default.","description_kind":"plain","optional":true},"maximum_bytes_billed":{"type":"string","description":"Limits the bytes billed for this job. Queries that will have bytes billed beyond this limit will fail (without incurring a charge).\nIf unspecified, this will be set to your project default.","description_kind":"plain","optional":true},"parameter_mode":{"type":"string","description":"Standard SQL only. Set to POSITIONAL to use positional (?) query parameters or to NAMED to use named (@myparam) query parameters in this query.","description_kind":"plain","optional":true},"priority":{"type":"string","description":"Specifies a priority for the query. Default value: \"INTERACTIVE\" Possible values: [\"INTERACTIVE\", \"BATCH\"]","description_kind":"plain","optional":true},"query":{"type":"string","description":"SQL query text to execute. The useLegacySql field can be used to indicate whether the query uses legacy SQL or standard SQL.\n*NOTE*: queries containing [DML language](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language)\n('DELETE', 'UPDATE', 'MERGE', 'INSERT') must specify 'create_disposition = \"\"' and 'write_disposition = \"\"'.","description_kind":"plain","required":true},"schema_update_options":{"type":["list","string"],"description":"Allows the schema of the destination table to be updated as a side effect of the query job.\nSchema update options are supported in two cases: when writeDisposition is WRITE_APPEND;\nwhen writeDisposition is WRITE_TRUNCATE and the destination table is a partition of a table,\nspecified by partition decorators. For normal tables, WRITE_TRUNCATE will always overwrite the schema.\nOne or more of the following values are specified:\nALLOW_FIELD_ADDITION: allow adding a nullable field to the schema.\nALLOW_FIELD_RELAXATION: allow relaxing a required field in the original schema to nullable.","description_kind":"plain","optional":true},"use_legacy_sql":{"type":"bool","description":"Specifies whether to use BigQuery's legacy SQL dialect for this query. The default value is true.\nIf set to false, the query will use BigQuery's standard SQL.","description_kind":"plain","optional":true},"use_query_cache":{"type":"bool","description":"Whether to look for the result in the query cache. The query cache is a best-effort cache that will be flushed whenever\ntables in the query are modified. Moreover, the query cache is only available when a query does not have a destination table specified.\nThe default value is true.","description_kind":"plain","optional":true},"write_disposition":{"type":"string","description":"Specifies the action that occurs if the destination table already exists. The following values are supported:\nWRITE_TRUNCATE: If the table already exists, BigQuery overwrites the table data and uses the schema from the query result.\nWRITE_APPEND: If the table already exists, BigQuery appends the data to the table.\nWRITE_EMPTY: If the table already exists and contains data, a 'duplicate' error is returned in the job result.\nEach action is atomic and only occurs if BigQuery is able to complete the job successfully.\nCreation, truncation and append actions occur as one atomic update upon job completion. Default value: \"WRITE_EMPTY\" Possible values: [\"WRITE_TRUNCATE\", \"WRITE_APPEND\", \"WRITE_EMPTY\"]","description_kind":"plain","optional":true}},"block_types":{"default_dataset":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The dataset. Can be specified '{{dataset_id}}' if 'project_id' is also set,\nor of the form 'projects/{{project}}/datasets/{{dataset_id}}' if not.","description_kind":"plain","required":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","optional":true,"computed":true}},"description":"Specifies the default dataset to use for unqualified table names in the query. Note that this does not alter behavior of unqualified dataset names.","description_kind":"plain"},"max_items":1},"destination_encryption_configuration":{"nesting_mode":"list","block":{"attributes":{"kms_key_name":{"type":"string","description":"Describes the Cloud KMS encryption key that will be used to protect destination BigQuery table.\nThe BigQuery Service Account associated with your project requires access to this encryption key.","description_kind":"plain","required":true}},"description":"Custom encryption configuration (e.g., Cloud KMS keys)","description_kind":"plain"},"max_items":1},"destination_table":{"nesting_mode":"list","block":{"attributes":{"dataset_id":{"type":"string","description":"The ID of the dataset containing this table.","description_kind":"plain","optional":true,"computed":true},"project_id":{"type":"string","description":"The ID of the project containing this table.","description_kind":"plain","optional":true,"computed":true},"table_id":{"type":"string","description":"The table. Can be specified '{{table_id}}' if 'project_id' and 'dataset_id' are also set,\nor of the form 'projects/{{project}}/datasets/{{dataset_id}}/tables/{{table_id}}' if not.","description_kind":"plain","required":true}},"description":"Describes the table where the query results should be stored.\nThis property must be set for large results that exceed the maximum response size.\nFor queries that produce anonymous (cached) results, this field will be populated by BigQuery.","description_kind":"plain"},"max_items":1},"script_options":{"nesting_mode":"list","block":{"attributes":{"key_result_statement":{"type":"string","description":"Determines which statement in the script represents the \"key result\",\nused to populate the schema and query results of the script job. Possible values: [\"LAST\", \"FIRST_SELECT\"]","description_kind":"plain","optional":true},"statement_byte_budget":{"type":"string","description":"Limit on the number of bytes billed per statement. Exceeding this budget results in an error.","description_kind":"plain","optional":true},"statement_timeout_ms":{"type":"string","description":"Timeout period for each statement in a script.","description_kind":"plain","optional":true}},"description":"Options controlling the execution of scripts.","description_kind":"plain"},"max_items":1},"user_defined_function_resources":{"nesting_mode":"list","block":{"attributes":{"inline_code":{"type":"string","description":"An inline resource that contains code for a user-defined function (UDF).\nProviding a inline code resource is equivalent to providing a URI for a file containing the same code.","description_kind":"plain","optional":true},"resource_uri":{"type":"string","description":"A code resource to load from a Google Cloud Storage URI (gs://bucket/path).","description_kind":"plain","optional":true}},"description":"Describes user-defined function resources used in the query.","description_kind":"plain"}}},"description":"Configures a query job.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_bigquery_reservation":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ignore_idle_slots":{"type":"bool","description":"If false, any query using this reservation will use idle slots from other reservations within\nthe same admin project. If true, a query using this reservation will execute with the slot\ncapacity specified above at most.","description_kind":"plain","optional":true},"location":{"type":"string","description":"The geographic location where the transfer config should reside.\nExamples: US, EU, asia-northeast1. The default value is US.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the reservation. This field must only contain alphanumeric characters or dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"slot_capacity":{"type":"number","description":"Minimum slots available to this reservation. A slot is a unit of computational power in BigQuery, and serves as the\nunit of parallelism. Queries using this reservation might use more slots during runtime if ignoreIdleSlots is set to false.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_bigquery_routine":{"version":0,"block":{"attributes":{"creation_time":{"type":"number","description":"The time when this routine was created, in milliseconds since the\nepoch.","description_kind":"plain","computed":true},"dataset_id":{"type":"string","description":"The ID of the dataset containing this routine","description_kind":"plain","required":true},"definition_body":{"type":"string","description":"The body of the routine. For functions, this is the expression in the AS clause.\nIf language=SQL, it is the substring inside (but excluding) the parentheses.","description_kind":"plain","required":true},"description":{"type":"string","description":"The description of the routine if defined.","description_kind":"plain","optional":true},"determinism_level":{"type":"string","description":"The determinism level of the JavaScript UDF if defined. Possible values: [\"DETERMINISM_LEVEL_UNSPECIFIED\", \"DETERMINISTIC\", \"NOT_DETERMINISTIC\"]","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"imported_libraries":{"type":["list","string"],"description":"Optional. If language = \"JAVASCRIPT\", this field stores the path of the\nimported JAVASCRIPT libraries.","description_kind":"plain","optional":true},"language":{"type":"string","description":"The language of the routine. Possible values: [\"SQL\", \"JAVASCRIPT\"]","description_kind":"plain","optional":true},"last_modified_time":{"type":"number","description":"The time when this routine was modified, in milliseconds since the\nepoch.","description_kind":"plain","computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"return_type":{"type":"string","description":"A JSON schema for the return type. Optional if language = \"SQL\"; required otherwise.\nIf absent, the return type is inferred from definitionBody at query time in each query\nthat references this routine. If present, then the evaluated result will be cast to\nthe specified returned type at query time. ~\u003e**NOTE**: Because this field expects a JSON\nstring, any changes to the string will create a diff, even if the JSON itself hasn't\nchanged. If the API returns a different value for the same schema, e.g. it switche\nd the order of values or replaced STRUCT field type with RECORD field type, we currently\ncannot suppress the recurring diff this causes. As a workaround, we recommend using\nthe schema as returned by the API.","description_kind":"plain","optional":true},"routine_id":{"type":"string","description":"The ID of the the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters.","description_kind":"plain","required":true},"routine_type":{"type":"string","description":"The type of routine. Possible values: [\"SCALAR_FUNCTION\", \"PROCEDURE\"]","description_kind":"plain","optional":true}},"block_types":{"arguments":{"nesting_mode":"list","block":{"attributes":{"argument_kind":{"type":"string","description":"Defaults to FIXED_TYPE. Default value: \"FIXED_TYPE\" Possible values: [\"FIXED_TYPE\", \"ANY_TYPE\"]","description_kind":"plain","optional":true},"data_type":{"type":"string","description":"A JSON schema for the data type. Required unless argumentKind = ANY_TYPE.\n~\u003e**NOTE**: Because this field expects a JSON string, any changes to the string\nwill create a diff, even if the JSON itself hasn't changed. If the API returns\na different value for the same schema, e.g. it switched the order of values\nor replaced STRUCT field type with RECORD field type, we currently cannot\nsuppress the recurring diff this causes. As a workaround, we recommend using\nthe schema as returned by the API.","description_kind":"plain","optional":true},"mode":{"type":"string","description":"Specifies whether the argument is input or output. Can be set for procedures only. Possible values: [\"IN\", \"OUT\", \"INOUT\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of this argument. Can be absent for function return argument.","description_kind":"plain","optional":true}},"description":"Input/output argument of a function or a stored procedure.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_bigquery_table":{"version":0,"block":{"attributes":{"clustering":{"type":["list","string"],"description":"Specifies column names to use for data clustering. Up to four top-level columns are allowed, and should be specified in descending priority order.","description_kind":"plain","optional":true},"creation_time":{"type":"number","description":"The time when this table was created, in milliseconds since the epoch.","description_kind":"plain","computed":true},"dataset_id":{"type":"string","description":"The dataset ID to create the table in. Changing this forces a new resource to be created.","description_kind":"plain","required":true},"deletion_protection":{"type":"bool","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.","description_kind":"plain","optional":true},"description":{"type":"string","description":"The field description.","description_kind":"plain","optional":true},"etag":{"type":"string","description":"A hash of the resource.","description_kind":"plain","computed":true},"expiration_time":{"type":"number","description":"The time when this table expires, in milliseconds since the epoch. If not present, the table will persist indefinitely. Expired tables will be deleted and their storage reclaimed.","description_kind":"plain","optional":true,"computed":true},"friendly_name":{"type":"string","description":"A descriptive name for the table.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"A mapping of labels to assign to the resource.","description_kind":"plain","optional":true},"last_modified_time":{"type":"number","description":"The time when this table was last modified, in milliseconds since the epoch.","description_kind":"plain","computed":true},"location":{"type":"string","description":"The geographic location where
[2021-03-30T16:04:49.141] [DEBUG] default - the table resides. This value is inherited from the dataset.","description_kind":"plain","computed":true},"num_bytes":{"type":"number","description":"The geographic location where the table resides. This value is inherited from the dataset.","description_kind":"plain","computed":true},"num_long_term_bytes":{"type":"number","description":"The number of bytes in the table that are considered \"long-term storage\".","description_kind":"plain","computed":true},"num_rows":{"type":"number","description":"The number of rows of data in this table, excluding any data in the streaming buffer.","description_kind":"plain","computed":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs.","description_kind":"plain","optional":true,"computed":true},"schema":{"type":"string","description":"A JSON schema for the table.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true},"table_id":{"type":"string","description":"A unique ID for the resource. Changing this forces a new resource to be created.","description_kind":"plain","required":true},"type":{"type":"string","description":"Describes the table type.","description_kind":"plain","computed":true}},"block_types":{"encryption_configuration":{"nesting_mode":"list","block":{"attributes":{"kms_key_name":{"type":"string","description":"The self link or full name of a key which should be used to encrypt this table. Note that the default bigquery service account will need to have encrypt/decrypt permissions on this key - you may want to see the google_bigquery_default_service_account datasource and the google_kms_crypto_key_iam_binding resource.","description_kind":"plain","required":true}},"description":"Specifies how the table should be encrypted. If left blank, the table will be encrypted with a Google-managed key; that process is transparent to the user.","description_kind":"plain"},"max_items":1},"external_data_configuration":{"nesting_mode":"list","block":{"attributes":{"autodetect":{"type":"bool","description":"Let BigQuery try to autodetect the schema and format of the table.","description_kind":"plain","required":true},"compression":{"type":"string","description":"The compression type of the data source. Valid values are \"NONE\" or \"GZIP\".","description_kind":"plain","optional":true},"ignore_unknown_values":{"type":"bool","description":"Indicates if BigQuery should allow extra values that are not represented in the table schema. If true, the extra values are ignored. If false, records with extra columns are treated as bad records, and if there are too many bad records, an invalid error is returned in the job result. The default value is false.","description_kind":"plain","optional":true},"max_bad_records":{"type":"number","description":"The maximum number of bad records that BigQuery can ignore when reading data.","description_kind":"plain","optional":true},"schema":{"type":"string","description":"A JSON schema for the external table. Schema is required for CSV and JSON formats and is disallowed for Google Cloud Bigtable, Cloud Datastore backups, and Avro formats when using external tables.","description_kind":"plain","optional":true,"computed":true},"source_format":{"type":"string","description":"The data format. Supported values are: \"CSV\", \"GOOGLE_SHEETS\", \"NEWLINE_DELIMITED_JSON\", \"AVRO\", \"PARQUET\", \"ORC\" and \"DATASTORE_BACKUP\". To use \"GOOGLE_SHEETS\" the scopes must include \"googleapis.com/auth/drive.readonly\".","description_kind":"plain","required":true},"source_uris":{"type":["list","string"],"description":"A list of the fully-qualified URIs that point to your data in Google Cloud.","description_kind":"plain","required":true}},"block_types":{"csv_options":{"nesting_mode":"list","block":{"attributes":{"allow_jagged_rows":{"type":"bool","description":"Indicates if BigQuery should accept rows that are missing trailing optional columns.","description_kind":"plain","optional":true},"allow_quoted_newlines":{"type":"bool","description":"Indicates if BigQuery should allow quoted data sections that contain newline characters in a CSV file. The default value is false.","description_kind":"plain","optional":true},"encoding":{"type":"string","description":"The character encoding of the data. The supported values are UTF-8 or ISO-8859-1.","description_kind":"plain","optional":true},"field_delimiter":{"type":"string","description":"The separator for fields in a CSV file.","description_kind":"plain","optional":true},"quote":{"type":"string","description":"The value that is used to quote data sections in a CSV file. If your data does not contain quoted sections, set the property value to an empty string. If your data contains quoted newline characters, you must also set the allow_quoted_newlines property to true. The API-side default is \", specified in Terraform escaped as \\\". Due to limitations with Terraform default values, this value is required to be explicitly set.","description_kind":"plain","required":true},"skip_leading_rows":{"type":"number","description":"The number of rows at the top of a CSV file that BigQuery will skip when reading the data.","description_kind":"plain","optional":true}},"description":"Additional properties to set if source_format is set to \"CSV\".","description_kind":"plain"},"max_items":1},"google_sheets_options":{"nesting_mode":"list","block":{"attributes":{"range":{"type":"string","description":"Range of a sheet to query from. Only used when non-empty. At least one of range or skip_leading_rows must be set. Typical format: \"sheet_name!top_left_cell_id:bottom_right_cell_id\" For example: \"sheet1!A1:B20\"","description_kind":"plain","optional":true},"skip_leading_rows":{"type":"number","description":"The number of rows at the top of the sheet that BigQuery will skip when reading the data. At least one of range or skip_leading_rows must be set.","description_kind":"plain","optional":true}},"description":"Additional options if source_format is set to \"GOOGLE_SHEETS\".","description_kind":"plain"},"max_items":1},"hive_partitioning_options":{"nesting_mode":"list","block":{"attributes":{"mode":{"type":"string","description":"When set, what mode of hive partitioning to use when reading data.","description_kind":"plain","optional":true},"source_uri_prefix":{"type":"string","description":"When hive partition detection is requested, a common for all source uris must be required. The prefix must end immediately before the partition key encoding begins.","description_kind":"plain","optional":true}},"description":"When set, configures hive partitioning support. Not all storage formats support hive partitioning -- requesting hive partitioning on an unsupported format will lead to an error, as will providing an invalid specification.","description_kind":"plain"},"max_items":1}},"description":"Describes the data format, location, and other properties of a table stored outside of BigQuery. By defining these properties, the data source can then be queried as if it were a standard BigQuery table.","description_kind":"plain"},"max_items":1},"materialized_view":{"nesting_mode":"list","block":{"attributes":{"enable_refresh":{"type":"bool","description":"Specifies if BigQuery should automatically refresh materialized view when the base table is updated. The default is true.","description_kind":"plain","optional":true},"query":{"type":"string","description":"A query whose result is persisted.","description_kind":"plain","required":true},"refresh_interval_ms":{"type":"number","description":"Specifies maximum frequency at which this materialized view will be refreshed. The default is 1800000","description_kind":"plain","optional":true}},"description":"If specified, configures this table as a materialized view.","description_kind":"plain"},"max_items":1},"range_partitioning":{"nesting_mode":"list","block":{"attributes":{"field":{"type":"string","description":"The field used to determine how to create a range-based partition.","description_kind":"plain","required":true}},"block_types":{"range":{"nesting_mode":"list","block":{"attributes":{"end":{"type":"number","description":"End of the range partitioning, exclusive.","description_kind":"plain","required":true},"interval":{"type":"number","description":"The width of each range within the partition.","description_kind":"plain","required":true},"start":{"type":"number","description":"Start of the range partitioning, inclusive.","description_kind":"plain","required":true}},"description":"Information required to partition based on ranges. Structure is documented below.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"If specified, configures range-based partitioning for this table.","description_kind":"plain"},"max_items":1},"time_partitioning":{"nesting_mode":"list","block":{"attributes":{"expiration_ms":{"type":"number","description":"Number of milliseconds for which to keep the storage for a partition.","description_kind":"plain","optional":true,"computed":true},"field":{"type":"string","description":"The field used to determine how to create a time-based partition. If time-based partitioning is enabled without this value, the table is partitioned based on the load time.","description_kind":"plain","optional":true},"require_partition_filter":{"type":"bool","description":"If set to true, queries over this table require a partition filter that can be used for partition elimination to be specified.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The supported types are DAY, HOUR, MONTH, and YEAR, which will generate one partition per day, hour, month, and year, respectively.","description_kind":"plain","required":true}},"description":"If specified, configures time-based partitioning for this table.","description_kind":"plain"},"max_items":1},"view":{"nesting_mode":"list","block":{"attributes":{"query":{"type":"string","description":"A query that BigQuery executes when the view is referenced.","description_kind":"plain","required":true},"use_legacy_sql":{"type":"bool","description":"Specifies whether to use BigQuery's legacy SQL for this view. The default value is true. If set to false, the view will use BigQuery's standard SQL","description_kind":"plain","optional":true}},"description":"If specified, configures this table as a view.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_table_iam_binding":{"version":0,"block":{"attributes":{"dataset_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"table_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_table_iam_member":{"version":0,"block":{"attributes":{"dataset_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"table_id":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigquery_table_iam_policy":{"version":0,"block":{"attributes":{"dataset_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"table_id":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"google_bigtable_app_profile":{"version":0,"block":{"attributes":{"app_profile_id":{"type":"string","description":"The unique name of the app profile in the form '[_a-zA-Z0-9][-_.a-zA-Z0-9]*'.","description_kind":"plain","required":true},"description":{"type":"string","description":"Long form description of the use case for this app profile.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ignore_warnings":{"type":"bool","description":"If true, ignore safety checks when deleting/updating the app profile.","description_kind":"plain","optional":true},"instance":{"type":"string","description":"The name of the instance to create the app profile within.","description_kind":"plain","optional":true},"multi_cluster_routing_use_any":{"type":"bool","description":"If true, read/write requests are routed to the nearest cluster in the instance, and will fail over to the nearest cluster that is available\nin the event of transient errors or delays. Clusters in a region are considered equidistant. Choosing this option sacrifices read-your-writes\nconsistency to improve availability.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The unique name of the requested app profile. Values are of the form 'projects/\u003cproject\u003e/instances/\u003cinstance\u003e/appProfiles/\u003cappProfileId\u003e'.","description_kind":"plain","computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"single_cluster_routing":{"nesting_mode":"list","block":{"attributes":{"allow_transactional_writes":{"type":"bool","description":"If true, CheckAndMutateRow and ReadModifyWriteRow requests are allowed by this app profile.\nIt is unsafe to send these requests to the same table/row/column in multiple clusters.","description_kind":"plain","optional":true},"cluster_id":{"type":"string","description":"The cluster to which read/write requests should be routed.","description_kind":"plain","required":true}},"description":"Use a single-cluster routing policy.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_bigtable_gc_policy":{"version":0,"block":{"attributes":{"column_family":{"type":"string","description":"The name of the column family.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name":{"type":"string","description":"The name of the Bigtable instance.","description_kind":"plain","required":true},"mode":{"type":"string","description":"If multiple policies are set, you should choose between UNION OR INTERSECTION.","description_kind":"plain","optional":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"table":{"type":"string","description":"The name of the table.","description_kind":"plain","required":true}},"block_types":{"max_age":{"nesting_mode":"list","block":{"attributes":{"days":{"type":"number","description":"Number of days before applying GC policy.","description_kind":"plain","deprecated":true,"optional":true,"computed":true},"duration":{"type":"string","description":"Duration before applying GC policy","description_kind":"plain","optional":true,"computed":true}},"description":"GC policy that applies to all cells older than the given age.","description_kind":"plain"},"max_items":1},"max_version":{"nesting_mode":"list","block":{"attributes":{"number":{"type":"number","description":"Number of version before applying the GC policy.","description_kind":"plain","required":true}},"description":"GC policy that applies to all versions of a cell except for the most recent.","description_kind":"plain"}}},"description_kind":"plain"}},"google_bigtable_instance":{"version":1,"block":{"attributes":{"deletion_protection":{"type":"bool","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.","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"The human-readable display name of the Bigtable instance. Defaults to the instance name.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_type":{"type":"string","description":"The instance type to create. One of \"DEVELOPMENT\" or \"PRODUCTION\". Defaults to \"PRODUCTION\".","description_kind":"plain","deprecated":true,"optional":true},"labels":{"type":["map","string"],"description":"A mapping of labels to assign to the resource.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name (also called Instance Id in the Cloud Console) of the Cloud Bigtable instance.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"cluster":{"nesting_mode":"list","block":{"attributes":{"cluster_id":{"type":"string","description":"The ID of the Cloud Bigtable cluster.","description_kind":"plain","required":true},"num_nodes":{"type":"number","description":"The number of nodes in your Cloud Bigtable cluster. Required, with a minimum of 1 for a PRODUCTION instance. Must be left unset for a DEVELOPMENT instance.","description_kind":"plain","optional":true,"computed":true},"storage_type":{"type":"string","description":"The storage type to use. One of \"SSD\" or \"HDD\". Defaults to \"SSD\".","description_kind":"plain","optional":true},"zone":{"type":"string","description":"The zone to create the Cloud Bigtable cluster in. Each cluster must have a different zone in the same region. Zones that support Bigtable instances are noted on the Cloud Bigtable locations page.","description_kind":"plain","optional":true,"computed":true}},"description":"A block of cluster configuration options. This can be specified at least once.","description_kind":"plain"}}},"description_kind":"plain"}},"google_bigtable_instance_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description_kind":"plain","required":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigtable_instance_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description_kind":"plain","required":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigtable_instance_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description_kind":"plain","required":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_bigtable_table":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name":{"type":"string","description":"The name of the Bigtable instance.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the table.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"split_keys":{"type":["list","string"],"description":"A list of predefined keys to split the table on. !\u003e Warning: Modifying the split_keys of an existing table will cause Terraform to delete/recreate the entire google_bigtable_table resource.","description_kind":"plain","optional":true}},"block_types":{"column_family":{"nesting_mode":"set","block":{"attributes":{"family":{"type":"string","description":"The name of the column family.","description_kind":"plain","required":true}},"description":"A group of columns within a table which share a common configuration. This can be specified multiple times.","description_kind":"plain"}}},"description_kind":"plain"}},"google_bigtable_table_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description_kind":"plain","required":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"table":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigtable_table_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description_kind":"plain","required":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"table":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_bigtable_table_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description_kind":"plain","required":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"table":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"google_billing_account_iam_binding":{"version":0,"block":{"attributes":{"billing_account_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_billing_account_iam_member":{"version":0,"block":{"attributes":{"billing_account_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_billing_account_iam_policy":{"version":0,"block":{"attributes":{"billing_account_id":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"google_billing_budget":{"version":0,"block":{"attributes":{"billing_account":{"type":"string","description":"ID of the billing account to set a budget on.","description_kind":"plain","required":true},"display_name":{"type":"string","description":"User data for display name in UI. Must be \u003c= 60 chars.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Resource name of the budget. The resource name\nimplies the scope of a budget. Values are of the form\nbillingAccounts/{billingAccountId}/budgets/{budgetId}.","description_kind":"plain","computed":true}},"block_types":{"all_updates_rule":{"nesting_mode":"list","block":{"attributes":{"disable_default_iam_recipients":{"type":"bool","description":"Boolean. When set to true, disables default notifications sent\nwhen a threshold is exceeded. Default recipients are\nthose with Billing Account Administrators and Billing\nAccount Users IAM roles for the target account.","description_kind":"plain","optional":true},"monitoring_notification_channels":{"type":["list","string"],"description":"The full resource name of a monitoring notification\nchannel in the form\nprojects/{project_id}/notificationChannels/{channel_id}.\nA maximum of 5 channels are allowed.","description_kind":"plain","optional":true},"pubsub_topic":{"type":"string","description":"The name of the Cloud Pub/Sub topic where budget related\nmessages will be published, in the form\nprojects/{project_id}/topics/{topic_id}. Updates are sent\nat regular intervals to the topic.","description_kind":"plain","optional":true},"schema_version":{"type":"string","description":"The schema version of the notification. Only \"1.0\" is\naccepted. It represents the JSON schema as defined in\nhttps://cloud.google.com/billing/docs/how-to/budgets#notification_format.","description_kind":"plain","optional":true}},"description":"Defines notifications that are sent on every update to the\nbilling account's spend, regardless of the thresholds defined\nusing threshold rules.","description_kind":"plain"},"max_items":1},"amount":{"nesting_mode":"list","block":{"attributes":{"last_period_amount":{"type":"bool","description":"Configures a budget amount that is automatically set to 100% of\nlast period's spend.\nBoolean. Set value to true to use. Do not set to false, instead\nuse the 'specified_amount' block.","description_kind":"plain","optional":true}},"block_types":{"specified_amount":{"nesting_mode":"list","block":{"attributes":{"currency_code":{"type":"string","description":"The 3-letter currency code defined in ISO 4217.","description_kind":"plain","optional":true,"computed":true},"nanos":{"type":"number","description":"Number of nano (10^-9) units of the amount.\nThe value must be between -999,999,999 and +999,999,999\ninclusive. If units is positive, nanos must be positive or\nzero. If units is zero, nanos can be positive, zero, or\nnegative. If units is negative, nanos must be negative or\nzero. For example $-1.75 is represented as units=-1 and\nnanos=-750,000,000.","description_kind":"plain","optional":true},"units":{"type":"string","description":"The whole units of the amount. For example if currencyCode\nis \"USD\", then 1 unit is one US dollar.","description_kind":"plain","optional":true}},"description":"A specified amount to use as the budget. currencyCode is\noptional. If specified, it must match the currency of the\nbilling account. The currencyCode is provided on output.","description_kind":"plain"},"max_items":1}},"description":"The budgeted amount for each usage period.","description_kind":"plain"},"min_items":1,"max_items":1},"budget_filter":{"nesting_mode":"list","block":{"attributes":{"credit_types":{"type":["list","string"],"description":"A set of subaccounts of the form billingAccounts/{account_id},\nspecifying that usage from only this set of subaccounts should\nbe included in the budget. If a subaccount is set to the name of\nthe parent account, usage from the parent account will be included.\nIf the field is omitted, the report will include usage from the parent\naccount and all subaccounts, if they exist.","description_kind":"plain","optional":true,"computed":true},"credit_types_treatment":{"type":"string","description":"Specifies how credits should be treated when determining spend\nfor threshold calculations. Default value: \"INCLUDE_ALL_CREDITS\" Possible values: [\"INCLUDE_ALL_CREDITS\", \"EXCLUDE_ALL_CREDITS\", \"INCLUDE_SPECIFIED_CREDITS\"]","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description":"A single label and value pair specifying that usage from only\nthis set of labeled resources should be included in the budget.","description_kind":"plain","optional":true,"computed":true},"projects":{"type":["list","string"],"description":"A set of projects of the form projects/{project_number},\nspecifying that usage from only this set of projects should be\nincluded in the budget. If omitted, the report will include\nall usage for the billing account, regardless of which project\nthe usage occurred on.","description_kind":"plain","optional":true},"services":{"type":["list","string"],"description":"A set of services of the form services/{service_id},\nspecifying that usage from only this set of services should be\nincluded in the budget. If omitted, the report will include\nusage for all the services. The service names are available\nthrough the Catalog API:\nhttps://cloud.google.com/billing/v1/how-tos/catalog-api.","description_kind":"plain","optional":true,"computed":true},"subaccounts":{"type":["list","string"],"description":"A set of subaccounts of the form billingAccounts/{account_id},\nspecifying that usage from only this set of subaccounts should\nbe included in the budget. If a subaccount is set to the name of\nthe parent account, usage from the parent account will be included.\nIf the field is omitted, the report will include usage from the parent\naccount and all subaccounts, if they exist.","description_kind":"plain","optional":true,"computed":true}},"description":"Filters that define which resources are used to compute the actual\nspend against the budget.","description_kind":"plain"},"max_items":1},"threshold_rules":{"nesting_mode":"list","block":{"attributes":{"spend_basis":{"type":"string","description":"The type of basis used to determine if spend has passed\nthe threshold. Default value: \"CURRENT_SPEND\" Possible values: [\"CURRENT_SPEND\", \"FORECASTED_SPEND\"]","description_kind":"plain","optional":true},"threshold_percent":{"type":"number","description":"Send an alert when this threshold is exceeded. This is a\n1.0-based percentage, so 0.5 = 50%. Must be \u003e= 0.","description_kind":"plain","required":true}},"description":"Rules that trigger alerts (notifications of thresholds being\ncrossed) when spend exceeds the specified percentages of the\nbudget.","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_billing_subaccount":{"version":0,"block":{"attributes":{"billing_account_id":{"type":"string","description_kind":"plain","computed":true},"deletion_policy":{"type":"string","description_kind":"plain","optional":true},"display_name":{"type":"string","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"master_billing_account":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","computed":true},"open":{"type":"bool","description_kind":"plain","computed":true}},"description_kind":"plain"}},"google_binary_authorization_attestor":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A descriptive comment. This field may be updated. The field may be\ndisplayed in chooser dialogs.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The resource name.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"attestation_authority_note":{"nesting_mode":"list","block":{"attributes":{"delegation_service_account_email":{"type":"string","description":"This field will contain the service account email address that\nthis Attestor will use as the principal when querying Container\nAnalysis. Attestor administrators must grant this service account\nthe IAM role needed to read attestations from the noteReference in\nContainer Analysis (containeranalysis.notes.occurrences.viewer).\nThis email address is fixed for the lifetime of the Attestor, but\ncallers should not make any other assumptions about the service\naccount email; future versions may use an email based on a\ndifferent naming pattern.","description_kind":"plain","computed":true},"note_reference":{"type":"string","description":"The resource name of a ATTESTATION_AUTHORITY Note, created by the\nuser. If the Note is in a different project from the Attestor, it\nshould be specified in the format 'projects/*/notes/*' (or the legacy\n'providers/*/notes/*'). This field may not be updated.\nAn attestation by this attestor is stored as a Container Analysis\nATTESTATION_AUTHORITY Occurrence that names a container image\nand that links to this Note.","description_kind":"plain","required":true}},"block_types":{"public_keys":{"nesting_mode":"list","block":{"attributes":{"ascii_armored_pgp_public_key":{"type":"string","description":"ASCII-armored representation of a PGP public key, as the\nentire output by the command\n'gpg --export --armor foo@example.com' (either LF or CRLF\nline endings). When using this field, id should be left\nblank. The BinAuthz API handlers will calculate the ID\nand fill it in automatically. BinAuthz computes this ID\nas the OpenPGP RFC4880 V4 fingerprint, represented as\nupper-case hex. If id is provided by the caller, it will\nbe overwritten by the API-calculated ID.","description_kind":"plain","optional":true},"comment":{"type":"string","description":"A descriptive comment. This field may be updated.","description_kind":"plain","optional":true},"id":{"type":"string","description":"The ID of this public key. Signatures verified by BinAuthz\nmust include the ID of the public key that can be used to\nverify them, and that ID must match the contents of this\nfield exactly. Additional restrictions on this field can\nbe imposed based on which public key type is encapsulated.\nSee the documentation on publicKey cases below for details.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"pkix_public_key":{"nesting_mode":"list","block":{"attributes":{"public_key_pem":{"type":"string","description":"A PEM-encoded public key, as described in\n'https://tools.ietf.org/html/rfc7468#section-13'","description_kind":"plain","optional":true},"signature_algorithm":{"type":"string","description":"The signature algorithm used to verify a message against\na signature using this key. These signature algorithm must\nmatch the structure and any object identifiers encoded in\npublicKeyPem (i.e. this algorithm must match that of the\npublic key).","description_kind":"plain","optional":true}},"description":"A raw PKIX SubjectPublicKeyInfo format public key.\n\nNOTE: id may be explicitly provided by the caller when using this\ntype of public key, but it MUST be a valid RFC3986 URI. If id is left\nblank, a default one will be computed based on the digest of the DER\nencoding of the public key.","description_kind":"plain"},"max_items":1}},"description":"Public keys that verify attestations signed by this attestor. This\nfield may be updated.\nIf this field is non-empty, one of the specified public keys must\nverify that an attestation was signed by this attestor for the\nimage specified in the admission request.\nIf this field is empty, this attestor always returns that no valid\nattestations exist.","description_kind":"plain"}}},"description":"A Container Analysis ATTESTATION_AUTHORITY Note, created by the user.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_binary_authorization_attestor_iam_binding":{"version":0,"block":{"attributes":{"attestor":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_binary_authorization_attestor_iam_member":{"version":0,"block":{"attributes":{"attestor":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_binary_authorization_attestor_iam_policy":{"version":0,"block":{"attributes":{"attestor":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_binary_authorization_policy":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A descriptive comment.","description_kind":"plain","optional":true},"global_policy_evaluation_mode":{"type":"string","description":"Controls the evaluation of a Google-maintained global admission policy\nfor common system-level images. Images not covered by the global\npolicy will be subject to the project admission policy. Possible values: [\"ENABLE\", \"DISABLE\"]","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"admission_whitelist_patterns":{"nesting_mode":"list","block":{"attributes":{"name_pattern":{"type":"string","description":"An image name pattern to whitelist, in the form\n'registry/path/to/image'. This supports a trailing * as a\nwildcard, but this is allowed only in text after the registry/\npart.","description_kind":"plain","required":true}},"description":"A whitelist of image patterns to exclude from admission rules. If an\nimage's name matches a whitelist pattern, the image's admission\nrequests will always be permitted regardless of your admission rules.","description_kind":"plain"}},"cluster_admission_rules":{"nesting_mode":"set","block":{"attributes":{"cluster":{"type":"string","description_kind":"plain","required":true},"enforcement_mode":{"type":"string","description":"The action when a pod creation is denied by the admission rule. Possible values: [\"ENFORCED_BLOCK_AND_AUDIT_LOG\", \"DRYRUN_AUDIT_LOG_ONLY\"]","description_kind":"plain","required":true},"evaluation_mode":{"type":"string","description":"How this admission rule will be evaluated. Possible values: [\"ALWAYS_ALLOW\", \"REQUIRE_ATTESTATION\", \"ALWAYS_DENY\"]","description_kind":"plain","required":true},"require_attestations_by":{"type":["set","string"],"description":"The resource names of the attestors that must attest to a\ncontainer image. If the attestor is in a different project from the\npolicy, it should be specified in the format 'projects/*/attestors/*'.\nEach attestor must exist before a policy can reference it. To add an\nattestor to a policy the principal issuing the policy change\nrequest must be able to read the attestor resource.\n\nNote: this field must be non-empty when the evaluation_mode field\nspecifies REQUIRE_ATTESTATION, otherwise it must be empty.","description_kind":"plain","optional":true}},"description":"Per-cluster admission rules. An admission rule specifies either that\nall container images used in a pod creation request must be attested\nto by one or more attestors, that all pod creations will be allowed,\nor that all pod creations will be denied. There can be at most one\nadmission rule per cluster spec.\n\n\nIdentifier format: '{{location}}.{{clusterId}}'.\nA location is either a compute zone (e.g. 'us-central1-a') or a region\n(e.g. 'us-central1').","description_kind":"plain"}},"default_admission_rule":{"nesting_mode":"list","block":{"attributes":{"enforcement_mode":{"type":"string","description":"The action when a pod creation is denied by the admission rule. Possible values: [\"ENFORCED_BLOCK_AND_AUDIT_LOG\", \"DRYRUN_AUDIT_LOG_ONLY\"]","description_kind":"plain","required":true},"evaluation_mode":{"type":"string","description":"How this admission rule will be evaluated. Possible values: [\"ALWAYS_ALLOW\", \"REQUIRE_ATTESTATION\", \"ALWAYS_DENY\"]","description_kind":"plain","required":true},"require_attestations_by":{"type":["set","string"],"description":"The resource names of the attestors that must attest to a\ncontainer image. If the attestor is in a different project from the\npolicy, it should be specified in the format 'projects/*/attestors/*'.\nEach attestor must exist before a policy can reference it. To add an\nattestor to a policy the principal issuing the policy change\nrequest must be able to read the attestor resource.\n\nNote: this field must be non-empty when the evaluation_mode field\nspecifies REQUIRE_ATTESTATION, otherwise it must be empty.","description_kind":"plain","optional":true}},"description":"Default admission rule for a cluster without a per-cluster admission\nrule.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_asset_folder_feed":{"version":0,"block":{"attributes":{"asset_names":{"type":["list","string"],"description":"A list of the full names of the assets to receive updates. You must specify either or both of \nassetNames and assetTypes. Only asset updates matching specified assetNames and assetTypes are\nexported to the feed. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1.\nSee https://cloud.google.com/apis/design/resourceNames#fullResourceName for more info.","description_kind":"plain","optional":true},"asset_types":{"type":["list","string"],"description":"A list of types of the assets to receive updates. You must specify either or both of assetNames\nand assetTypes. Only asset updates matching specified assetNames and assetTypes are exported to\nthe feed. For example: \"compute.googleapis.com/Disk\"\nSee https://cloud.google.com/asset-inventory/docs/supported-asset-types for a list of all\nsupported asset types.","description_kind":"plain","optional":true},"billing_project":{"type":"string","description":"The project whose identity will be used when sending messages to the\ndestination pubsub topic. It also specifies the project for API \nenablement check, quota, and billing.","description_kind":"plain","required":true},"content_type":{"type":"string","description":"Asset content type. If not specified, no content but the asset name and type will be returned. Possible values: [\"CONTENT_TYPE_UNSPECIFIED\", \"RESOURCE\", \"IAM_POLICY\", \"ORG_POLICY\", \"ACCESS_POLICY\"]","description_kind":"plain","optional":true},"feed_id":{"type":"string","description":"This is the client-assigned asset feed identifier and it needs to be unique under a specific parent.","description_kind":"plain","required":true},"folder":{"type":"string","description":"The folder this feed should be created in.","description_kind":"plain","required":true},"folder_id":{"type":"string","description":"The ID of the folder where this feed has been created. Both [FOLDER_NUMBER]\nand folders/[FOLDER_NUMBER] are accepted.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The format will be folders/{folder_number}/feeds/{client-assigned_feed_identifier}.","description_kind":"plain","computed":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"Textual representation of an expression in Common Expression Language syntax.","description_kind":"plain","required":true},"location":{"type":"string","description":"String indicating the location of the expression for error reporting, e.g. a file \nname and a position in the file.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.","description_kind":"plain","optional":true}},"description":"A condition which determines whether an asset update should be published. If specified, an asset\nwill be returned only when the expression evaluates to true. When set, expression field\nmust be a valid CEL expression on a TemporalAsset with name temporal_asset. Example: a Feed with\nexpression \"temporal_asset.deleted == true\" will only publish Asset deletions. Other fields of\ncondition are optional.","description_kind":"plain"},"max_items":1},"feed_output_config":{"nesting_mode":"list","block":{"block_types":{"pubsub_destination":{"nesting_mode":"list","block":{"attributes":{"topic":{"type":"string","description":"Destination on Cloud Pubsub topic.","description_kind":"plain","required":true}},"description":"Destination on Cloud Pubsub.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Output configuration for asset feed destination.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_asset_organization_feed":{"version":0,"block":{"attributes":{"asset_names":{"type":["list","string"],"description":"A list of the full names of the assets to receive updates. You must specify either or both of \nassetNames and assetTypes. Only asset updates matching specified assetNames and assetTypes are\nexported to the feed. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1.\nSee https://cloud.google.com/apis/design/resourceNames#fullResourceName for more info.","description_kind":"plain","optional":true},"asset_types":{"type":["list","string"],"description":"A list of types of the assets to receive updates. You must specify either or both of assetNames\nand assetTypes. Only asset updates matching specified assetNames and assetTypes are exported to\nthe feed. For example: \"compute.googleapis.com/Disk\"\nSee https://cloud.google.com/asset-inventory/docs/supported-asset-types for a list of all\nsupported asset types.","description_kind":"plain","optional":true},"billing_project":{"type":"string","description":"The project whose identity will be used when sending messages to the\ndestination pubsub topic. It also specifies the project for API \nenablement check, quota, and billing.","description_kind":"plain","required":true},"content_type":{"type":"string","description":"Asset content type. If not specified, no content but the asset name and type will be returned. Possible values: [\"CONTENT_TYPE_UNSPECIFIED\", \"RESOURCE\", \"IAM_POLICY\", \"ORG_POLICY\", \"ACCESS_POLICY\"]","description_kind":"plain","optional":true},"feed_id":{"type":"string","description":"This is the client-assigned asset feed identifier and it needs to be unique under a specific parent.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The format will be organizations/{organization_number}/feeds/{client-assigned_feed_identifier}.","description_kind":"plain","computed":true},"org_id":{"type":"string","description":"The organization this feed should be created in.","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"Textual representation of an expression in Common Expression Language syntax.","description_kind":"plain","required":true},"location":{"type":"string","description":"String indicating the location of the expression for error reporting, e.g. a file \nname and a position in the file.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.","description_kind":"plain","optional":true}},"description":"A condition which determines whether an asset update should be published. If specified, an asset\nwill be returned only when the expression evaluates to true. When set, expression field\nmust be a valid CEL expression on a TemporalAsset with name temporal_asset. Example: a Feed with\nexpression \"temporal_asset.deleted == true\" will only publish Asset deletions. Other fields of\ncondition are optional.","description_kind":"plain"},"max_items":1},"feed_output_config":{"nesting_mode":"list","block":{"block_types":{"pubsub_destination":{"nesting_mode":"list","block":{"attributes":{"topic":{"type":"string","description":"Destination on Cloud Pubsub topic.","description_kind":"plain","required":true}},"description":"Destination on Cloud Pubsub.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Output configuration for asset feed destination.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_asset_project_feed":{"version":0,"block":{"attributes":{"asset_names":{"type":["list","string"],"description":"A list of the full names of the assets to receive updates. You must specify either or both of \nassetNames and assetTypes. Only asset updates matching specified assetNames and assetTypes are\nexported to the feed. For example: //compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1.\nSee https://cloud.google.com/apis/design/resourceNames#fullResourceName for more info.","description_kind":"plain","optional":true},"asset_types":{"type":["list","string"],"description":"A list of types of the assets to receive updates. You must specify either or both of assetNames\nand assetTypes. Only asset updates matching specified assetNames and assetTypes are exported to\nthe feed. For example: \"compute.googleapis.com/Disk\"\nSee https://cloud.google.com/asset-inventory/docs/supported-asset-types for a list of all\nsupported asset types.","description_kind":"plain","optional":true},"billing_project":{"type":"string","description":"The project whose identity will be used when sending messages to the\ndestination pubsub topic. It also specifies the project for API \nenablement check, quota, and billing. If not specified, the resource's\nproject will be used.","description_kind":"plain","optional":true},"content_type":{"type":"string","description":"Asset content type. If not specified, no content but the asset name and type will be returned. Possible values: [\"CONTENT_TYPE_UNSPECIFIED\", \"RESOURCE\", \"IAM_POLICY\", \"ORG_POLICY\", \"ACCESS_POLICY\"]","description_kind":"plain","optional":true},"feed_id":{"type":"string","description":"This is the client-assigned asset feed identifier and it needs to be unique under a specific parent.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The format will be projects/{projectNumber}/feeds/{client-assigned_feed_identifier}.","description_kind":"plain","computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of the expression. This is a longer text which describes the expression,\ne.g. when hovered over it in a UI.","description_kind":"plain","optional":true},"expression":{"type":"string","description":"Textual representation of an expression in Common Expression Language syntax.","description_kind":"plain","required":true},"location":{"type":"string","description":"String indicating the location of the expression for error reporting, e.g. a file \nname and a position in the file.","description_kind":"plain","optional":true},"title":{"type":"string","description":"Title for the expression, i.e. a short string describing its purpose.\nThis can be used e.g. in UIs which allow to enter the expression.","description_kind":"plain","optional":true}},"description":"A condition which determines whether an asset update should be published. If specified, an asset\nwill be returned only when the expression evaluates to true. When set, expression field\nmust be a valid CEL expression on a TemporalAsset with name temporal_asset. Example: a Feed with\nexpression \"temporal_asset.deleted == true\" will only publish Asset deletions. Other fields of\ncondition are optional.","description_kind":"plain"},"max_items":1},"feed_output_config":{"nesting_mode":"list","block":{"block_types":{"pubsub_destination":{"nesting_mode":"list","block":{"attributes":{"topic":{"type":"string","description":"Destination on Cloud Pubsub topic.","description_kind":"plain","required":true}},"description":"Destination on Cloud Pubsub.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Output configuration for asset feed destination.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_identity_group":{"version":0,"block":{"attributes":{"create_time":{"type":"string","description":"The time when the Group was created.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An extended description to help users determine the purpose of a Group.\nMust not be longer than 4,096 characters.","description_kind":"plain","optional":true},"display_name":{"type":"string","description":"The display name of the Group.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"The labels that apply to the Group.\n\nMust not contain more than one entry. Must contain the entry\n'cloudidentity.googleapis.com/groups.discussion_forum': '' if the Group is a Google Group or\n'system/groups/external': '' if the Group is an external-identity-mapped group.","description_kind":"plain","required":true},"name":{"type":"string","description":"Resource name of the Group in the format: groups/{group_id}, where group_id\nis the unique ID assigned to the Group.","description_kind":"plain","computed":true},"parent":{"type":"string","description":"The resource name of the entity under which this Group resides in the\nCloud Identity resource hierarchy.\n\nMust be of the form identitysources/{identity_source_id} for external-identity-mapped\ngroups or customers/{customer_id} for Google Groups.","description_kind":"plain","required":true},"update_time":{"type":"string","description":"The time when the Group was last updated.","description_kind":"plain","computed":true}},"block_types":{"group_key":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the entity.\n\nFor Google-managed entities, the id must be the email address of an existing\ngroup or user.\n\nFor external-identity-mapped entities, the id must be a string conforming\nto the Identity Source's requirements.\n\nMust be unique within a namespace.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The namespace in which the entity exists.\n\nIf not specified, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\n\nIf specified, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of 'identitysources/{identity_source_id}'.","description_kind":"plain","optional":true}},"description":"EntityKey of the Group.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_identity_group_membership":{"version":0,"block":{"attributes":{"create_time":{"type":"string","description":"The time when the Membership was created.","description_kind":"plain","computed":true},"group":{"type":"string","description":"The name of the Group to create this membership in.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The resource name of the Membership, of the form groups/{group_id}/memberships/{membership_id}.","description_kind":"plain","computed":true},"type":{"type":"string","description":"The type of the membership.","description_kind":"plain","computed":true},"update_time":{"type":"string","description":"The time when the Membership was last updated.","description_kind":"plain","computed":true}},"block_types":{"preferred_member_key":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"string","description":"The ID of the entity.\n\nFor Google-managed entities, the id must be the email address of an existing\ngroup or user.\n\nFor external-identity-mapped entities, the id must be a string conforming\nto the Identity Source's requirements.\n\nMust be unique within a namespace.","description_kind":"plain","required":true},"namespace":{"type":"string","description":"The namespace in which the entity exists.\n\nIf not specified, the EntityKey represents a Google-managed entity\nsuch as a Google user or a Google Group.\n\nIf specified, the EntityKey represents an external-identity-mapped group.\nThe namespace must correspond to an identity source created in Admin Console\nand must be in the form of 'identitysources/{identity_source_id}'.","description_kind":"plain","optional":true}},"description":"EntityKey of
[2021-03-30T16:04:49.142] [DEBUG] default -  the member.","description_kind":"plain"},"max_items":1},"roles":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the MembershipRole. Must be one of OWNER, MANAGER, MEMBER. Possible values: [\"OWNER\", \"MANAGER\", \"MEMBER\"]","description_kind":"plain","required":true}},"description":"The MembershipRoles that apply to the Membership.\nMust not contain duplicate MembershipRoles with the same name.","description_kind":"plain"},"min_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_run_domain_mapping":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"The location of the cloud run instance. eg us-central1","description_kind":"plain","required":true},"name":{"type":"string","description":"Name should be a verified domain","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"status":{"type":["list",["object",{"conditions":["list",["object",{"message":"string","reason":"string","status":"string","type":"string"}]],"mapped_route_name":"string","observed_generation":"number","resource_records":["list",["object",{"name":"string","rrdata":"string","type":"string"}]]}]],"description":"The current status of the DomainMapping.","description_kind":"plain","computed":true}},"block_types":{"metadata":{"nesting_mode":"list","block":{"attributes":{"annotations":{"type":["map","string"],"description":"Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata. More\ninfo: http://kubernetes.io/docs/user-guide/annotations\n\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf terraform plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.","description_kind":"plain","optional":true,"computed":true},"generation":{"type":"number","description":"A sequence number representing a specific generation of the desired state.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\nMore info: http://kubernetes.io/docs/user-guide/labels","description_kind":"plain","optional":true,"computed":true},"namespace":{"type":"string","description":"In Cloud Run the namespace must be equal to either the\nproject ID or project number.","description_kind":"plain","required":true},"resource_version":{"type":"string","description":"An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n\nMore info:\nhttps://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency","description_kind":"plain","computed":true},"self_link":{"type":"string","description":"SelfLink is a URL representing this object.","description_kind":"plain","computed":true},"uid":{"type":"string","description":"UID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids","description_kind":"plain","computed":true}},"description":"Metadata associated with this DomainMapping.","description_kind":"plain"},"min_items":1,"max_items":1},"spec":{"nesting_mode":"list","block":{"attributes":{"certificate_mode":{"type":"string","description":"The mode of the certificate. Default value: \"AUTOMATIC\" Possible values: [\"NONE\", \"AUTOMATIC\"]","description_kind":"plain","optional":true},"force_override":{"type":"bool","description":"If set, the mapping will override any mapping set before this spec was set.\nIt is recommended that the user leaves this empty to receive an error\nwarning about a potential conflict and only set it once the respective UI\nhas given such a warning.","description_kind":"plain","optional":true},"route_name":{"type":"string","description":"The name of the Cloud Run Service that this DomainMapping applies to.\nThe route must exist.","description_kind":"plain","required":true}},"description":"The spec for this DomainMapping.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_run_service":{"version":1,"block":{"attributes":{"autogenerate_revision_name":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"The location of the cloud run instance. eg us-central1","description_kind":"plain","required":true},"name":{"type":"string","description":"Name must be unique within a namespace, within a Cloud Run region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"status":{"type":["list",["object",{"conditions":["list",["object",{"message":"string","reason":"string","status":"string","type":"string"}]],"latest_created_revision_name":"string","latest_ready_revision_name":"string","observed_generation":"number","url":"string"}]],"description":"The current status of the Service.","description_kind":"plain","computed":true}},"block_types":{"metadata":{"nesting_mode":"list","block":{"attributes":{"annotations":{"type":["map","string"],"description":"Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata. More\ninfo: http://kubernetes.io/docs/user-guide/annotations\n\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf terraform plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.","description_kind":"plain","optional":true,"computed":true},"generation":{"type":"number","description":"A sequence number representing a specific generation of the desired state.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\nMore info: http://kubernetes.io/docs/user-guide/labels","description_kind":"plain","optional":true,"computed":true},"namespace":{"type":"string","description":"In Cloud Run the namespace must be equal to either the\nproject ID or project number.","description_kind":"plain","optional":true,"computed":true},"resource_version":{"type":"string","description":"An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n\nMore info:\nhttps://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency","description_kind":"plain","computed":true},"self_link":{"type":"string","description":"SelfLink is a URL representing this object.","description_kind":"plain","computed":true},"uid":{"type":"string","description":"UID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids","description_kind":"plain","computed":true}},"description":"Metadata associated with this Service, including name, namespace, labels,\nand annotations.","description_kind":"plain"},"max_items":1},"template":{"nesting_mode":"list","block":{"block_types":{"metadata":{"nesting_mode":"list","block":{"attributes":{"annotations":{"type":["map","string"],"description":"Annotations is a key value map stored with a resource that\nmay be set by external tools to store and retrieve arbitrary metadata. More\ninfo: http://kubernetes.io/docs/user-guide/annotations\n\n**Note**: The Cloud Run API may add additional annotations that were not provided in your config.\nIf terraform plan shows a diff where a server-side annotation is added, you can add it to your config\nor apply the lifecycle.ignore_changes rule to the metadata.0.annotations field.","description_kind":"plain","optional":true,"computed":true},"generation":{"type":"number","description":"A sequence number representing a specific generation of the desired state.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand routes.\nMore info: http://kubernetes.io/docs/user-guide/labels","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name must be unique within a namespace, within a Cloud Run region.\nIs required when creating resources. Name is primarily intended\nfor creation idempotence and configuration definition. Cannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names","description_kind":"plain","optional":true,"computed":true},"namespace":{"type":"string","description":"In Cloud Run the namespace must be equal to either the\nproject ID or project number. It will default to the resource's project.","description_kind":"plain","optional":true,"computed":true},"resource_version":{"type":"string","description":"An opaque value that represents the internal version of this object that\ncan be used by clients to determine when objects have changed. May be used\nfor optimistic concurrency, change detection, and the watch operation on a\nresource or set of resources. They may only be valid for a\nparticular resource or set of resources.\n\nMore info:\nhttps://git.k8s.io/community/contributors/devel/api-conventions.md#concurrency-control-and-consistency","description_kind":"plain","computed":true},"self_link":{"type":"string","description":"SelfLink is a URL representing this object.","description_kind":"plain","computed":true},"uid":{"type":"string","description":"UID is a unique id generated by the server on successful creation of a resource and is not\nallowed to change on PUT operations.\n\nMore info: http://kubernetes.io/docs/user-guide/identifiers#uids","description_kind":"plain","computed":true}},"description":"Optional metadata for this Revision, including labels and annotations.\nName will be generated by the Configuration. To set minimum instances\nfor this revision, use the \"autoscaling.knative.dev/minScale\" annotation\nkey (Cloud Run on GKE only). To set maximum instances for this revision, use the\n\"autoscaling.knative.dev/maxScale\" annotation key. To set Cloud SQL\nconnections for the revision, use the \"run.googleapis.com/cloudsql-instances\"\nannotation key.","description_kind":"plain"},"max_items":1},"spec":{"nesting_mode":"list","block":{"attributes":{"container_concurrency":{"type":"number","description":"ContainerConcurrency specifies the maximum allowed in-flight (concurrent)\nrequests per container of the Revision. Values are:\n- '0' thread-safe, the system should manage the max concurrency. This is\n the default value.\n- '1' not-thread-safe. Single concurrency\n- '2-N' thread-safe, max concurrency of N","description_kind":"plain","optional":true,"computed":true},"service_account_name":{"type":"string","description":"Email address of the IAM service account associated with the revision of the\nservice. The service account represents the identity of the running revision,\nand determines what permissions the revision has. If not provided, the revision\nwill use the project's default service account.","description_kind":"plain","optional":true},"serving_state":{"type":"string","description":"ServingState holds a value describing the state the resources\nare in for this Revision.\nIt is expected\nthat the system will manipulate this based on routability and load.","description_kind":"plain","deprecated":true,"computed":true},"timeout_seconds":{"type":"number","description":"TimeoutSeconds holds the max duration the instance is allowed for responding to a request.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"containers":{"nesting_mode":"list","block":{"attributes":{"args":{"type":["list","string"],"description":"Arguments to the entrypoint.\nThe docker image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's\nenvironment. If a variable cannot be resolved, the reference in the input\nstring will be unchanged. The $(VAR_NAME) syntax can be escaped with a\ndouble $$, ie: $$(VAR_NAME). Escaped references will never be expanded,\nregardless of whether the variable exists or not.\nMore info:\nhttps://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell","description_kind":"plain","optional":true},"command":{"type":["list","string"],"description":"Entrypoint array. Not executed within a shell.\nThe docker image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's\nenvironment. If a variable cannot be resolved, the reference in the input\nstring will be unchanged. The $(VAR_NAME) syntax can be escaped with a\ndouble $$, ie: $$(VAR_NAME). Escaped references will never be expanded,\nregardless of whether the variable exists or not.\nMore info:\nhttps://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell","description_kind":"plain","optional":true},"image":{"type":"string","description":"Docker image name. This is most often a reference to a container located\nin the container registry, such as gcr.io/cloudrun/hello\nMore info: https://kubernetes.io/docs/concepts/containers/images","description_kind":"plain","required":true},"working_dir":{"type":"string","description":"Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.","description_kind":"plain","deprecated":true,"optional":true}},"block_types":{"env":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the environment variable.","description_kind":"plain","optional":true},"value":{"type":"string","description":"Variable references $(VAR_NAME) are expanded\nusing the previous defined environment variables in the container and\nany route environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. The $(VAR_NAME)\nsyntax can be escaped with a double $$, ie: $$(VAR_NAME). Escaped\nreferences will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\".","description_kind":"plain","optional":true}},"description":"List of environment variables to set in the container.","description_kind":"plain"}},"env_from":{"nesting_mode":"list","block":{"attributes":{"prefix":{"type":"string","description":"An optional identifier to prepend to each key in the ConfigMap.","description_kind":"plain","optional":true}},"block_types":{"config_map_ref":{"nesting_mode":"list","block":{"attributes":{"optional":{"type":"bool","description":"Specify whether the ConfigMap must be defined","description_kind":"plain","optional":true}},"block_types":{"local_object_reference":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","description_kind":"plain","required":true}},"description":"The ConfigMap to select from.","description_kind":"plain"},"max_items":1}},"description":"The ConfigMap to select from.","description_kind":"plain"},"max_items":1},"secret_ref":{"nesting_mode":"list","block":{"attributes":{"optional":{"type":"bool","description":"Specify whether the Secret must be defined","description_kind":"plain","optional":true}},"block_types":{"local_object_reference":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the referent.\nMore info:\nhttps://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names","description_kind":"plain","required":true}},"description":"The Secret to select from.","description_kind":"plain"},"max_items":1}},"description":"The Secret to select from.","description_kind":"plain"},"max_items":1}},"description":"List of sources to populate environment variables in the container.\nAll invalid keys will be reported as an event when the container is starting.\nWhen a key exists in multiple sources, the value associated with the last source will\ntake precedence. Values defined by an Env with a duplicate key will take\nprecedence.","description_kind":"plain","deprecated":true}},"ports":{"nesting_mode":"list","block":{"attributes":{"container_port":{"type":"number","description":"Port number.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the port.","description_kind":"plain","optional":true},"protocol":{"type":"string","description":"Protocol used on port. Defaults to TCP.","description_kind":"plain","optional":true}},"description":"List of open ports in the container.\nMore Info: \nhttps://cloud.google.com/run/docs/reference/rest/v1/RevisionSpec#ContainerPort","description_kind":"plain"}},"resources":{"nesting_mode":"list","block":{"attributes":{"limits":{"type":["map","string"],"description":"Limits describes the maximum amount of compute resources allowed.\nThe values of the map is string form of the 'quantity' k8s type:\nhttps://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go","description_kind":"plain","optional":true,"computed":true},"requests":{"type":["map","string"],"description":"Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is\nexplicitly specified, otherwise to an implementation-defined value.\nThe values of the map is string form of the 'quantity' k8s type:\nhttps://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/apimachinery/pkg/api/resource/quantity.go","description_kind":"plain","optional":true}},"description":"Compute Resources required by this container. Used to set values such as max memory\nMore info:\nhttps://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#requests-and-limits","description_kind":"plain"},"max_items":1}},"description":"Container defines the unit of execution for this Revision.\nIn the context of a Revision, we disallow a number of the fields of\nthis Container, including: name, ports, and volumeMounts.\nThe runtime contract is documented here:\nhttps://github.com/knative/serving/blob/master/docs/runtime-contract.md","description_kind":"plain"}}},"description":"RevisionSpec holds the desired state of the Revision (from the client).","description_kind":"plain"},"max_items":1}},"description":"template holds the latest specification for the Revision to\nbe stamped out. The template references the container image, and may also\ninclude labels and annotations that should be attached to the Revision.\nTo correlate a Revision, and/or to force a Revision to be created when the\nspec doesn't otherwise change, a nonce label may be provided in the\ntemplate metadata. For more details, see:\nhttps://github.com/knative/serving/blob/master/docs/client-conventions.md#associate-modifications-with-revisions\n\nCloud Run does not currently support referencing a build that is\nresponsible for materializing the container image from source.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"traffic":{"nesting_mode":"list","block":{"attributes":{"latest_revision":{"type":"bool","description":"LatestRevision may be optionally provided to indicate that the latest ready\nRevision of the Configuration should be used for this traffic target. When\nprovided LatestRevision must be true if RevisionName is empty; it must be\nfalse when RevisionName is non-empty.","description_kind":"plain","optional":true},"percent":{"type":"number","description":"Percent specifies percent of the traffic to this Revision or Configuration.","description_kind":"plain","required":true},"revision_name":{"type":"string","description":"RevisionName of a specific revision to which to send this portion of traffic.","description_kind":"plain","optional":true}},"description":"Traffic specifies how to distribute traffic over a collection of Knative Revisions\nand Configurations","description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_run_service_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"service":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_cloud_run_service_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"service":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_cloud_run_service_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"google_cloud_scheduler_job":{"version":0,"block":{"attributes":{"attempt_deadline":{"type":"string","description":"The deadline for job attempts. If the request handler does not respond by this deadline then the request is\ncancelled and the attempt is marked as a DEADLINE_EXCEEDED failure. The failed attempt can be viewed in\nexecution logs. Cloud Scheduler will retry the job according to the RetryConfig.\nThe allowed duration for this deadline is:\n* For HTTP targets, between 15 seconds and 30 minutes.\n* For App Engine HTTP targets, between 15 seconds and 24 hours.\n* **Note**: For PubSub targets, this field is ignored - setting it will introduce an unresolvable diff.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\"","description_kind":"plain","optional":true},"description":{"type":"string","description":"A human-readable description for the job. \nThis string must not contain more than 500 characters.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the job.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where the scheduler job resides. If it is not provided, Terraform will use the provider default.","description_kind":"plain","optional":true,"computed":true},"schedule":{"type":"string","description":"Describes the schedule on which the job will be executed.","description_kind":"plain","optional":true},"time_zone":{"type":"string","description":"Specifies the time zone to be used in interpreting schedule.\nThe value of this field must be a time zone name from the tz database.","description_kind":"plain","optional":true}},"block_types":{"app_engine_http_target":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description":"HTTP request body. \nA request body is allowed only if the HTTP method is POST or PUT. \nIt will result in invalid argument error to set a body on a job with an incompatible HttpMethod.\n\nA base64-encoded string.","description_kind":"plain","optional":true},"headers":{"type":["map","string"],"description":"HTTP request headers.\nThis map contains the header field names and values. \nHeaders can be set when the job is created.","description_kind":"plain","optional":true},"http_method":{"type":"string","description":"Which HTTP method to use for the request.","description_kind":"plain","optional":true},"relative_uri":{"type":"string","description":"The relative URI.\nThe relative URL must begin with \"/\" and must be a valid HTTP relative URL. \nIt can contain a path, query string arguments, and \\# fragments. \nIf the relative URL is empty, then the root path \"/\" will be used. \nNo spaces are allowed, and the maximum length allowed is 2083 characters","description_kind":"plain","required":true}},"block_types":{"app_engine_routing":{"nesting_mode":"list","block":{"attributes":{"instance":{"type":"string","description":"App instance.\nBy default, the job is sent to an instance which is available when the job is attempted.","description_kind":"plain","optional":true},"service":{"type":"string","description":"App service.\nBy default, the job is sent to the service which is the default service when the job is attempted.","description_kind":"plain","optional":true},"version":{"type":"string","description":"App version.\nBy default, the job is sent to the version which is the default version when the job is attempted.","description_kind":"plain","optional":true}},"description":"App Engine Routing setting for the job.","description_kind":"plain"},"max_items":1}},"description":"App Engine HTTP target.\nIf the job providers a App Engine HTTP target the cron will \nsend a request to the service instance","description_kind":"plain"},"max_items":1},"http_target":{"nesting_mode":"list","block":{"attributes":{"body":{"type":"string","description":"HTTP request body. \nA request body is allowed only if the HTTP method is POST, PUT, or PATCH. \nIt is an error to set body on a job with an incompatible HttpMethod.\n\nA base64-encoded string.","description_kind":"plain","optional":true},"headers":{"type":["map","string"],"description":"This map contains the header field names and values. \nRepeated headers are not supported, but a header value can contain commas.","description_kind":"plain","optional":true},"http_method":{"type":"string","description":"Which HTTP method to use for the request.","description_kind":"plain","optional":true},"uri":{"type":"string","description":"The full URI path that the request will be sent to.","description_kind":"plain","required":true}},"block_types":{"oauth_token":{"nesting_mode":"list","block":{"attributes":{"scope":{"type":"string","description":"OAuth scope to be used for generating OAuth access token. If not specified,\n\"https://www.googleapis.com/auth/cloud-platform\" will be used.","description_kind":"plain","optional":true},"service_account_email":{"type":"string","description":"Service account email to be used for generating OAuth token.\nThe service account must be within the same project as the job.","description_kind":"plain","required":true}},"description":"Contains information needed for generating an OAuth token.\nThis type of authorization should be used when sending requests to a GCP endpoint.","description_kind":"plain"},"max_items":1},"oidc_token":{"nesting_mode":"list","block":{"attributes":{"audience":{"type":"string","description":"Audience to be used when generating OIDC token. If not specified,\nthe URI specified in target will be used.","description_kind":"plain","optional":true},"service_account_email":{"type":"string","description":"Service account email to be used for generating OAuth token.\nThe service account must be within the same project as the job.","description_kind":"plain","required":true}},"description":"Contains information needed for generating an OpenID Connect token.\nThis type of authorization should be used when sending requests to third party endpoints or Cloud Run.","description_kind":"plain"},"max_items":1}},"description":"HTTP target.\nIf the job providers a http_target the cron will \nsend a request to the targeted url","description_kind":"plain"},"max_items":1},"pubsub_target":{"nesting_mode":"list","block":{"attributes":{"attributes":{"type":["map","string"],"description":"Attributes for PubsubMessage.\nPubsub message must contain either non-empty data, or at least one attribute.","description_kind":"plain","optional":true},"data":{"type":"string","description":"The message payload for PubsubMessage.\nPubsub message must contain either non-empty data, or at least one attribute.\n\n A base64-encoded string.","description_kind":"plain","optional":true},"topic_name":{"type":"string","description":"The full resource name for the Cloud Pub/Sub topic to which\nmessages will be published when a job is delivered. ~\u003e**NOTE:**\nThe topic name must be in the same format as required by PubSub's\nPublishRequest.name, e.g. 'projects/my-project/topics/my-topic'.","description_kind":"plain","required":true}},"description":"Pub/Sub target\nIf the job providers a Pub/Sub target the cron will publish\na message to the provided topic","description_kind":"plain"},"max_items":1},"retry_config":{"nesting_mode":"list","block":{"attributes":{"max_backoff_duration":{"type":"string","description":"The maximum amount of time to wait before retrying a job after it fails.\nA duration in seconds with up to nine fractional digits, terminated by 's'.","description_kind":"plain","optional":true,"computed":true},"max_doublings":{"type":"number","description":"The time between retries will double maxDoublings times.\nA job's retry interval starts at minBackoffDuration, \nthen doubles maxDoublings times, then increases linearly, \nand finally retries retries at intervals of maxBackoffDuration up to retryCount times.","description_kind":"plain","optional":true,"computed":true},"max_retry_duration":{"type":"string","description":"The time limit for retrying a failed job, measured from time when an execution was first attempted. \nIf specified with retryCount, the job will be retried until both limits are reached.\nA duration in seconds with up to nine fractional digits, terminated by 's'.","description_kind":"plain","optional":true,"computed":true},"min_backoff_duration":{"type":"string","description":"The minimum amount of time to wait before retrying a job after it fails.\nA duration in seconds with up to nine fractional digits, terminated by 's'.","description_kind":"plain","optional":true,"computed":true},"retry_count":{"type":"number","description":"The number of attempts that the system will make to run a \njob using the exponential backoff procedure described by maxDoublings.\nValues greater than 5 and negative values are not allowed.","description_kind":"plain","optional":true,"computed":true}},"description":"By default, if a job does not complete successfully, \nmeaning that an acknowledgement is not received from the handler, \nthen it will be retried with exponential backoff according to the settings","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloud_tasks_queue":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"location":{"type":"string","description":"The location of the queue","description_kind":"plain","required":true},"name":{"type":"string","description":"The queue name.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"app_engine_routing_override":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The host that the task is sent to.","description_kind":"plain","computed":true},"instance":{"type":"string","description":"App instance.\n\nBy default, the task is sent to an instance which is available when the task is attempted.","description_kind":"plain","optional":true},"service":{"type":"string","description":"App service.\n\nBy default, the task is sent to the service which is the default service when the task is attempted.","description_kind":"plain","optional":true},"version":{"type":"string","description":"App version.\n\nBy default, the task is sent to the version which is the default version when the task is attempted.","description_kind":"plain","optional":true}},"description":"Overrides for task-level appEngineRouting. These settings apply only\nto App Engine tasks in this queue","description_kind":"plain"},"max_items":1},"rate_limits":{"nesting_mode":"list","block":{"attributes":{"max_burst_size":{"type":"number","description":"The max burst size.\n\nMax burst size limits how fast tasks in queue are processed when many tasks are\nin the queue and the rate is high. This field allows the queue to have a high\nrate so processing starts shortly after a task is enqueued, but still limits\nresource usage when many tasks are enqueued in a short period of time.","description_kind":"plain","computed":true},"max_concurrent_dispatches":{"type":"number","description":"The maximum number of concurrent tasks that Cloud Tasks allows to\nbe dispatched for this queue. After this threshold has been\nreached, Cloud Tasks stops dispatching tasks until the number of\nconcurrent requests decreases.","description_kind":"plain","optional":true,"computed":true},"max_dispatches_per_second":{"type":"number","description":"The maximum rate at which tasks are dispatched from this queue.\n\nIf unspecified when the queue is created, Cloud Tasks will pick the default.","description_kind":"plain","optional":true,"computed":true}},"description":"Rate limits for task dispatches.\n\nThe queue's actual dispatch rate is the result of:\n\n* Number of tasks in the queue\n* User-specified throttling: rateLimits, retryConfig, and the queue's state.\n* System throttling due to 429 (Too Many Requests) or 503 (Service\n Unavailable) responses from the worker, high error rates, or to\n smooth sudden large traffic spikes.","description_kind":"plain"},"max_items":1},"retry_config":{"nesting_mode":"list","block":{"attributes":{"max_attempts":{"type":"number","description":"Number of attempts per task.\n\nCloud Tasks will attempt the task maxAttempts times (that is, if\nthe first attempt fails, then there will be maxAttempts - 1\nretries). Must be \u003e= -1.\n\nIf unspecified when the queue is created, Cloud Tasks will pick\nthe default.\n\n-1 indicates unlimited attempts.","description_kind":"plain","optional":true,"computed":true},"max_backoff":{"type":"string","description":"A task will be scheduled for retry between minBackoff and\nmaxBackoff duration after it fails, if the queue's RetryConfig\nspecifies that the task should be retried.","description_kind":"plain","optional":true,"computed":true},"max_doublings":{"type":"number","description":"The time between retries will double maxDoublings times.\n\nA task's retry interval starts at minBackoff, then doubles maxDoublings times,\nthen increases linearly, and finally retries retries at intervals of maxBackoff\nup to maxAttempts times.","description_kind":"plain","optional":true,"computed":true},"max_retry_duration":{"type":"string","description":"If positive, maxRetryDuration specifies the time limit for\nretrying a failed task, measured from when the task was first\nattempted. Once maxRetryDuration time has passed and the task has\nbeen attempted maxAttempts times, no further attempts will be\nmade and the task will be deleted.\n\nIf zero, then the task age is unlimited.","description_kind":"plain","optional":true,"computed":true},"min_backoff":{"type":"string","description":"A task will be scheduled for retry between minBackoff and\nmaxBackoff duration after it fails, if the queue's RetryConfig\nspecifies that the task should be retried.","description_kind":"plain","optional":true,"computed":true}},"description":"Settings that determine the retry behavior.","description_kind":"plain"},"max_items":1},"stackdriver_logging_config":{"nesting_mode":"list","block":{"attributes":{"sampling_ratio":{"type":"number","description":"Specifies the fraction of operations to write to Stackdriver Logging.\nThis field may contain any value between 0.0 and 1.0, inclusive. 0.0 is the\ndefault and means that no operations are logged.","description_kind":"plain","required":true}},"description":"Configuration options for writing logs to Stackdriver Logging.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloudbuild_trigger":{"version":1,"block":{"attributes":{"create_time":{"type":"string","description":"Time when the trigger was created.","description_kind":"plain","computed":true},"description":{"type":"string","description":"Human-readable description of the trigger.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"Whether the trigger is disabled or not. If true, the trigger will never result in a build.","description_kind":"plain","optional":true},"filename":{"type":"string","description":"Path, from the source root, to a file whose contents is used for the template. Either a filename or build template must be provided.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ignored_files":{"type":["list","string"],"description":"ignoredFiles and includedFiles are file glob matches using https://golang.org/pkg/path/filepath/#Match\nextended with support for '**'.\n\nIf ignoredFiles and changed files are both empty, then they are not\nused to determine whether or not to trigger a build.\n\nIf ignoredFiles is not empty, then we ignore any files that match any\nof the ignored_file globs. If the change has no files that are outside\nof the ignoredFiles globs, then we do not trigger a build.","description_kind":"plain","optional":true},"included_files":{"type":["list","string"],"description":"ignoredFiles and includedFiles are file glob matches using https://golang.org/pkg/path/filepath/#Match\nextended with support for '**'.\n\nIf any of the files altered in the commit pass the ignoredFiles filter\nand includedFiles is empty, then as far as this filter is concerned, we\nshould trigger the build.\n\nIf any of the files altered in the commit pass the ignoredFiles filter\nand includedFiles is not empty, then we make sure that at least one of\nthose files matches a includedFiles glob. If not, then we do not trigger\na build.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the trigger. Must be unique within the project.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"substitutions":{"type":["map","string"],"description":"Substitutions data for Build resource.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags for annotation of a BuildTrigger","description_kind":"plain","optional":true},"trigger_id":{"type":"string","description":"The unique identifier for the trigger.","description_kind":"plain","computed":true}},"block_types":{"build":{"nesting_mode":"list","block":{"attributes":{"images":{"type":["list","string"],"description":"A list of images to be pushed upon the successful completion of all build steps.\nThe images are pushed using the builder service account's credentials.\nThe digests of the pushed images will be stored in the Build resource's results field.\nIf any of the images fail to be pushed, the build status is marked FAILURE.","description_kind":"plain","optional":true},"logs_bucket":{"type":"string","description":"Google Cloud Storage bucket where logs should be written. \nLogs file names will be of the format ${logsBucket}/log-${build_id}.txt.","description_kind":"plain","optional":true},"queue_ttl":{"type":"string","description":"TTL in queue for this build. If provided and the build is enqueued longer than this value, \nthe build will expire and the build status will be EXPIRED.\nThe TTL starts ticking from createTime.\nA duration in seconds with up to nine fractional digits, terminated by 's'. Example: \"3.5s\".","description_kind":"plain","optional":true},"substitutions":{"type":["map","string"],"description":"Substitutions data for Build resource.","description_kind":"plain","optional":true},"tags":{"type":["list","string"],"description":"Tags for annotation of a Build. These are not docker tags.","description_kind":"plain","optional":true},"timeout":{"type":"string","description":"Amount of time that this build should be allowed to run, to second granularity.\nIf this amount of time elapses, work on the build will cease and the build status will be TIMEOUT.\nThis timeout must be equal to or greater than the sum of the timeouts for build steps within the build.\nThe expected format is the number of seconds followed by s.\nDefault time is ten minutes (600s).","description_kind":"plain","optional":true}},"block_types":{"artifacts":{"nesting_mode":"list","block":{"attributes":{"images":{"type":["list","string"],"description":"A list of images to be pushed upon the successful completion of all build steps.\n\nThe images will be pushed using the builder service account's credentials.\n\nThe digests of the pushed images will be stored in the Build resource's results field.\n\nIf any of the images fail to be pushed, the build is marked FAILURE.","description_kind":"plain","optional":true}},"block_types":{"objects":{"nesting_mode":"list","block":{"attributes":{"location":{"type":"string","description":"Cloud Storage bucket and optional object path, in the form \"gs://bucket/path/to/somewhere/\".\n\nFiles in the workspace matching any path pattern will be uploaded to Cloud Storage with\nthis location as a prefix.","description_kind":"plain","optional":true},"paths":{"type":["list","string"],"description":"Path globs used to match files in the build's workspace.","description_kind":"plain","optional":true},"timing":{"type":["list",["object",{"end_time":"string","start_time":"string"}]],"description":"Output only. Stores timing information for pushing all artifact objects.","description_kind":"plain","computed":true}},"description":"A list of objects to be uploaded to Cloud Storage upon successful completion of all build steps.\n\nFiles in the workspace matching specified paths globs will be uploaded to the\nCloud Storage location using the builder service account's credentials.\n\nThe location and generation of the uploaded objects will be stored in the Build resource's results field.\n\nIf any objects fail to be pushed, the build is marked FAILURE.","description_kind":"plain"},"max_items":1}},"description":"Artifacts produced by the build that should be uploaded upon successful completion of all build steps.","description_kind":"plain"},"max_items":1},"options":{"nesting_mode":"list","block":{"attributes":{"disk_size_gb":{"type":"number","description":"Requested disk size for the VM that runs the build. Note that this is NOT \"disk free\";\nsome of the space will be used by the operating system and build utilities.\nAlso note that this is the minimum disk size that will be allocated for the build --\nthe build may run with a larger disk than requested. At present, the maximum disk size\nis 1000GB; builds that request more than the maximum are rejected with an error.","description_kind":"plain","optional":true},"dynamic_substitutions":{"type":"bool","description":"Option to specify whether or not to apply bash style string operations to the substitutions.\n\nNOTE this is always enabled for triggered builds and cannot be overridden in the build configuration file.","description_kind":"plain","optional":true},"env":{"type":["list","string"],"description":"A list of global environment variable definitions that will exist for all build steps\nin this build. If a variable is defined in both globally and in a build step,\nthe variable will use the build step value.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable \"KEY\" being given the value \"VALUE\".","description_kind":"plain","optional":true},"log_streaming_option":{"type":"string","description":"Option to define build log streaming behavior to Google Cloud Storage. Possible values: [\"STREAM_DEFAULT\", \"STREAM_ON\", \"STREAM_OFF\"]","description_kind":"plain","optional":true},"logging":{"type":"string","description":"Option to specify the logging mode, which determines if and where build logs are stored. Possible values: [\"LOGGING_UNSPECIFIED\", \"LEGACY\", \"GCS_ONLY\", \"STACKDRIVER_ONLY\", \"NONE\"]","description_kind":"plain","optional":true},"machine_type":{"type":"string","description":"Compute Engine machine type on which to run the build. Possible values: [\"UNSPECIFIED\", \"N1_HIGHCPU_8\", \"N1_HIGHCPU_32\"]","description_kind":"plain","optional":true},"requested_verify_option":{"type":"string","description":"Requested verifiability options. Possible values: [\"NOT_VERIFIED\", \"VERIFIED\"]","description_kind":"plain","optional":true},"secret_env":{"type":["list","string"],"description":"A list of global environment variables, which are encrypted using a Cloud Key Management\nService crypto key. These values must be specified in the build's Secret. These variables\nwill be available to all build steps in this build.","description_kind":"plain","optional":true},"source_provenance_hash":{"type":["list","string"],"description":"Requested hash for SourceProvenance. Possible values: [\"NONE\", \"SHA256\", \"MD5\"]","description_kind":"plain","optional":true},"substitution_option":{"type":"string","description":"Option to specify behavior when there is an error in the substitution checks.\n\nNOTE this is always set to ALLOW_LOOSE for triggered builds and cannot be overridden\nin the build configuration file. Possible values: [\"MUST_MATCH\", \"ALLOW_LOOSE\"]","description_kind":"plain","optional":true},"worker_pool":{"type":"string","description":"Option to specify a WorkerPool for the build. Format projects/{project}/workerPools/{workerPool}\n\nThis field is experimental.","description_kind":"plain","optional":true}},"block_types":{"volumes":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for Docker volumes.\nEach named volume must be used by at least two build steps.","description_kind":"plain","optional":true},"path":{"type":"string","description":"Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on the same\nbuild step or with certain reserved volume paths.","description_kind":"plain","optional":true}},"description":"Global list of volumes to mount for ALL build steps\n\nEach volume is created as an empty volume prior to starting the build process.\nUpon completion of the build, volumes and their contents are discarded. Global\nvolume names and paths cannot conflict with the volumes defined a build step.\n\nUsing a global volume in a build with only one step is not valid as it is indicative\nof a build request with an incorrect configuration.","description_kind":"plain"}}},"description":"Special options for this build.","description_kind":"plain"},"max_items":1},"secret":{"nesting_mode":"list","block":{"attributes":{"kms_key_name":{"type":"string","description":"Cloud KMS key name to use to decrypt these envs.","description_kind":"plain","required":true},"secret_env":{"type":["map","string"],"description":"Map of environment variable name to its encrypted value.\nSecret environment variables must be unique across all of a build's secrets, \nand must be used by at least one build step. Values can be at most 64 KB in size. \nThere can be at most 100 secret values across all of a build's secrets.","description_kind":"plain","optional":true}},"description":"Secrets to decrypt using Cloud Key Management Service.","description_kind":"plain"}},"source":{"nesting_mode":"list","block":{"block_types":{"repo_source":{"nesting_mode":"list","block":{"attributes":{"branch_name":{"type":"string","description":"Regex matching branches to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and \ndescribed at https://github.com/google/re2/wiki/Syntax","description_kind":"plain","optional":true},"commit_sha":{"type":"string","description":"Explicit commit SHA to build. Exactly one a of branch name, tag, or commit SHA must be provided.","description_kind":"plain","optional":true},"dir":{"type":"string","description":"Directory, relative to the source root, in which to run the build.\nThis must be a relative path. If a step's dir is specified and is an absolute path, \nthis value is ignored for that step's execution.","description_kind":"plain","optional":true},"invert_regex":{"type":"bool","description":"Only trigger a build if the revision regex does NOT match the revision regex.","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"ID of the project that owns the Cloud Source Repository. \nIf omitted, the project ID requesting the build is assumed.","description_kind":"plain","optional":true},"repo_name":{"type":"string","description":"Name of the Cloud Source Repository.","description_kind":"plain","required":true},"substitutions":{"type":["map","string"],"description":"Substitutions to use in a triggered build. Should only be used with triggers.run","description_kind":"plain","optional":true},"tag_name":{"type":"string","description":"Regex matching tags to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThe syntax of the regular expressions accepted is the syntax accepted by RE2 and \ndescribed at https://github.com/google/re2/wiki/Syntax","description_kind":"plain","optional":true}},"description":"Location of the source in a Google Cloud Source Repository.","description_kind":"plain"},"max_items":1},"storage_source":{"nesting_mode":"list","block":{"attributes":{"bucket":{"type":"string","description":"Google Cloud Storage bucket containing the source.","description_kind":"plain","required":true},"generation":{"type":"string","description":"Google Cloud Storage generation for the object. \nIf the generation is omitted, the latest generation will be used","description_kind":"plain","optional":true},"object":{"type":"string","description":"Google Cloud Storage object containing the source.\nThis object must be a gzipped archive file (.tar.gz) containing source to build.","description_kind":"plain","required":true}},"description":"Location of the source in an archive file in Google Cloud Storage.","description_kind":"plain"},"max_items":1}},"description":"The location of the source files to build.\n\nOne of 'storageSource' or 'repoSource' must be provided.","description_kind":"plain"},"max_items":1},"step":{"nesting_mode":"list","block":{"attributes":{"args":{"type":["list","string"],"description":"A list of arguments that will be presented to the step when it is started.\n\nIf the image used to run the step's container has an entrypoint, the args\nare used as arguments to that entrypoint. If the image does not define an\nentrypoint, the first element in args is used as the entrypoint, and the\nremainder will be used as arguments.","description_kind":"plain","optional":true},"dir":{"type":"string","description":"Working directory to use when running this step's container.\n\nIf this value is a relative path, it is relative to the build's working\ndirectory. If this value is absolute, it may be outside the build's working\ndirectory, in which case the contents of the path may not be persisted\nacross build step executions, unless a 'volume' for that path is specified.\n\nIf the build specifies a 'RepoSource' with 'dir' and a step with a\n'dir',\nwhich specifies an absolute path, the 'RepoSource' 'dir' is ignored\nfor the step's execution.","description_kind":"plain","optional":true},"entrypoint":{"type":"string","description":"Entrypoint to be used instead of the build step image's\ndefault entrypoint.\nIf unset, the image's default entrypoint is used","description_kind":"plain","optional":true},"env":{"type":["list","string"],"description":"A list of environment variable definitions to be used when\nrunning a step.\n\nThe elements are of the form \"KEY=VALUE\" for the environment variable\n\"KEY\" being given the value \"VALUE\".","description_kind":"plain","optional":true},"id":{"type":"string","description":"Unique identifier for this build step, used in 'wait_for' to\nreference this build step as a dependency.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the container image that will run this particular build step.\n\nIf the image is available in the host's Docker daemon's cache, it will be\nrun directly. If not, the host will attempt to pull the image first, using\nthe builder service account's credentials if necessary.\n\nThe Docker daemon's cache will already have the latest versions of all of\nthe officially supported build steps (see https://github.com/GoogleCloudPlatform/cloud-builders \nfor images and examples).\nThe Docker daemon will also have cached many of the layers for some popular\nimages, like \"ubuntu\", \"debian\", but they will be refreshed at the time\nyou attempt to use them.\n\nIf you built an image in a previous build step, it will be stored in the\nhost's Docker daemon's cache and is available to use as the name for a\nlater build step.","description_kind":"plain","required":true},"secret_env":{"type":["list","string"],"description":"A list of environment variables which are encrypted using\na Cloud Key\nManagement Service crypto key. These values must be specified in\nthe build's 'Secret'.","description_kind":"plain","optional":true},"timeout":{"type":"string","description":"Time limit for executing this build step. If not defined,\nthe step has no\ntime limit and will be allowed to continue to run until either it\ncompletes or the build itself times out.","description_kind":"plain","optional":true},"timing":{"type":"string","description":"Output only. Stores timing information for executing this\nbuild step.","description_kind":"plain","optional":true},"wait_for":{"type":["list","string"],"description":"The ID(s) of the step(s) that this build step depends on.\n\nThis build step will not start until all the build steps in 'wait_for'\nhave completed successfully. If 'wait_for' is empty, this build step\nwill start when all previous build steps in the 'Build.Steps' list\nhave completed successfully.","description_kind":"plain","optional":true}},"block_types":{"volumes":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the volume to mount.\n\nVolume names must be unique per build step and must be valid names for\nDocker volumes. Each named volume must be used by at least two build steps.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path at which to mount the volume.\n\nPaths must be absolute and cannot conflict with other volume paths on\nthe same build step or with certain reserved volume paths.","description_kind":"plain","required":true}},"description":"List of volumes to mount into the build step.\n\nEach volume is created as an empty volume prior to execution of the\nbuild step. Upon completion of the build, volumes and their contents\nare discarded.\n\nUsing a named volume in only one step is not valid as it is\nindicative of a build request with an incorrect configuration.","description_kind":"plain"}}},"description":"The operations to be performed on the workspace.","description_kind":"plain"},"min_items":1}},"description":"Contents of the build template. Either a filename or build template must be provided.","description_kind":"plain"},"max_items":1},"github":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the repository. For example: The name for\nhttps://github.com/googlecloudplatform/cloud-builders is \"cloud-builders\".","description_kind":"plain","optional":true},"owner":{"type":"string","description":"Owner of the repository. For example: The owner for\nhttps://github.com/googlecloudplatform/cloud-builders is \"googlecloudplatform\".","description_kind":"plain","optional":true}},"block_types":{"pull_request":{"nesting_mode":"list","block":{"attributes":{"branch":{"type":"string","description":"Regex of branches to match.","description_kind":"plain","required":true},"comment_control":{"type":"string","description":"Whether to block builds on a \"/gcbrun\" comment from a repository owner or collaborator. Possible values: [\"COMMENTS_DISABLED\", \"COMMENTS_ENABLED\", \"COMMENTS_ENABLED_FOR_EXTERNAL_CONTRIBUTORS_ONLY\"]","description_kind":"plain","optional":true},"invert_regex":{"type":"bool","description":"If true, branches that do NOT match the git_ref will trigger a build.","description_kind":"plain","optional":true}},"description":"filter to match changes in pull requests. Specify only one of pullRequest or push.","description_kind":"plain"},"max_items":1},"push":{"nesting_mode":"list","block":{"attributes":{"branch":{"type":"string","description":"Regex of branches to match. Specify only one of branch or tag.","description_kind":"plain","optional":true},"invert_regex":{"type":"bool","description":"When true, only trigger a build if the revision regex does NOT match the git_ref regex.","description_kind":"plain","optional":true},"tag":{"type":"string","description":"Regex of tags to match. Specify only one of branch or tag.","description_kind":"plain","optional":true}},"description":"filter to match changes in refs, like branches or tags. Specify only one of pullRequest or push.","description_kind":"plain"},"max_items":1}},"description":"Describes the configuration of a trigger that creates a build whenever a GitHub event is received.\n\nOne of 'trigger_template' or 'github' must be provided.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"trigger_template":{"nesting_mode":"list","block":{"attributes":{"branch_name":{"type":"string","description":"Name of the branch to build. Exactly one a of branch name, tag, or commit SHA must be provided.\nThis field is a regular expression.","description_kind":"plain","optional":true},"commit_sha":{"type":"string","description":"Explicit commit SHA to build. Exactly one of a branch name, tag, or commit SHA must be provided.","description_kind":"plain","optional":true},"dir":{"type":"string","description":"Directory, relative to the source root, in which to run the build.\n\nThis must be a relative path. If a step's dir is specified and\nis an absolute path, this value is ignored for that step's\nexecution.","description_kind":"plain","optional":true},"invert_regex":{"type":"bool","description":"Only trigger a build if the revision regex does NOT match the revision regex.","description_kind":"plain","optional":true},"project_id":{"type":"string","description":"ID of the project that owns the Cloud Source Repository. If\nomitted, the project ID requesting the build is assumed.","description_kind":"plain","optional":true,"computed":true},"repo_name":{"type":"string","description":"Name of the Cloud Source Repository. If omitted, the name \"default\" is assumed.","description_kind":"plain","optional":true},"tag_name":{"type":"string","description":"Name of the tag to build. Exactly one of a branch name, tag, or commit SHA must be provided.\nThis field is a regular expression.","description_kind":"plain","optional":true}},"description":"Template describing the types of source changes to trigger a build.\n\nBranch and tag names in trigger templates are interpreted as regular\nexpressions. Any branch or tag change that matches that regular\nexpression will trigger a build.\n\nOne of 'trigger_template' or 'github' must be provided.","description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_cloudfunctions_function":{"version":0,"block":{"attributes":{"available_memory_mb":{"type":"number","description":"Memory (in MB), available to the function. Default value is 256MB. Allowed values are: 128MB, 256MB, 512MB, 1024MB, and 2048MB.","description_kind":"plain","optional":true},"build_environment_variables":{"type":["map","string"],"description":" A set of key/value environment variable pairs available during build time.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Description of the function.","description_kind":"plain","optional":true},"entry_point":{"type":"string","description":"Name of the function that will be executed when the Google Cloud Function is triggered.","description_kind":"plain","optional":true},"environment_variables":{"type":["map","string"],"description":"A set of key/value environment variable pairs to assign to the function.","description_kind":"plain","optional":true},"https_trigger_url":{"type":"string","description":"URL which triggers function execution. Returned only if trigger_http is used.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ingress_settings":{"type":"string","description":"String value that controls what traffic can reach the function. Allowed values are ALLOW_ALL and ALLOW_
[2021-03-30T16:04:49.142] [DEBUG] default - INTERNAL_ONLY. Changes to this field will recreate the cloud function.","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs to assign to the function. Label keys must follow the requirements at https://cloud.google.com/resource-manager/docs/creating-managing-labels#requirements.","description_kind":"plain","optional":true},"max_instances":{"type":"number","description":"The limit on the maximum number of function instances that may coexist at a given time.","description_kind":"plain","optional":true},"name":{"type":"string","description":"A user-defined name of the function. Function names must be unique globally.","description_kind":"plain","required":true},"project":{"type":"string","description":"Project of the function. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region of function. Currently can be only \"us-central1\". If it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"runtime":{"type":"string","description":"The runtime in which the function is going to run. Eg. \"nodejs8\", \"nodejs10\", \"python37\", \"go111\".","description_kind":"plain","required":true},"service_account_email":{"type":"string","description":" If provided, the self-provided service account to run the function with.","description_kind":"plain","optional":true,"computed":true},"source_archive_bucket":{"type":"string","description":"The GCS bucket containing the zip archive which contains the function.","description_kind":"plain","optional":true},"source_archive_object":{"type":"string","description":"The source archive object (file) in archive bucket.","description_kind":"plain","optional":true},"timeout":{"type":"number","description":"Timeout (in seconds) for the function. Default value is 60 seconds. Cannot be more than 540 seconds.","description_kind":"plain","optional":true},"trigger_http":{"type":"bool","description":"Boolean variable. Any HTTP request (of a supported type) to the endpoint will trigger function execution. Supported HTTP request types are: POST, PUT, GET, DELETE, and OPTIONS. Endpoint is returned as https_trigger_url. Cannot be used with trigger_bucket and trigger_topic.","description_kind":"plain","optional":true},"vpc_connector":{"type":"string","description":"The VPC Network Connector that this cloud function can connect to. It can be either the fully-qualified URI, or the short name of the network connector resource. The format of this field is projects/*/locations/*/connectors/*.","description_kind":"plain","optional":true},"vpc_connector_egress_settings":{"type":"string","description":"The egress settings for the connector, controlling what traffic is diverted through it. Allowed values are ALL_TRAFFIC and PRIVATE_RANGES_ONLY. Defaults to PRIVATE_RANGES_ONLY. If unset, this field preserves the previously set value.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"event_trigger":{"nesting_mode":"list","block":{"attributes":{"event_type":{"type":"string","description":"The type of event to observe. For example: \"google.storage.object.finalize\". See the documentation on calling Cloud Functions for a full reference of accepted triggers.","description_kind":"plain","required":true},"resource":{"type":"string","description":"The name or partial URI of the resource from which to observe events. For example, \"myBucket\" or \"projects/my-project/topics/my-topic\"","description_kind":"plain","required":true}},"block_types":{"failure_policy":{"nesting_mode":"list","block":{"attributes":{"retry":{"type":"bool","description":"Whether the function should be retried on failure. Defaults to false.","description_kind":"plain","required":true}},"description":"Specifies policy for failed executions","description_kind":"plain"},"max_items":1}},"description":"A source that fires events in response to a condition in another service. Cannot be used with trigger_http.","description_kind":"plain"},"max_items":1},"source_repository":{"nesting_mode":"list","block":{"attributes":{"deployed_url":{"type":"string","description":"The URL pointing to the hosted repository where the function was defined at the time of deployment.","description_kind":"plain","computed":true},"url":{"type":"string","description":"The URL pointing to the hosted repository where the function is defined.","description_kind":"plain","required":true}},"description":"Represents parameters related to source repository where a function is hosted. Cannot be set alongside source_archive_bucket or source_archive_object.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"read":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloudfunctions_function_iam_binding":{"version":0,"block":{"attributes":{"cloud_function":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_cloudfunctions_function_iam_member":{"version":0,"block":{"attributes":{"cloud_function":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_cloudfunctions_function_iam_policy":{"version":0,"block":{"attributes":{"cloud_function":{"type":"string","description_kind":"plain","required":true},"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_cloudiot_device":{"version":0,"block":{"attributes":{"blocked":{"type":"bool","description":"If a device is blocked, connections or requests from this device will fail.","description_kind":"plain","optional":true},"config":{"type":["list",["object",{"binary_data":"string","cloud_update_time":"string","device_ack_time":"string","version":"string"}]],"description":"The most recent device configuration, which is eventually sent from Cloud IoT Core to the device.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"last_config_ack_time":{"type":"string","description":"The last time a cloud-to-device config version acknowledgment was received from the device.","description_kind":"plain","computed":true},"last_config_send_time":{"type":"string","description":"The last time a cloud-to-device config version was sent to the device.","description_kind":"plain","computed":true},"last_error_status":{"type":["list",["object",{"details":["list",["map","string"]],"message":"string","number":"number"}]],"description":"The error message of the most recent error, such as a failure to publish to Cloud Pub/Sub.","description_kind":"plain","computed":true},"last_error_time":{"type":"string","description":"The time the most recent error occurred, such as a failure to publish to Cloud Pub/Sub.","description_kind":"plain","computed":true},"last_event_time":{"type":"string","description":"The last time a telemetry event was received.","description_kind":"plain","computed":true},"last_heartbeat_time":{"type":"string","description":"The last time an MQTT PINGREQ was received.","description_kind":"plain","computed":true},"last_state_time":{"type":"string","description":"The last time a state event was received.","description_kind":"plain","computed":true},"log_level":{"type":"string","description":"The logging verbosity for device activity. Possible values: [\"NONE\", \"ERROR\", \"INFO\", \"DEBUG\"]","description_kind":"plain","optional":true},"metadata":{"type":["map","string"],"description":"The metadata key-value pairs assigned to the device.","description_kind":"plain","optional":true},"name":{"type":"string","description":"A unique name for the resource.","description_kind":"plain","required":true},"num_id":{"type":"string","description":"A server-defined unique numeric ID for the device.\nThis is a more compact way to identify devices, and it is globally unique.","description_kind":"plain","computed":true},"registry":{"type":"string","description":"The name of the device registry where this device should be created.","description_kind":"plain","required":true},"state":{"type":["list",["object",{"binary_data":"string","update_time":"string"}]],"description":"The state most recently received from the device.","description_kind":"plain","computed":true}},"block_types":{"credentials":{"nesting_mode":"list","block":{"attributes":{"expiration_time":{"type":"string","description":"The time at which this credential becomes invalid.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"public_key":{"nesting_mode":"list","block":{"attributes":{"format":{"type":"string","description":"The format of the key. Possible values: [\"RSA_PEM\", \"RSA_X509_PEM\", \"ES256_PEM\", \"ES256_X509_PEM\"]","description_kind":"plain","required":true},"key":{"type":"string","description":"The key data.","description_kind":"plain","required":true}},"description":"A public key used to verify the signature of JSON Web Tokens (JWTs).","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The credentials used to authenticate this device.","description_kind":"plain"},"max_items":3},"gateway_config":{"nesting_mode":"list","block":{"attributes":{"gateway_auth_method":{"type":"string","description":"Indicates whether the device is a gateway. Possible values: [\"ASSOCIATION_ONLY\", \"DEVICE_AUTH_TOKEN_ONLY\", \"ASSOCIATION_AND_DEVICE_AUTH_TOKEN\"]","description_kind":"plain","optional":true},"gateway_type":{"type":"string","description":"Indicates whether the device is a gateway. Default value: \"NON_GATEWAY\" Possible values: [\"GATEWAY\", \"NON_GATEWAY\"]","description_kind":"plain","optional":true},"last_accessed_gateway_id":{"type":"string","description":"The ID of the gateway the device accessed most recently.","description_kind":"plain","computed":true},"last_accessed_gateway_time":{"type":"string","description":"The most recent time at which the device accessed the gateway specified in last_accessed_gateway.","description_kind":"plain","computed":true}},"description":"Gateway-related configuration and state.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_cloudiot_registry":{"version":0,"block":{"attributes":{"http_config":{"type":["map","string"],"description":"Activate or deactivate HTTP.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"log_level":{"type":"string","description":"The default logging verbosity for activity from devices in this\nregistry. Specifies which events should be written to logs. For\nexample, if the LogLevel is ERROR, only events that terminate in\nerrors will be logged. LogLevel is inclusive; enabling INFO logging\nwill also enable ERROR logging. Default value: \"NONE\" Possible values: [\"NONE\", \"ERROR\", \"INFO\", \"DEBUG\"]","description_kind":"plain","optional":true},"mqtt_config":{"type":["map","string"],"description":"Activate or deactivate MQTT.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"A unique name for the resource, required by device registry.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The region in which the created registry should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"state_notification_config":{"type":["map","string"],"description":"A PubSub topic to publish device state updates.","description_kind":"plain","optional":true}},"block_types":{"credentials":{"nesting_mode":"list","block":{"attributes":{"public_key_certificate":{"type":["map","string"],"description":"A public key certificate format and data.","description_kind":"plain","required":true}},"description":"List of public key certificates to authenticate devices.","description_kind":"plain"},"max_items":10},"event_notification_configs":{"nesting_mode":"list","block":{"attributes":{"pubsub_topic_name":{"type":"string","description":"PubSub topic name to publish device events.","description_kind":"plain","required":true},"subfolder_matches":{"type":"string","description":"If the subfolder name matches this string exactly, this\nconfiguration will be used. The string must not include the\nleading '/' character. If empty, all strings are matched. Empty\nvalue can only be used for the last 'event_notification_configs'\nitem.","description_kind":"plain","optional":true}},"description":"List of configurations for event notifications, such as PubSub topics\nto publish device events to.","description_kind":"plain"},"max_items":10},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_composer_environment":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"User-defined labels for this environment. The labels map can contain no more than 64 entries. Entries of the labels map are UTF8 strings that comply with the following restrictions: Label keys must be between 1 and 63 characters long and must conform to the following regular expression: [a-z]([-a-z0-9]*[a-z0-9])?. Label values must be between 0 and 63 characters long and must conform to the regular expression ([a-z]([-a-z0-9]*[a-z0-9])?)?. No more than 64 labels can be associated with a given environment. Both keys and values must be \u003c= 128 bytes in size.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the environment.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The location or Compute Engine region for the environment.","description_kind":"plain","optional":true}},"block_types":{"config":{"nesting_mode":"list","block":{"attributes":{"airflow_uri":{"type":"string","description":"The URI of the Apache Airflow Web UI hosted within this environment.","description_kind":"plain","computed":true},"dag_gcs_prefix":{"type":"string","description":"The Cloud Storage prefix of the DAGs for this environment. Although Cloud Storage objects reside in a flat namespace, a hierarchical file tree can be simulated using '/'-delimited object name prefixes. DAG objects for this environment reside in a simulated directory with this prefix.","description_kind":"plain","computed":true},"gke_cluster":{"type":"string","description":"The Kubernetes Engine cluster used to run this environment.","description_kind":"plain","computed":true},"node_count":{"type":"number","description":"The number of nodes in the Kubernetes Engine cluster that will be used to run this environment.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"node_config":{"nesting_mode":"list","block":{"attributes":{"disk_size_gb":{"type":"number","description":"The disk size in GB used for node VMs. Minimum size is 20GB. If unspecified, defaults to 100GB. Cannot be updated.","description_kind":"plain","optional":true,"computed":true},"ip_allocation_policy":{"type":["list",["object",{"cluster_ipv4_cidr_block":"string","cluster_secondary_range_name":"string","services_ipv4_cidr_block":"string","services_secondary_range_name":"string","use_ip_aliases":"bool"}]],"description":"Configuration for controlling how IPs are allocated in the GKE cluster. Cannot be updated.","description_kind":"plain","optional":true,"computed":true},"machine_type":{"type":"string","description":"The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: \"projects/{project}/zones/{zone}/machineTypes/{machineType}\". Must belong to the enclosing environment's project and region/zone.","description_kind":"plain","optional":true,"computed":true},"network":{"type":"string","description":"The Compute Engine machine type used for cluster instances, specified as a name or relative resource name. For example: \"projects/{project}/zones/{zone}/machineTypes/{machineType}\". Must belong to the enclosing environment's project and region/zone. The network must belong to the environment's project. If unspecified, the \"default\" network ID in the environment's project is used. If a Custom Subnet Network is provided, subnetwork must also be provided.","description_kind":"plain","optional":true,"computed":true},"oauth_scopes":{"type":["set","string"],"description":"The set of Google API scopes to be made available on all node VMs. Cannot be updated. If empty, defaults to [\"https://www.googleapis.com/auth/cloud-platform\"].","description_kind":"plain","optional":true,"computed":true},"service_account":{"type":"string","description":"The Google Cloud Platform Service Account to be used by the node VMs. If a service account is not specified, the \"default\" Compute Engine service account is used. Cannot be updated. If given, note that the service account must have roles/composer.worker for any GCP resources created under the Cloud Composer Environment.","description_kind":"plain","optional":true,"computed":true},"subnetwork":{"type":"string","description":"The Compute Engine subnetwork to be used for machine communications, , specified as a self-link, relative resource name (e.g. \"projects/{project}/regions/{region}/subnetworks/{subnetwork}\"), or by name. If subnetwork is provided, network must also be provided and the subnetwork must belong to the enclosing environment's project and region.","description_kind":"plain","optional":true},"tags":{"type":["set","string"],"description":"The list of instance tags applied to all node VMs. Tags are used to identify valid sources or targets for network firewalls. Each tag within the list must comply with RFC1035. Cannot be updated.","description_kind":"plain","optional":true},"zone":{"type":"string","description":"The Compute Engine zone in which to deploy the VMs running the Apache Airflow software, specified as the zone name or relative resource name (e.g. \"projects/{project}/zones/{zone}\"). Must belong to the enclosing environment's project and region.","description_kind":"plain","required":true}},"description":"The configuration used for the Kubernetes Engine cluster.","description_kind":"plain"},"max_items":1},"private_environment_config":{"nesting_mode":"list","block":{"attributes":{"cloud_sql_ipv4_cidr_block":{"type":"string","description":"The CIDR block from which IP range in tenant project will be reserved for Cloud SQL. Needs to be disjoint from web_server_ipv4_cidr_block.","description_kind":"plain","optional":true,"computed":true},"enable_private_endpoint":{"type":"bool","description":"If true, access to the public endpoint of the GKE cluster is denied.","description_kind":"plain","optional":true},"master_ipv4_cidr_block":{"type":"string","description":"The IP range in CIDR notation to use for the hosted master network. This range is used for assigning internal IP addresses to the cluster master or set of masters and to the internal load balancer virtual IP. This range must not overlap with any other ranges in use within the cluster's network. If left blank, the default value of '172.16.0.0/28' is used.","description_kind":"plain","optional":true},"web_server_ipv4_cidr_block":{"type":"string","description":"The CIDR block from which IP range for web server will be reserved. Needs to be disjoint from master_ipv4_cidr_block and cloud_sql_ipv4_cidr_block.","description_kind":"plain","optional":true,"computed":true}},"description":"The configuration used for the Private IP Cloud Composer environment.","description_kind":"plain"},"max_items":1},"software_config":{"nesting_mode":"list","block":{"attributes":{"airflow_config_overrides":{"type":["map","string"],"description":"Apache Airflow configuration properties to override. Property keys contain the section and property names, separated by a hyphen, for example \"core-dags_are_paused_at_creation\". Section names must not contain hyphens (\"-\"), opening square brackets (\"[\"), or closing square brackets (\"]\"). The property name must not be empty and cannot contain \"=\" or \";\". Section and property names cannot contain characters: \".\" Apache Airflow configuration property names must be written in snake_case. Property values can contain any character, and can be written in any lower/upper case format. Certain Apache Airflow configuration property values are blacklisted, and cannot be overridden.","description_kind":"plain","optional":true},"env_variables":{"type":["map","string"],"description":"Additional environment variables to provide to the Apache Airflow scheduler, worker, and webserver processes. Environment variable names must match the regular expression [a-zA-Z_][a-zA-Z0-9_]*. They cannot specify Apache Airflow software configuration overrides (they cannot match the regular expression AIRFLOW__[A-Z0-9_]+__[A-Z0-9_]+), and they cannot match any of the following reserved names: AIRFLOW_HOME C_FORCE_ROOT CONTAINER_NAME DAGS_FOLDER GCP_PROJECT GCS_BUCKET GKE_CLUSTER_NAME SQL_DATABASE SQL_INSTANCE SQL_PASSWORD SQL_PROJECT SQL_REGION SQL_USER.","description_kind":"plain","optional":true},"image_version":{"type":"string","description":"The version of the software running in the environment. This encapsulates both the version of Cloud Composer functionality and the version of Apache Airflow. It must match the regular expression composer-[0-9]+\\.[0-9]+(\\.[0-9]+)?-airflow-[0-9]+\\.[0-9]+(\\.[0-9]+.*)?. The Cloud Composer portion of the version is a semantic version. The portion of the image version following 'airflow-' is an official Apache Airflow repository release name. See documentation for allowed release names.","description_kind":"plain","optional":true,"computed":true},"pypi_packages":{"type":["map","string"],"description":"Custom Python Package Index (PyPI) packages to be installed in the environment. Keys refer to the lowercase package name (e.g. \"numpy\"). Values are the lowercase extras and version specifier (e.g. \"==1.12.0\", \"[devel,gcp_api]\", \"[devel]\u003e=1.8.2, \u003c1.9.2\"). To specify a package without pinning it to a version specifier, use the empty string as the value.","description_kind":"plain","optional":true},"python_version":{"type":"string","description":"The major version of Python used to run the Apache Airflow scheduler, worker, and webserver processes. Can be set to '2' or '3'. If not specified, the default is '2'. Cannot be updated.","description_kind":"plain","optional":true,"computed":true}},"description":"The configuration settings for software inside the environment.","description_kind":"plain"},"max_items":1}},"description":"Configuration parameters for this environment.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_address":{"version":0,"block":{"attributes":{"address":{"type":"string","description":"The static external IP address represented by this resource. Only\nIPv4 is supported. An address may only be specified for INTERNAL\naddress types. The IP address must be inside the specified subnetwork,\nif any.","description_kind":"plain","optional":true,"computed":true},"address_type":{"type":"string","description":"The type of address to reserve. Default value: \"EXTERNAL\" Possible values: [\"INTERNAL\", \"EXTERNAL\"]","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?'\nwhich means the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"network_tier":{"type":"string","description":"The networking tier used for configuring this address. If this field is not\nspecified, it is assumed to be PREMIUM. Possible values: [\"PREMIUM\", \"STANDARD\"]","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"purpose":{"type":"string","description":"The purpose of this resource, which can be one of the following values:\n\n* GCE_ENDPOINT for addresses that are used by VM instances, alias IP ranges, internal load balancers, and similar resources.\n\n* SHARED_LOADBALANCER_VIP for an address that can be used by multiple internal load balancers.\n\n* VPC_PEERING for addresses that are reserved for VPC peer networks.\n\nThis should only be set when using an Internal address. Possible values: [\"GCE_ENDPOINT\", \"VPC_PEERING\", \"SHARED_LOADBALANCER_VIP\"]","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The Region in which the created address should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"subnetwork":{"type":"string","description":"The URL of the subnetwork in which to reserve the address. If an IP\naddress is specified, it must be within the subnetwork's IP range.\nThis field can only be used with INTERNAL type with\nGCE_ENDPOINT/DNS_RESOLVER purposes.","description_kind":"plain","optional":true,"computed":true},"users":{"type":["list","string"],"description":"The URLs of the resources that are using this address.","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_attached_disk":{"version":0,"block":{"attributes":{"device_name":{"type":"string","description":"Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance. If not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine.","description_kind":"plain","optional":true,"computed":true},"disk":{"type":"string","description":"name or self_link of the disk that will be attached.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description":"name or self_link of the compute instance that the disk will be attached to. If the self_link is provided then zone and project are extracted from the self link. If only the name is used then zone and project must be defined as properties on the resource or provider.","description_kind":"plain","required":true},"mode":{"type":"string","description":"The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.","description_kind":"plain","optional":true},"project":{"type":"string","description":"The project that the referenced compute instance is a part of. If instance is referenced by its self_link the project defined in the link will take precedence.","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description":"The zone that the referenced compute instance is located within. If instance is referenced by its self_link the zone defined in the link will take precedence.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_autoscaler":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. The name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"target":{"type":"string","description":"URL of the managed instance group that this autoscaler will scale.","description_kind":"plain","required":true},"zone":{"type":"string","description":"URL of the zone where the instance group resides.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscaling_policy":{"nesting_mode":"list","block":{"attributes":{"cooldown_period":{"type":"number","description":"The number of seconds that the autoscaler should wait before it\nstarts collecting information from a new instance. This prevents\nthe autoscaler from collecting information when the instance is\ninitializing, during which the collected usage would not be\nreliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of\nnumerous factors. We recommend that you test how long an\ninstance may take to initialize. To do this, create an instance\nand time the startup process.","description_kind":"plain","optional":true},"max_replicas":{"type":"number","description":"The maximum number of instances that the autoscaler can scale up\nto. This is required when creating or updating an autoscaler. The\nmaximum number of replicas should not be lower than minimal number\nof replicas.","description_kind":"plain","required":true},"min_replicas":{"type":"number","description":"The minimum number of replicas that the autoscaler can scale down\nto. This cannot be less than 0. If not provided, autoscaler will\nchoose a default value depending on maximum number of instances\nallowed.","description_kind":"plain","required":true},"mode":{"type":"string","description":"Defines operating mode for this policy. Default value: \"ON\" Possible values: [\"OFF\", \"ONLY_UP\", \"ON\"]","description_kind":"plain","optional":true}},"block_types":{"cpu_utilization":{"nesting_mode":"list","block":{"attributes":{"target":{"type":"number","description":"The target CPU utilization that the autoscaler should maintain.\nMust be a float value in the range (0, 1]. If not specified, the\ndefault is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler\nscales down the number of instances until it reaches the minimum\nnumber of instances you specified or until the average CPU of\nyour instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler\nscales up until it reaches the maximum number of instances you\nspecified or until the average utilization reaches the target\nutilization.","description_kind":"plain","required":true}},"description":"Defines the CPU utilization policy that allows the autoscaler to\nscale based on the average CPU utilization of a managed instance\ngroup.","description_kind":"plain"},"max_items":1},"load_balancing_utilization":{"nesting_mode":"list","block":{"attributes":{"target":{"type":"number","description":"Fraction of backend capacity utilization (set in HTTP(s) load\nbalancing configuration) that autoscaler should maintain. Must\nbe a positive float value. If not defined, the default is 0.8.","description_kind":"plain","required":true}},"description":"Configuration parameters of autoscaling based on a load balancer.","description_kind":"plain"},"max_items":1},"metric":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The identifier (type) of the Stackdriver Monitoring metric.\nThe metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE.","description_kind":"plain","required":true},"target":{"type":"number","description":"The target value of the metric that autoscaler should\nmaintain. This must be a positive value. A utilization\nmetric scales number of virtual machines handling requests\nto increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilizationTarget is\nwww.googleapis.com/compute/instance/network/received_bytes_count.\nThe autoscaler will work to keep this value constant for each\nof the instances.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Defines how target utilization value is expressed for a\nStackdriver Monitoring metric. Possible values: [\"GAUGE\", \"DELTA_PER_SECOND\", \"DELTA_PER_MINUTE\"]","description_kind":"plain","optional":true}},"description":"Configuration parameters of autoscaling based on a custom metric.","description_kind":"plain"}},"scale_in_control":{"nesting_mode":"list","block":{"attributes":{"time_window_sec":{"type":"number","description":"How long back autoscaling should look when computing recommendations\nto include directives regarding slower scale down, as described above.","description_kind":"plain","optional":true}},"block_types":{"max_scaled_in_replicas":{"nesting_mode":"list","block":{"attributes":{"fixed":{"type":"number","description":"Specifies a fixed number of VM instances. This must be a positive\ninteger.","description_kind":"plain","optional":true},"percent":{"type":"number","description":"Specifies a percentage of instances between 0 to 100%, inclusive.\nFor example, specify 80 for 80%.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1}},"description":"Defines scale in controls to reduce the risk of response latency\nand outages due to abrupt scale-in events","description_kind":"plain"},"max_items":1}},"description":"The configuration parameters for the autoscaling algorithm. You can\ndefine one or more of the policies for an autoscaler: cpuUtilization,\ncustomMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based\non cpuUtilization to 0.6 or 60%.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_backend_bucket":{"version":0,"block":{"attributes":{"bucket_name":{"type":"string","description":"Cloud Storage bucket name.","description_kind":"plain","required":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional textual description of the resource; provided by the\nclient when the resource is created.","description_kind":"plain","optional":true},"enable_cdn":{"type":"bool","description":"If true, enable Cloud CDN for this BackendBucket.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"cdn_policy":{"nesting_mode":"list","block":{"attributes":{"signed_url_cache_max_age_sec":{"type":"number","description":"Maximum number of seconds the response to a signed URL request will\nbe considered fresh. After this time period,\nthe response will be revalidated before being served.\nWhen serving responses to signed URL requests,\nCloud CDN will internally behave as though\nall responses from this backend had a \"Cache-Control: public,\nmax-age=[TTL]\" header, regardless of any existing Cache-Control\nheader. The actual headers served in responses will not be altered.","description_kind":"plain","optional":true}},"description":"Cloud CDN configuration for this Backend Bucket.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_backend_bucket_signed_url_key":{"version":0,"block":{"attributes":{"backend_bucket":{"type":"string","description":"The backend bucket this signed URL key belongs.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key_value":{"type":"string","description":"128-bit key value used for signing the URL. The key value must be a\nvalid RFC 4648 Section 5 base64url encoded string.","description_kind":"plain","required":true,"sensitive":true},"name":{"type":"string","description":"Name of the signed URL key.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_backend_service":{"version":1,"block":{"attributes":{"affinity_cookie_ttl_sec":{"type":"number","description":"Lifetime of cookies in seconds if session_affinity is\nGENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts\nonly until the end of the browser session (or equivalent). The\nmaximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.","description_kind":"plain","optional":true},"connection_draining_timeout_sec":{"type":"number","description":"Time for which instance will be drained (not accept new\nconnections, but still work to finish started).","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"custom_request_headers":{"type":["set","string"],"description":"Headers that the HTTP/S load balancer should add to proxied\nrequests.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"enable_cdn":{"type":"bool","description":"If true, enable Cloud CDN for this BackendService.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. A hash of the contents stored in this\nobject. This field is used in optimistic locking.","description_kind":"plain","computed":true},"health_checks":{"type":["set","string"],"description":"The set of URLs to the HttpHealthCheck or HttpsHealthCheck resource\nfor health checking this BackendService. Currently at most one health\ncheck can be specified.\n\nA health check must be specified unless the backend service uses an internet\nor serverless NEG as a backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"load_balancing_scheme":{"type":"string","description":"Indicates whether the backend service will be used with internal or\nexternal load balancing. A backend service created for one type of\nload balancing cannot be used with the other. Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL_SELF_MANAGED\"]","description_kind":"plain","optional":true},"locality_lb_policy":{"type":"string","description":"The load balancing algorithm used within the scope of the locality.\nThe possible values are -\n\n* ROUND_ROBIN - This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* LEAST_REQUEST - An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* RING_HASH - The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* RANDOM - The load balancer selects a random healthy host.\n\n* ORIGINAL_DESTINATION - Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* MAGLEV - used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\nThis field is applicable only when the load_balancing_scheme is set to\nINTERNAL_SELF_MANAGED. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"port_name":{"type":"string","description":"Name of backend port. The same name should appear in the instance\ngroups referenced by this service. Required when the load balancing\nscheme is EXTERNAL.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"protocol":{"type":"string","description":"The protocol this BackendService uses to communicate with backends.\nThe default is HTTP. **NOTE**: HTTP2 is only valid for beta HTTP/2 load balancer\ntypes and may result in errors if used with the GA API. Possible values: [\"HTTP\", \"HTTPS\", \"HTTP2\", \"TCP\", \"SSL\", \"GRPC\"]","description_kind":"plain","optional":true,"computed":true},"security_policy":{"type":"string","description":"The security policy associated with this backend service.","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"session_affinity":{"type":"string","description":"Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\"]","description_kind":"plain","optional":true,"computed":true},"timeout_sec":{"type":"number","description":"How many seconds to wait for the backend before considering it a\nfailed request. Default is 30 seconds. Valid range is [1, 86400].","description_kind":"plain","optional":true,"computed":true}},"block_types":{"backend":{"nesting_mode":"set","block":{"attributes":{"balancing_mode":{"type":"string","description":"Specifies the balancing mode for this backend.\n\nFor global HTTP(S) or TCP/SSL load balancing, the default is\nUTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S))\nand CONNECTION (for TCP/SSL). Default value: \"UTILIZATION\" Possible values: [\"UTILIZATION\", \"RATE\", \"CONNECTION\"]","description_kind":"plain","optional":true},"capacity_scaler":{"type":"number","description":"A multiplier applied to the group's maximum servicing capacity\n(based on UTILIZATION, RATE or CONNECTION).\n\nDefault value is 1, which means the group will serve up to 100%\nof its configured capacity (depending on balancingMode). A\nsetting of 0 means the group is completely drained, offering\n0% of its available Capacity. Valid range is [0.0,1.0].","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource.\nProvide this property when you create the resource.","description_kind":"plain","optional":true},"group":{"type":"string","description":"The fully-qualified URL of an Instance Group or Network Endpoint\nGroup resource. In case of instance group this defines the list\nof instances that serve traffic. Member virtual machine\ninstances from each instance group must live in the same zone as\nthe instance group itself. No two backends in a backend service\nare allowed to use same Instance Group resource.\n\nFor Network Endpoint Groups this defines list of endpoints. All\nendpoints of Network Endpoint Group must be hosted on instances\nlocated in the same zone as the Network Endpoint Group.\n\nBackend services cannot mix Instance Group and\nNetwork Endpoint Group backends.\n\nNote that you must specify an Instance Group or Network Endpoint\nGroup resource using the fully-qualified URL, rather than a\npartial URL.","description_kind":"plain","required":true},"max_connections":{"type":"number","description":"The max number of simultaneous connections for the group. Can\nbe used with either CONNECTION or UTILIZATION balancing modes.\n\nFor CONNECTION mode, either maxConnections or one\nof maxConnectionsPerInstance or maxConnectionsPerEndpoint,\nas appropriate for group type, must be set.","description_kind":"plain","optional":true},"max_connections_per_endpoint":{"type":"number","description":"The max number of simultaneous connections that a single backend\nnetwork endpoint can handle. This is used to calculate the\ncapacity of the group. Can be used in either CONNECTION or\nUTILIZATION balancing modes.\n\nFor CONNECTION mode, either\nmaxConnections or maxConnectionsPerEndpoint must be set.","description_kind":"plain","optional":true},"max_connections_per_instance":{"type":"number","description":"The max number of simultaneous connections that a single\nbackend instance can handle. This is used to calculate the\ncapacity of the group. Can be used in either CONNECTION or\nUTILIZATION balancing modes.\n\nFor CONNECTION mode, either maxConnections or\nmaxConnectionsPerInstance must be set.","description_kind":"plain","optional":true},"max_rate":{"type":"number","description":"The max requests per second (RPS) of the group.\n\nCan be used with either RATE or UTILIZATION balancing modes,\nbut required if RATE mode. For RATE mode, either maxRate or one\nof maxRatePerInstance or maxRatePerEndpoint, as appropriate for\ngroup type, must be set.","description_kind":"plain","optional":true},"max_rate_per_endpoint":{"type":"number","description":"The max requests per second (RPS) that a single backend network\nendpoint can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerEndpoint must be set.","description_kind":"plain","optional":true},"max_rate_per_instance":{"type":"number","description":"The max requests per second (RPS) that a single backend\ninstance can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerInstance must be set.","description_kind":"plain","optional":true},"max_utilization":{"type":"number","description":"Used when balancingMode is UTILIZATION. This ratio defines the\nCPU utilization target for the group. The default is 0.8. Valid\nrange is [0.0, 1.0].","description_kind":"plain","optional":true}},"description":"The set of backends that serve this BackendService.","description_kind":"plain"}},"cdn_policy":{"nesting_mode":"list","block":{"attributes":{"signed_url_cache_max_age_sec":{"type":"number","description":"Maximum number of seconds the response to a signed URL request\nwill be considered fresh, defaults to 1hr (3600s). After this\ntime period, the response will be revalidated before\nbeing served.\n\nWhen serving responses to signed URL requests, Cloud CDN will\ninternally behave as though all responses from this backend had a\n\"Cache-Control: public, max-age=[TTL]\" header, regardless of any\nexisting Cache-Control header. The actual headers served in\nresponses will not be altered.","description_kind":"plain","optional":true}},"block_types":{"cache_key_policy":{"nesting_mode":"list","block":{"attributes":{"include_host":{"type":"bool","description":"If true requests to different hosts will be cached separately.","description_kind":"plain","optional":true},"include_protocol":{"type":"bool","description":"If true, http and https requests will be cached separately.","description_kind":"plain","optional":true},"include_query_string":{"type":"bool","description":"If true, include query string parameters in the cache key\naccording to query_string_whitelist and\nquery_string_blacklist. If neither is set, the entire query\nstring will be included.\n\nIf false, the query string will be excluded from the cache\nkey entirely.","description_kind":"plain","optional":true},"query_string_blacklist":{"type":["set","string"],"description":"Names of query string parameters to exclude in cache keys.\n\nAll other parameters will be included. Either specify\nquery_string_whitelist or query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.","description_kind":"plain","optional":true},"query_string_whitelist":{"type":["set","string"],"description":"Names of query string parameters to include in cache keys.\n\nAll other parameters will be excluded. Either specify\nquery_string_whitelist or query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.","description_kind":"plain","optional":true}},"description":"The CacheKeyPolicy for this CdnPolicy.","description_kind":"plain"},"max_items":1}},"description":"Cloud CDN configuration for this BackendService.","description_kind":"plain"},"max_items":1},"circuit_breakers":{"nesting_mode":"list","block":{"attributes":{"max_connections":{"type":"number","description":"The maximum number of connections to the backend cluster.\nDefaults to 1024.","description_kind":"plain","optional":true},"max_pending_requests":{"type":"number","description":"The maximum number of pending requests to the backend cluster.\nDefaults to 1024.","description_kind":"plain","optional":true},"max_requests":{"type":"number","description":"The maximum number of parallel requests to the backend cluster.\nDefaults to 1024.","description_kind":"plain","optional":true},"max_requests_per_connection":{"type":"number","description":"Maximum requests for a single backend connection. This parameter\nis respected by both the HTTP/1.1 and HTTP/2 implementations. If\nnot specified, there is no limit. Setting this parameter to 1\nwill effectively disable keep alive.","description_kind":"plain","optional":true},"max_retries":{"type":"number","description":"The maximum number of parallel retries to the backend cluster.\nDefaults to 3.","description_kind":"plain","optional":true}},"description":"Settings controlling the volume of connections to a backend service. This field\nis applicable only when the load_balancing_scheme is set to INTERNAL_SELF_MANAGED.","description_kind":"plain"},"max_items":1},"consistent_hash":{"nesting_mode":"list","block":{"attributes":{"http_header_name":{"type":"string","description":"The hash based on the value of the specified header field.\nThis field is applicable if the sessionAffinity is set to HEADER_FIELD.","description_kind":"plain","optional":true},"minimum_ring_size":{"type":"number","description":"The minimum number of virtual nodes to use for the hash ring.\nLarger ring sizes result in more granular load\ndistributions. If the number of hosts in the load balancing pool\nis larger than the ring size, each host will be assigned a single\nvirtual node.\nDefaults to 1024.","description_kind":"plain","optional":true}},"block_types":{"http_cookie":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the cookie.","description_kind":"plain","optional":true},"path":{"type":"string","description":"Path to set for the cookie.","description_kind":"plain","optional":true}},"block_types":{"ttl":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"number","description":"Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.","description_kind":"plain","required":true}},"description":"Lifetime of the cookie.","description_kind":"plain"},"max_items":1}},"description":"Hash is based on HTTP Cookie. This field describes a HTTP cookie\nthat will be used as the hash key for the consistent hash load\nbalancer. If the cookie is not present, it will be generated.\nThis field is applicable if the sessionAffinity is set to HTTP_COOKIE.","description_kind":"plain"},"max_items":1}},"description":"Consistent Hash-based load balancing can be used to provide soft session\naffinity based on HTTP headers, cookies or other properties. This load balancing\npolicy is applicable only for HTTP connections. The affinity to a particular\ndestination host will be lost when one or more hosts are added/removed from the\ndestination service. This field specifies parameters that control consistent\nhashing. This field only applies if the load_balancing_scheme is set to\nINTERNAL_SELF_MANAGED. This field is only applicable when locality_lb_policy is\nset to MAGLEV or RING_HASH.","description_kind":"plain"},"max_items":1},"iap":{"nesting_mode":"list","block":{"attributes":{"oauth2_client_id":{"type":"string","description":"OAuth2 Client ID for IAP","description_kind":"plain","required":true},"oauth2_client_secret":{"type":"string","description":"OAuth2 Client Secret for IAP","description_kind":"plain","required":true,"sensitive":true},"oauth2_client_secret_sha256":{"type":"string","description":"OAuth2 Client Secret SHA-256 for IAP","description_kind":"plain","computed":true,"sensitive":true}},"description":"Settings for enabling Cloud Identity Aware Proxy","description_kind":"plain"},"max_items":1},"log_config":{"nesting_mode":"list","block":{"attributes":{"enable":{"type":"bool","description":"Whether to enable logging for the load balancer traffic served by this backend service.","description_kind":"plain","optional":true},"sample_rate":{"type":"number","description":"This field can only be specified if logging is enabled for this backend service. The value of\nthe field must be in [0, 1]. This configures the sampling rate of requests to the load balancer\nwhere 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.\nThe default value is 1.0.","description_kind":"plain","optional":true}},"description":"This field denotes the logging options for the load balancer traffic served by this backend service.\nIf logging is enabled, logs will be exported to Stackdriver.","description_kind":"plain"},"max_items":1},"outlier_detection":{"nesting_mode":"list","block":{"attributes":{"consecutive_errors":{"type":"number","description":"Number of errors before a host is ejected from the connection pool. When the\nbackend host is accessed over HTTP, a 5xx return code qualifies as an error.\nDefaults to 5.","description_kind":"plain","optional":true},"consecutive_gateway_failure":{"type":"number","description":"The number of consecutive gateway failures (502, 503, 504 status or connection\nerrors that are mapped to one of those status codes) before a consecutive\ngateway failure ejection occurs. Defaults to 5.","description_kind":"plain","optional":true},"enforcing_consecutive_errors":{"type":"number","description":"The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive 5xx. This setting can be used to disable\nejection or to ramp it up slowly. Defaults to 100.","description_kind":"plain","optional":true},"enforcing_consecutive_gateway_failure":{"type":"number","description":"The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive gateway failures. This setting can be\nused to disable ejection or to ramp it up slowly. Defaults to 0.","description_kind":"plain","optional":true},"enforcing_success_rate":{"type":"number","description":"The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through success rate statistics. This setting can be used to\ndisable ejection or to ramp it up slowly. Defaults to 100.","description_kind":"plain","optional":true},"max_ejection_percent":{"type":"number","description":"Maximum percentage of hosts in the load balancing pool for the backend service\nthat can be ejected. Defaults to 10%.","description_kind":"plain","optional":true},"success_rate_minimum_hosts":{"type":"number","description":"The number of hosts in a cluster that must have enough request volume to detect\nsuccess rate outliers. If the number of hosts is less than this setting, outlier\ndetection via success rate statistics is not performed for any host in the\ncluster. Defaults to 5.","description_kind":"plain","optional":true},"success_rate_request_volume":{"type":"number","description":"The minimum number of total requests that must be collected in one interval (as\ndefined by the interval duration above) to include this host in success rate\nbased outlier detection. If the volume is lower than this setting, outlier\ndetection via success rate statistics is not performed for that host. Defaults\nto 100.","description_kind":"plain","optional":true},"success_rate_stdev_factor":{"type":"number","description":"This factor is used to determine the ejection threshold for success rate outlier\nejection. The ejection threshold is the difference between the mean success\nrate, and the product of this factor and the standard deviation of the mean\nsuccess rate: mean - (stdev * success_rate_stdev_factor). This factor is divided\nby a thousand to get a double. That is, if the desired factor is 1.9, the\nruntime value should be 1900. Defaults to 1900.","description_kind":"plain","optional":true}},"block_types":{"base_ejection_time":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"number","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"The base time that a host is ejected for. The real time is equal to the base\ntime multiplied by the number of times the host has been ejected. Defaults to\n30000ms or 30s.","description_kind":"plain"},"max_items":1},"interval":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"number","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Time interval between ejection sweep analysis. This can result in both new\nejections as well as hosts being returned to service. Defaults to 10 seconds.","
[2021-03-30T16:04:49.143] [DEBUG] default - description_kind":"plain"},"max_items":1}},"description":"Settings controlling eviction of unhealthy hosts from the load balancing pool.\nThis field is applicable only when the load_balancing_scheme is set\nto INTERNAL_SELF_MANAGED.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_backend_service_signed_url_key":{"version":0,"block":{"attributes":{"backend_service":{"type":"string","description":"The backend service this signed URL key belongs.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key_value":{"type":"string","description":"128-bit key value used for signing the URL. The key value must be a\nvalid RFC 4648 Section 5 base64url encoded string.","description_kind":"plain","required":true,"sensitive":true},"name":{"type":"string","description":"Name of the signed URL key.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_disk":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image":{"type":"string","description":"The image from which to initialize this disk. This can be\none of: the image's 'self_link', 'projects/{project}/global/images/{image}',\n'projects/{project}/global/images/family/{family}', 'global/images/{image}',\n'global/images/family/{family}', 'family/{family}', '{project}/{family}',\n'{project}/{image}', '{family}', or '{image}'. If referred by family, the\nimages names must include the family name. If they don't, use the\n[google_compute_image data source](/docs/providers/google/d/compute_image.html).\nFor instance, the image 'centos-6-v20180104' includes its family name 'centos-6'.\nThese images can be referred by family name here.","description_kind":"plain","optional":true},"label_fingerprint":{"type":"string","description":"The fingerprint used for optimistic locking of this resource. Used\ninternally during updates.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Labels to apply to this disk. A list of key-\u003evalue pairs.","description_kind":"plain","optional":true},"last_attach_timestamp":{"type":"string","description":"Last attach timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"last_detach_timestamp":{"type":"string","description":"Last detach timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"physical_block_size_bytes":{"type":"number","description":"Physical block size of the persistent disk, in bytes. If not present\nin a request, a default value is used. Currently supported sizes\nare 4096 and 16384, other sizes may be added in the future.\nIf an unsupported value is requested, the error message will list\nthe supported values for the caller's project.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"size":{"type":"number","description":"Size of the persistent disk, specified in GB. You can specify this\nfield when creating a persistent disk using the 'image' or\n'snapshot' parameter, or specify it alone to create an empty\npersistent disk.\n\nIf you specify this field along with 'image' or 'snapshot',\nthe value must not be less than the size of the image\nor the size of the snapshot.\n\n~\u003e**NOTE** If you change the size, Terraform updates the disk size\nif upsizing is detected but recreates the disk if downsizing is requested.\nYou can add 'lifecycle.prevent_destroy' in the config to prevent destroying\nand recreating.","description_kind":"plain","optional":true,"computed":true},"snapshot":{"type":"string","description":"The source snapshot used to create this disk. You can provide this as\na partial or full URL to the resource. If the snapshot is in another\nproject than this disk, you must supply a full URL. For example, the\nfollowing are valid values:\n\n* 'https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot'\n* 'projects/project/global/snapshots/snapshot'\n* 'global/snapshots/snapshot'\n* 'snapshot'","description_kind":"plain","optional":true},"source_image_id":{"type":"string","description":"The ID value of the image used to create this disk. This value\nidentifies the exact image that was used to create this persistent\ndisk. For example, if you created the persistent disk from an image\nthat was later deleted and recreated under the same name, the source\nimage ID would identify the exact version of the image that was used.","description_kind":"plain","computed":true},"source_snapshot_id":{"type":"string","description":"The unique ID of the snapshot used to create this disk. This value\nidentifies the exact snapshot that was used to create this persistent\ndisk. For example, if you created the persistent disk from a snapshot\nthat was later deleted and recreated under the same name, the source\nsnapshot ID would identify the exact version of the snapshot that was\nused.","description_kind":"plain","computed":true},"type":{"type":"string","description":"URL of the disk type resource describing which disk type to use to\ncreate the disk. Provide this when creating the disk.","description_kind":"plain","optional":true},"users":{"type":["list","string"],"description":"Links to the users of the disk (attached instances) in form:\nproject/zones/zone/instances/instance","description_kind":"plain","computed":true},"zone":{"type":"string","description":"A reference to the zone where the disk resides.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"disk_encryption_key":{"nesting_mode":"list","block":{"attributes":{"kms_key_self_link":{"type":"string","description":"The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n('service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys","description_kind":"plain","optional":true},"kms_key_service_account":{"type":"string","description":"The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.","description_kind":"plain","optional":true},"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true,"sensitive":true},"sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.","description_kind":"plain","computed":true}},"description":"Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must\nprovide the same key if you use the disk later (e.g. to create a disk\nsnapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of\nthe disk.\n\nIf you do not provide an encryption key when creating the disk, then\nthe disk will be encrypted using an automatically generated key and\nyou do not need to provide a key to use the disk later.","description_kind":"plain"},"max_items":1},"source_image_encryption_key":{"nesting_mode":"list","block":{"attributes":{"kms_key_self_link":{"type":"string","description":"The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n('service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys","description_kind":"plain","optional":true},"kms_key_service_account":{"type":"string","description":"The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.","description_kind":"plain","optional":true},"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true},"sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.","description_kind":"plain","computed":true}},"description":"The customer-supplied encryption key of the source image. Required if\nthe source image is protected by a customer-supplied encryption key.","description_kind":"plain"},"max_items":1},"source_snapshot_encryption_key":{"nesting_mode":"list","block":{"attributes":{"kms_key_self_link":{"type":"string","description":"The self link of the encryption key used to encrypt the disk. Also called KmsKeyName\nin the cloud console. Your project's Compute Engine System service account\n('service-{{PROJECT_NUMBER}}@compute-system.iam.gserviceaccount.com') must have\n'roles/cloudkms.cryptoKeyEncrypterDecrypter' to use this feature.\nSee https://cloud.google.com/compute/docs/disks/customer-managed-encryption#encrypt_a_new_persistent_disk_with_your_own_keys","description_kind":"plain","optional":true},"kms_key_service_account":{"type":"string","description":"The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.","description_kind":"plain","optional":true},"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true},"sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.","description_kind":"plain","computed":true}},"description":"The customer-supplied encryption key of the source snapshot. Required\nif the source snapshot is protected by a customer-supplied encryption\nkey.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_disk_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"zone":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_disk_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"zone":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_disk_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_compute_disk_resource_policy_attachment":{"version":0,"block":{"attributes":{"disk":{"type":"string","description":"The name of the disk in which the resource policies are attached to.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The resource policy to be attached to the disk for scheduling snapshot\ncreation. Do not specify the self link.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description":"A reference to the zone where the disk resides.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_external_vpn_gateway":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"redundancy_type":{"type":"string","description":"Indicates the redundancy type of this external VPN gateway Possible values: [\"FOUR_IPS_REDUNDANCY\", \"SINGLE_IP_INTERNALLY_REDUNDANT\", \"TWO_IPS_REDUNDANCY\"]","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"interface":{"nesting_mode":"list","block":{"attributes":{"id":{"type":"number","description":"The numeric ID for this interface. Allowed values are based on the redundancy type\nof this external VPN gateway\n* '0 - SINGLE_IP_INTERNALLY_REDUNDANT'\n* '0, 1 - TWO_IPS_REDUNDANCY'\n* '0, 1, 2, 3 - FOUR_IPS_REDUNDANCY'","description_kind":"plain","optional":true},"ip_address":{"type":"string","description":"IP address of the interface in the external VPN gateway.\nOnly IPv4 is supported. This IP address can be either from\nyour on-premise gateway or another Cloud provider's VPN gateway,\nit cannot be an IP address from Google Compute Engine.","description_kind":"plain","optional":true}},"description":"A list of interfaces on this external VPN gateway.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_firewall":{"version":1,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"destination_ranges":{"type":["set","string"],"description":"If destination ranges are specified, the firewall will apply only to\ntraffic that has destination IP address in these ranges. These ranges\nmust be expressed in CIDR format. Only IPv4 is supported.","description_kind":"plain","optional":true,"computed":true},"direction":{"type":"string","description":"Direction of traffic to which this firewall applies; default is\nINGRESS. Note: For INGRESS traffic, it is NOT supported to specify\ndestinationRanges; For EGRESS traffic, it is NOT supported to specify\nsourceRanges OR sourceTags. Possible values: [\"INGRESS\", \"EGRESS\"]","description_kind":"plain","optional":true,"computed":true},"disabled":{"type":"bool","description":"Denotes whether the firewall rule is disabled, i.e not applied to the\nnetwork it is associated with. When set to true, the firewall rule is\nnot enforced and the network behaves as if it did not exist. If this\nis unspecified, the firewall rule will be enabled.","description_kind":"plain","optional":true},"enable_logging":{"type":"bool","description":"This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported to Stackdriver.","description_kind":"plain","deprecated":true,"optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The name or self_link of the network to attach this firewall to.","description_kind":"plain","required":true},"priority":{"type":"number","description":"Priority for this rule. This is an integer between 0 and 65535, both\ninclusive. When not specified, the value assumed is 1000. Relative\npriorities determine precedence of conflicting rules. Lower value of\npriority implies higher precedence (eg, a rule with priority 0 has\nhigher precedence than a rule with priority 1). DENY rules take\nprecedence over ALLOW rules having equal priority.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"source_ranges":{"type":["set","string"],"description":"If source ranges are specified, the firewall will apply only to\ntraffic that has source IP address in these ranges. These ranges must\nbe expressed in CIDR format. One or both of sourceRanges and\nsourceTags may be set. If both properties are set, the firewall will\napply to traffic that has source IP address within sourceRanges OR the\nsource IP that belongs to a tag listed in the sourceTags property. The\nconnection does not need to match both properties for the firewall to\napply. Only IPv4 is supported.","description_kind":"plain","optional":true,"computed":true},"source_service_accounts":{"type":["set","string"],"description":"If source service accounts are specified, the firewall will apply only\nto traffic originating from an instance with a service account in this\nlist. Source service accounts cannot be used to control traffic to an\ninstance's external IP address because service accounts are associated\nwith an instance, not an IP address. sourceRanges can be set at the\nsame time as sourceServiceAccounts. If both are set, the firewall will\napply to traffic that has source IP address within sourceRanges OR the\nsource IP belongs to an instance with service account listed in\nsourceServiceAccount. The connection does not need to match both\nproperties for the firewall to apply. sourceServiceAccounts cannot be\nused at the same time as sourceTags or targetTags.","description_kind":"plain","optional":true},"source_tags":{"type":["set","string"],"description":"If source tags are specified, the firewall will apply only to traffic\nwith source IP that belongs to a tag listed in source tags. Source\ntags cannot be used to control traffic to an instance's external IP\naddress. Because tags are associated with an instance, not an IP\naddress. One or both of sourceRanges and sourceTags may be set. If\nboth properties are set, the firewall will apply to traffic that has\nsource IP address within sourceRanges OR the source IP that belongs to\na tag listed in the sourceTags property. The connection does not need\nto match both properties for the firewall to apply.","description_kind":"plain","optional":true},"target_service_accounts":{"type":["set","string"],"description":"A list of service accounts indicating sets of instances located in the\nnetwork that may make network connections as specified in allowed[].\ntargetServiceAccounts cannot be used at the same time as targetTags or\nsourceTags. If neither targetServiceAccounts nor targetTags are\nspecified, the firewall rule applies to all instances on the specified\nnetwork.","description_kind":"plain","optional":true},"target_tags":{"type":["set","string"],"description":"A list of instance tags indicating sets of instances located in the\nnetwork that may make network connections as specified in allowed[].\nIf no targetTags are specified, the firewall rule applies to all\ninstances on the specified network.","description_kind":"plain","optional":true}},"block_types":{"allow":{"nesting_mode":"set","block":{"attributes":{"ports":{"type":["list","string"],"description":"An optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].","description_kind":"plain","optional":true},"protocol":{"type":"string","description":"The IP protocol to which this rule applies. The protocol type is\nrequired when creating a firewall rule. This value can either be\none of the following well known protocol strings (tcp, udp,\nicmp, esp, ah, sctp, ipip, all), or the IP protocol number.","description_kind":"plain","required":true}},"description":"The list of ALLOW rules specified by this firewall. Each rule\nspecifies a protocol and port-range tuple that describes a permitted\nconnection.","description_kind":"plain"}},"deny":{"nesting_mode":"set","block":{"attributes":{"ports":{"type":["list","string"],"description":"An optional list of ports to which this rule applies. This field\nis only applicable for UDP or TCP protocol. Each entry must be\neither an integer or a range. If not specified, this rule\napplies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and\n[\"12345-12349\"].","description_kind":"plain","optional":true},"protocol":{"type":"string","description":"The IP protocol to which this rule applies. The protocol type is\nrequired when creating a firewall rule. This value can either be\none of the following well known protocol strings (tcp, udp,\nicmp, esp, ah, sctp, ipip, all), or the IP protocol number.","description_kind":"plain","required":true}},"description":"The list of DENY rules specified by this firewall. Each rule specifies\na protocol and port-range tuple that describes a denied connection.","description_kind":"plain"}},"log_config":{"nesting_mode":"list","block":{"attributes":{"metadata":{"type":"string","description":"This field denotes whether to include or exclude metadata for firewall logs. Possible values: [\"EXCLUDE_ALL_METADATA\", \"INCLUDE_ALL_METADATA\"]","description_kind":"plain","required":true}},"description":"This field denotes the logging options for a particular firewall rule.\nIf defined, logging is enabled, and logs will be exported to Cloud Logging.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_forwarding_rule":{"version":0,"block":{"attributes":{"all_ports":{"type":"bool","description":"For internal TCP/UDP load balancing (i.e. load balancing scheme is\nINTERNAL and protocol is TCP/UDP), set this to true to allow packets\naddressed to any ports to be forwarded to the backends configured\nwith this forwarding rule. Used with backend service. Cannot be set\nif port or portRange are set.","description_kind":"plain","optional":true},"allow_global_access":{"type":"bool","description":"If true, clients can access ILB from all regions.\nOtherwise only allows from the local region the ILB is located at.","description_kind":"plain","optional":true},"backend_service":{"type":"string","description":"A BackendService to receive the matched traffic. This is used only\nfor INTERNAL load balancing.","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_address":{"type":"string","description":"The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing\nscheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding\nrules, the address must be a global IP, and for regional forwarding\nrules, the address must live in the same region as the forwarding\nrule. If this field is empty, an ephemeral IPv4 address from the same\nscope (global or regional) will be assigned. A regional forwarding\nrule supports IPv4 only. A global forwarding rule supports either IPv4\nor IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC\n1918 IP address belonging to the network/subnet configured for the\nforwarding rule. By default, if this field is empty, an ephemeral\ninternal IP address will be automatically allocated from the IP range\nof the subnet or network configured for this forwarding rule.\n\nAn address must be specified by a literal IP address. ~\u003e **NOTE:** While\nthe API allows you to specify various resource paths for an address resource\ninstead, Terraform requires this to specifically be an IP address to\navoid needing to fetching the IP address from resource paths on refresh\nor unnecessary diffs.","description_kind":"plain","optional":true,"computed":true},"ip_protocol":{"type":"string","description":"The IP protocol to which this rule applies.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are\nvalid. Possible values: [\"TCP\", \"UDP\", \"ESP\", \"AH\", \"SCTP\", \"ICMP\"]","description_kind":"plain","optional":true,"computed":true},"is_mirroring_collector":{"type":"bool","description":"Indicates whether or not this load balancer can be used\nas a collector for packet mirroring. To prevent mirroring loops,\ninstances behind this load balancer will not have their traffic\nmirrored even if a PacketMirroring rule applies to them. This\ncan only be set to true for load balancers that have their\nloadBalancingScheme set to INTERNAL.","description_kind":"plain","optional":true},"load_balancing_scheme":{"type":"string","description":"This signifies what the ForwardingRule will be used for and can be\nEXTERNAL, INTERNAL, or INTERNAL_MANAGED. EXTERNAL is used for Classic\nCloud VPN gateways, protocol forwarding to VMs from an external IP address,\nand HTTP(S), SSL Proxy, TCP Proxy, and Network TCP/UDP load balancers.\nINTERNAL is used for protocol forwarding to VMs from an internal IP address,\nand internal TCP/UDP load balancers.\nINTERNAL_MANAGED is used for internal HTTP(S) load balancers. Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL\", \"INTERNAL_MANAGED\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"For internal load balancing, this field identifies the network that\nthe load balanced IP should belong to for this Forwarding Rule. If\nthis field is not specified, the default network will be used.\nThis field is only used for INTERNAL load balancing.","description_kind":"plain","optional":true,"computed":true},"network_tier":{"type":"string","description":"The networking tier used for configuring this address. If this field is not\nspecified, it is assumed to be PREMIUM. Possible values: [\"PREMIUM\", \"STANDARD\"]","description_kind":"plain","optional":true,"computed":true},"port_range":{"type":"string","description":"This field is used along with the target field for TargetHttpProxy,\nTargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway,\nTargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets\naddressed to ports in the specified range will be forwarded to target.\nForwarding rules with the same [IPAddress, IPProtocol] pair must have\ndisjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable\nports:\n\n* TargetHttpProxy: 80, 8080\n* TargetHttpsProxy: 443\n* TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995,\n 1883, 5222\n* TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995,\n 1883, 5222\n* TargetVpnGateway: 500, 4500","description_kind":"plain","optional":true},"ports":{"type":["set","string"],"description":"This field is used along with the backend_service field for internal\nload balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma\nseparated list of ports can be configured. Only packets addressed to\nthese ports will be forwarded to the backends configured with this\nforwarding rule.\n\nYou may specify a maximum of up to 5 ports.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"A reference to the region where the regional forwarding rule resides.\nThis field is not applicable to global forwarding rules.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"service_label":{"type":"string","description":"An optional prefix to the service name for this Forwarding Rule.\nIf specified, will be the first label of the fully qualified service\nname.\n\nThe label must be 1-63 characters long, and comply with RFC1035.\nSpecifically, the label must be 1-63 characters long and match the\nregular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the first\ncharacter must be a lowercase letter, and all following characters\nmust be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.\n\nThis field is only used for INTERNAL load balancing.","description_kind":"plain","optional":true},"service_name":{"type":"string","description":"The internal fully qualified service name for this Forwarding Rule.\nThis field is only used for INTERNAL load balancing.","description_kind":"plain","computed":true},"subnetwork":{"type":"string","description":"The subnetwork that the load balanced IP should belong to for this\nForwarding Rule. This field is only used for INTERNAL load balancing.\n\nIf the network specified is in auto subnet mode, this field is\noptional. However, if the network is in custom subnet mode, a\nsubnetwork must be specified.","description_kind":"plain","optional":true,"computed":true},"target":{"type":"string","description":"The URL of the target resource to receive the matched traffic.\nThe target must live in the same region as the forwarding rule.\nThe forwarded traffic must be of a type appropriate to the target\nobject.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_global_address":{"version":0,"block":{"attributes":{"address":{"type":"string","description":"The IP address or beginning of the address range represented by this\nresource. This can be supplied as an input to reserve a specific\naddress or omitted to allow GCP to choose a valid one for you.","description_kind":"plain","optional":true,"computed":true},"address_type":{"type":"string","description":"The type of the address to reserve.\n\n* EXTERNAL indicates public/external single IP address.\n* INTERNAL indicates internal IP ranges belonging to some network. Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL\"]","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_version":{"type":"string","description":"The IP Version that will be used by this address. The default value is 'IPV4'. Possible values: [\"IPV4\", \"IPV6\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The URL of the network in which to reserve the IP range. The IP range\nmust be in RFC1918 space. The network cannot be deleted if there are\nany reserved IP ranges referring to it.\n\nThis should only be set when using an Internal address.","description_kind":"plain","optional":true},"prefix_length":{"type":"number","description":"The prefix length of the IP range. If not present, it means the\naddress field is a single IP address.\n\nThis field is not applicable to addresses with addressType=EXTERNAL,\nor addressType=INTERNAL when purpose=PRIVATE_SERVICE_CONNECT","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"purpose":{"type":"string","description":"The purpose of the resource. For global internal addresses it can be\n\n* VPC_PEERING - for peer networks\n* PRIVATE_SERVICE_CONNECT - for ([Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html) only) Private Service Connect networks\n\nThis should only be set when using an Internal address. Possible values: [\"VPC_PEERING\", \"PRIVATE_SERVICE_CONNECT\"]","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_global_forwarding_rule":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_address":{"type":"string","description":"The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing\nscheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding\nrules, the address must be a global IP, and for regional forwarding\nrules, the address must live in the same region as the forwarding\nrule. If this field is empty, an ephemeral IPv4 address from the same\nscope (global or regional) will be assigned. A regional forwarding\nrule supports IPv4 only. A global forwarding rule supports either IPv4\nor IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC\n1918 IP address belonging to the network/subnet configured for the\nforwarding rule. By default, if this field is empty, an ephemeral\ninternal IP address will be automatically allocated from the IP range\nof the subnet or network configured for this forwarding rule.\n\nAn address must be specified by a literal IP address. ~\u003e **NOTE**: While\nthe API allows you to specify various resource paths for an address resource\ninstead, Terraform requires this to specifically be an IP address to\navoid needing to fetching the IP address from resource paths on refresh\nor unnecessary diffs.","description_kind":"plain","optional":true,"computed":true},"ip_protocol":{"type":"string","description":"The IP protocol to which this rule applies. When the load balancing scheme is\nINTERNAL_SELF_MANAGED, only TCP is valid. This field must not be set if the\nglobal address is configured as a purpose of PRIVATE_SERVICE_CONNECT\nand addressType of INTERNAL Possible values: [\"TCP\", \"UDP\", \"ESP\", \"AH\", \"SCTP\", \"ICMP\"]","description_kind":"plain","optional":true,"computed":true},"ip_version":{"type":"string","description":"The IP Version that will be used by this global forwarding rule. Possible values: [\"IPV4\", \"IPV6\"]","description_kind":"plain","optional":true},"load_balancing_scheme":{"type":"string","description":"This signifies what the GlobalForwardingRule will be used for.\nThe value of INTERNAL_SELF_MANAGED means that this will be used for\nInternal Global HTTP(S) LB. The value of EXTERNAL means that this\nwill be used for External Global Load Balancing (HTTP(S) LB,\nExternal TCP/UDP LB, SSL Proxy)\n\n([Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html) only) Note: This field must be set \"\" if the global address is\nconfigured as a purpose of PRIVATE_SERVICE_CONNECT and addressType of INTERNAL. Default value: \"EXTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL_SELF_MANAGED\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"port_range":{"type":"string","description":"This field is used along with the target field for TargetHttpProxy,\nTargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway,\nTargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets\naddressed to ports in the specified range will be forwarded to target.\nForwarding rules with the same [IPAddress, IPProtocol] pair must have\ndisjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable\nports:\n\n* TargetHttpProxy: 80, 8080\n* TargetHttpsProxy: 443\n* TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995,\n 1883, 5222\n* TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995,\n 1883, 5222\n* TargetVpnGateway: 500, 4500","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"target":{"type":"string","description":"The URL of the target resource to receive the matched traffic.\nThe forwarded traffic must be of a type appropriate to the target object.\nFor INTERNAL_SELF_MANAGED load balancing, only HTTP and HTTPS targets\nare valid.\n\n([Beta](https://terraform.io/docs/providers/google/guides/provider_versions.html) only) For global address with a purpose of PRIVATE_SERVICE_CONNECT and\naddressType of INTERNAL, only \"all-apis\" and \"vpc-sc\" are valid.","description_kind":"plain","required":true}},"block_types":{"metadata_filters":{"nesting_mode":"list","block":{"attributes":{"filter_match_criteria":{"type":"string","description":"Specifies how individual filterLabel matches within the list of\nfilterLabels contribute towards the overall metadataFilter match.\n\nMATCH_ANY - At least one of the filterLabels must have a matching\nlabel in the provided metadata.\nMATCH_ALL - All filterLabels must have matching labels in the\nprovided metadata. Possible values: [\"MATCH_ANY\", \"MATCH_ALL\"]","description_kind":"plain","required":true}},"block_types":{"filter_labels":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the metadata label. The length must be between\n1 and 1024 characters, inclusive.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value that the label must match. The value has a maximum\nlength of 1024 characters.","description_kind":"plain","required":true}},"description":"The list of label value pairs that must match labels in the\nprovided metadata based on filterMatchCriteria\n\nThis list must not be empty and can have at the most 64 entries.","description_kind":"plain"},"min_items":1,"max_items":64}},"description":"Opaque filter criteria used by Loadbalancer to restrict routing\nconfiguration to a limited set xDS compliant clients. In their xDS\nrequests to Loadbalancer, xDS clients present node metadata. If a\nmatch takes place, the relevant routing configuration is made available\nto those proxies.\n\nFor each metadataFilter in this list, if its filterMatchCriteria is set\nto MATCH_ANY, at least one of the filterLabels must match the\ncorresponding label provided in the metadata. If its filterMatchCriteria\nis set to MATCH_ALL, then all of its filterLabels must match with\ncorresponding labels in the provided metadata.\n\nmetadataFilters specified here can be overridden by those specified in\nthe UrlMap that this ForwardingRule references.\n\nmetadataFilters only applies to Loadbalancers that have their\nloadBalancingScheme set to INTERNAL_SELF_MANAGED.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_global_network_endpoint":{"version":0,"block":{"attributes":{"fqdn":{"type":"string","description":"Fully qualified domain name of network endpoint.\nThis can only be specified when network_endpoint_type of the NEG is INTERNET_FQDN_PORT.","description_kind":"plain","optional":true},"global_network_endpoint_group":{"type":"string","description":"The global network endpoint group this endpoint is part of.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_address":{"type":"string","description":"IPv4 address external endpoint.","description_kind":"plain","optional":true},"port":{"type":"number","description":"Port number of the external endpoint.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_global_network_endpoint_group":{"version":0,"block":{"attributes":{"default_port":{"type":"number","description":"The default port used if the port number is not specified in the\nnetwork endpoint.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network_endpoint_type":{"type":"string","description":"Type of network endpoints in this network endpoint group. Possible values: [\"INTERNET_IP_PORT\", \"INTERNET_FQDN_PORT\"]","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_ha_vpn_gateway":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The network this VPN gateway is accepting traffic for.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The region this gateway should sit in.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"vpn_interfaces":{"type":["list",["object",{"id":"number","ip_address":"string"}]],"description":"A list of interfaces on this VPN gateway.","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_health_check":{"version":0,"block":{"attributes":{"check_interval_sec":{"type":"number","description":"How often (in seconds) to send a health check. The default value is 5\nseconds.","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"healthy_threshold":{"type":"number","description":"A so-far unhealthy instance will be marked healthy after this many\nconsecutive successes. The default value is 2.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"timeout_sec":{"type":"number","description":"How long (in seconds) to wait before claiming failure.\nThe default value is 5 seconds. It is invalid for timeoutSec to have\ngreater value than checkIntervalSec.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the health check. One of HTTP, HTTPS, TCP, or SSL.","description_kind":"plain","computed":true},"unhealthy_threshold":{"type":"number","description":"A so-far healthy instance will be marked unhealthy after this many\nconsecutive failures. The default value is 2.","description_kind":"plain","optional":true}},"block_types":{"grpc_health_check":{"nesting_mode":"list","block":{"attributes":{"grpc_service_name":{"type":"string","description":"The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n - Empty serviceName means the overall status of all services at the backend.\n - Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\nThe grpcServiceName can only be ASCII.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The port number for the health check request.\nMust be specified if portName and portSpecification are not set\nor if port_specification is USE_FIXED_PORT. Valid values are 1 through 65535.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, gRPC health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"http2_health_check":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The value of the host header in the HTTP2 health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The TCP port number for the HTTP2 health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, HTTP2 health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request_path":{"type":"string","description":"The request path of the HTTP2 health check request.\nThe default value is /.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"http_health_check":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The value of the host header in the HTTP health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The TCP port number for the HTTP health check request.\nThe default value is 80.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, HTTP health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request_path":{"type":"string","description":"The request path of the HTTP health check request.\nThe default value is /.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"https_health_check":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The value of the host header in the HTTPS health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The TCP port number for the HTTPS health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, HTTPS health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request_path":{"type":"string","description":"The request path of the HTTPS health check request.\nThe default value is /.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"ssl_health_check":{"nesting_mode":"list","block":{"attributes":{"port":{"type":"number","description":"The TCP port number for the SSL health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, SSL health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request":{"type":"string","description":"The application data to send once the SSL connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"tcp_health_check":{"nesting_mode":"list","block":{"attributes":{"port":{"type":"number","description":"The TCP port number for the TCP health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, TCP health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","
[2021-03-30T16:04:49.143] [DEBUG] default - description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request":{"type":"string","description":"The application data to send once the TCP connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_http_health_check":{"version":0,"block":{"attributes":{"check_interval_sec":{"type":"number","description":"How often (in seconds) to send a health check. The default value is 5\nseconds.","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"healthy_threshold":{"type":"number","description":"A so-far unhealthy instance will be marked healthy after this many\nconsecutive successes. The default value is 2.","description_kind":"plain","optional":true},"host":{"type":"string","description":"The value of the host header in the HTTP health check request. If\nleft empty (default value), the public IP on behalf of which this\nhealth check is performed will be used.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"port":{"type":"number","description":"The TCP port number for the HTTP health check request.\nThe default value is 80.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"request_path":{"type":"string","description":"The request path of the HTTP health check request.\nThe default value is /.","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"timeout_sec":{"type":"number","description":"How long (in seconds) to wait before claiming failure.\nThe default value is 5 seconds. It is invalid for timeoutSec to have\ngreater value than checkIntervalSec.","description_kind":"plain","optional":true},"unhealthy_threshold":{"type":"number","description":"A so-far healthy instance will be marked unhealthy after this many\nconsecutive failures. The default value is 2.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_https_health_check":{"version":0,"block":{"attributes":{"check_interval_sec":{"type":"number","description":"How often (in seconds) to send a health check. The default value is 5\nseconds.","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"healthy_threshold":{"type":"number","description":"A so-far unhealthy instance will be marked healthy after this many\nconsecutive successes. The default value is 2.","description_kind":"plain","optional":true},"host":{"type":"string","description":"The value of the host header in the HTTPS health check request. If\nleft empty (default value), the public IP on behalf of which this\nhealth check is performed will be used.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"port":{"type":"number","description":"The TCP port number for the HTTPS health check request.\nThe default value is 80.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"request_path":{"type":"string","description":"The request path of the HTTPS health check request.\nThe default value is /.","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"timeout_sec":{"type":"number","description":"How long (in seconds) to wait before claiming failure.\nThe default value is 5 seconds. It is invalid for timeoutSec to have\ngreater value than checkIntervalSec.","description_kind":"plain","optional":true},"unhealthy_threshold":{"type":"number","description":"A so-far healthy instance will be marked unhealthy after this many\nconsecutive failures. The default value is 2.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_image":{"version":0,"block":{"attributes":{"archive_size_bytes":{"type":"number","description":"Size of the image tar.gz archive stored in Google Cloud Storage (in\nbytes).","description_kind":"plain","computed":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"disk_size_gb":{"type":"number","description":"Size of the image when restored onto a persistent disk (in GB).","description_kind":"plain","optional":true,"computed":true},"family":{"type":"string","description":"The name of the image family to which this image belongs. You can\ncreate disks by specifying an image family instead of a specific\nimage name. The image family always returns its latest image that is\nnot deprecated. The name of the image family must comply with\nRFC1035.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"label_fingerprint":{"type":"string","description":"The fingerprint used for optimistic locking of this resource. Used\ninternally during updates.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Labels to apply to this Image.","description_kind":"plain","optional":true},"licenses":{"type":["list","string"],"description":"Any applicable license URI.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"source_disk":{"type":"string","description":"The source disk to create this image based on.\nYou must provide either this property or the\nrawDisk.source property but not both to create an image.","description_kind":"plain","optional":true},"source_image":{"type":"string","description":"URL of the source image used to create this image. In order to create an image, you must provide the full or partial\nURL of one of the following:\n\n* The selfLink URL\n* This property\n* The rawDisk.source URL\n* The sourceDisk URL","description_kind":"plain","optional":true},"source_snapshot":{"type":"string","description":"URL of the source snapshot used to create this image.\n\nIn order to create an image, you must provide the full or partial URL of one of the following:\n\n* The selfLink URL\n* This property\n* The sourceImage URL\n* The rawDisk.source URL\n* The sourceDisk URL","description_kind":"plain","optional":true}},"block_types":{"guest_os_features":{"nesting_mode":"set","block":{"attributes":{"type":{"type":"string","description":"The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options. Possible values: [\"MULTI_IP_SUBNET\", \"SECURE_BOOT\", \"SEV_CAPABLE\", \"UEFI_COMPATIBLE\", \"VIRTIO_SCSI_MULTIQUEUE\", \"WINDOWS\", \"GVNIC\"]","description_kind":"plain","required":true}},"description":"A list of features to enable on the guest operating system.\nApplicable only for bootable images.","description_kind":"plain"}},"raw_disk":{"nesting_mode":"list","block":{"attributes":{"container_type":{"type":"string","description":"The format used to encode and transmit the block device, which\nshould be TAR. This is just a container and transmission format\nand not a runtime format. Provided by the client when the disk\nimage is created. Default value: \"TAR\" Possible values: [\"TAR\"]","description_kind":"plain","optional":true},"sha1":{"type":"string","description":"An optional SHA1 checksum of the disk image before unpackaging.\nThis is provided by the client when the disk image is created.","description_kind":"plain","optional":true},"source":{"type":"string","description":"The full Google Cloud Storage URL where disk storage is stored\nYou must provide either this property or the sourceDisk property\nbut not both.","description_kind":"plain","required":true}},"description":"The parameters of the raw disk image.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_image_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image":{"type":"string","description_kind":"plain","required":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_image_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image":{"type":"string","description_kind":"plain","required":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_image_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"image":{"type":"string","description_kind":"plain","required":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_compute_instance":{"version":6,"block":{"attributes":{"allow_stopping_for_update":{"type":"bool","description":"If true, allows Terraform to stop the instance to update its properties. If you try to update a property that requires stopping the instance without setting this field, the update will fail.","description_kind":"plain","optional":true},"can_ip_forward":{"type":"bool","description":"Whether sending and receiving of packets with non-matching source or destination IPs is allowed.","description_kind":"plain","optional":true},"cpu_platform":{"type":"string","description":"The CPU platform used by this instance.","description_kind":"plain","computed":true},"current_status":{"type":"string","description":"Current status of the instance.","description_kind":"plain","computed":true},"deletion_protection":{"type":"bool","description":"Whether deletion protection is enabled on this instance.","description_kind":"plain","optional":true},"description":{"type":"string","description":"A brief description of the resource.","description_kind":"plain","optional":true},"desired_status":{"type":"string","description":"Desired status of the instance. Either \"RUNNING\" or \"TERMINATED\".","description_kind":"plain","optional":true},"enable_display":{"type":"bool","description":"Whether the instance has virtual displays enabled.","description_kind":"plain","optional":true},"guest_accelerator":{"type":["list",["object",{"count":"number","type":"string"}]],"description":"List of the type and count of accelerator cards attached to the instance.","description_kind":"plain","optional":true,"computed":true},"hostname":{"type":"string","description":"A custom hostname for the instance. Must be a fully qualified DNS name and RFC-1035-valid. Valid format is a series of labels 1-63 characters long matching the regular expression [a-z]([-a-z0-9]*[a-z0-9]), concatenated with periods. The entire hostname must not exceed 253 characters. Changing this forces a new resource to be created.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_id":{"type":"string","description":"The server-assigned unique identifier of this instance.","description_kind":"plain","computed":true},"label_fingerprint":{"type":"string","description":"The unique fingerprint of the labels.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs assigned to the instance.","description_kind":"plain","optional":true},"machine_type":{"type":"string","description":"The machine type to create.","description_kind":"plain","required":true},"metadata":{"type":["map","string"],"description":"Metadata key/value pairs made available within the instance.","description_kind":"plain","optional":true},"metadata_fingerprint":{"type":"string","description":"The unique fingerprint of the metadata.","description_kind":"plain","computed":true},"metadata_startup_script":{"type":"string","description":"Metadata startup scripts made available within the instance.","description_kind":"plain","optional":true},"min_cpu_platform":{"type":"string","description":"The minimum CPU platform specified for the VM instance.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the instance. One of name or self_link must be provided.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If self_link is provided, this value is ignored. If neither self_link nor project are provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"resource_policies":{"type":["list","string"],"description":"A list of short names or self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.","description_kind":"plain","optional":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"The list of tags attached to the instance.","description_kind":"plain","optional":true},"tags_fingerprint":{"type":"string","description":"The unique fingerprint of the tags.","description_kind":"plain","computed":true},"zone":{"type":"string","description":"The zone of the instance. If self_link is provided, this value is ignored. If neither self_link nor zone are provided, the provider zone is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"attached_disk":{"nesting_mode":"list","block":{"attributes":{"device_name":{"type":"string","description":"Name with which the attached disk is accessible under /dev/disk/by-id/","description_kind":"plain","optional":true,"computed":true},"disk_encryption_key_raw":{"type":"string","description":"A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link and disk_encryption_key_raw may be set.","description_kind":"plain","optional":true,"sensitive":true},"disk_encryption_key_sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.","description_kind":"plain","computed":true},"kms_key_self_link":{"type":"string","description":"The self_link of the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link and disk_encryption_key_raw may be set.","description_kind":"plain","optional":true,"computed":true},"mode":{"type":"string","description":"Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".","description_kind":"plain","optional":true},"source":{"type":"string","description":"The name or self_link of the disk attached to this instance.","description_kind":"plain","required":true}},"description":"List of disks attached to the instance","description_kind":"plain"}},"boot_disk":{"nesting_mode":"list","block":{"attributes":{"auto_delete":{"type":"bool","description":"Whether the disk will be auto-deleted when the instance is deleted.","description_kind":"plain","optional":true},"device_name":{"type":"string","description":"Name with which attached disk will be accessible under /dev/disk/by-id/","description_kind":"plain","optional":true,"computed":true},"disk_encryption_key_raw":{"type":"string","description":"A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link and disk_encryption_key_raw may be set.","description_kind":"plain","optional":true,"sensitive":true},"disk_encryption_key_sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.","description_kind":"plain","computed":true},"kms_key_self_link":{"type":"string","description":"The self_link of the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link and disk_encryption_key_raw may be set.","description_kind":"plain","optional":true,"computed":true},"mode":{"type":"string","description":"Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".","description_kind":"plain","optional":true},"source":{"type":"string","description":"The name or self_link of the disk attached to this instance.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"initialize_params":{"nesting_mode":"list","block":{"attributes":{"image":{"type":"string","description":"The image from which this disk was initialised.","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs assigned to the disk.","description_kind":"plain","optional":true,"computed":true},"size":{"type":"number","description":"The size of the image in gigabytes.","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The Google Compute Engine disk type. One of pd-standard, pd-ssd or pd-balanced.","description_kind":"plain","optional":true,"computed":true}},"description":"Parameters with which a disk was created alongside the instance.","description_kind":"plain"},"max_items":1}},"description":"The boot disk for the instance.","description_kind":"plain"},"min_items":1,"max_items":1},"confidential_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_confidential_compute":{"type":"bool","description":"Defines whether the instance should have confidential compute enabled.","description_kind":"plain","required":true}},"description":"The Confidential VM config being used by the instance. on_host_maintenance has to be set to TERMINATE or this will fail to create.","description_kind":"plain"},"max_items":1},"network_interface":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the interface","description_kind":"plain","computed":true},"network":{"type":"string","description":"The name or self_link of the network attached to this interface.","description_kind":"plain","optional":true,"computed":true},"network_ip":{"type":"string","description":"The private IP address assigned to the instance.","description_kind":"plain","optional":true,"computed":true},"nic_type":{"type":"string","description":"The type of vNIC to be used on this interface. Possible values:GVNIC, VIRTIO_NET","description_kind":"plain","optional":true},"subnetwork":{"type":"string","description":"The name or self_link of the subnetwork attached to this interface.","description_kind":"plain","optional":true,"computed":true},"subnetwork_project":{"type":"string","description":"The project in which the subnetwork belongs.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"access_config":{"nesting_mode":"list","block":{"attributes":{"nat_ip":{"type":"string","description":"The IP address that is be 1:1 mapped to the instance's network ip.","description_kind":"plain","optional":true,"computed":true},"network_tier":{"type":"string","description":"The networking tier used for configuring this instance. One of PREMIUM or STANDARD.","description_kind":"plain","optional":true,"computed":true},"public_ptr_domain_name":{"type":"string","description":"The DNS domain name for the public PTR record.","description_kind":"plain","optional":true}},"description":"Access configurations, i.e. IPs via which this instance can be accessed via the Internet.","description_kind":"plain"}},"alias_ip_range":{"nesting_mode":"list","block":{"attributes":{"ip_cidr_range":{"type":"string","description":"The IP CIDR range represented by this alias IP range.","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description":"The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range.","description_kind":"plain","optional":true}},"description":"An array of alias IP ranges for this network interface.","description_kind":"plain"}}},"description":"The networks attached to the instance.","description_kind":"plain"},"min_items":1},"scheduling":{"nesting_mode":"list","block":{"attributes":{"automatic_restart":{"type":"bool","description":"Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).","description_kind":"plain","optional":true},"min_node_cpus":{"type":"number","description_kind":"plain","optional":true},"on_host_maintenance":{"type":"string","description":"Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,","description_kind":"plain","optional":true,"computed":true},"preemptible":{"type":"bool","description":"Whether the instance is preemptible.","description_kind":"plain","optional":true}},"block_types":{"node_affinities":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["set","string"],"description_kind":"plain","required":true}},"description":"Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.","description_kind":"plain"}}},"description":"The scheduling strategy being used by the instance.","description_kind":"plain"},"max_items":1},"scratch_disk":{"nesting_mode":"list","block":{"attributes":{"interface":{"type":"string","description":"The disk interface used for attaching this disk. One of SCSI or NVME.","description_kind":"plain","required":true}},"description":"The scratch disks attached to the instance.","description_kind":"plain"}},"service_account":{"nesting_mode":"list","block":{"attributes":{"email":{"type":"string","description":"The service account e-mail address.","description_kind":"plain","optional":true,"computed":true},"scopes":{"type":["set","string"],"description":"A list of service scopes.","description_kind":"plain","required":true}},"description":"The service account to attach to the instance.","description_kind":"plain"},"max_items":1},"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description":"Whether integrity monitoring is enabled for the instance.","description_kind":"plain","optional":true},"enable_secure_boot":{"type":"bool","description":"Whether secure boot is enabled for the instance.","description_kind":"plain","optional":true},"enable_vtpm":{"type":"bool","description":"Whether the instance uses vTPM.","description_kind":"plain","optional":true}},"description":"The shielded vm config being used by the instance.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_instance_from_template":{"version":0,"block":{"attributes":{"allow_stopping_for_update":{"type":"bool","description":"If true, allows Terraform to stop the instance to update its properties. If you try to update a property that requires stopping the instance without setting this field, the update will fail.","description_kind":"plain","optional":true,"computed":true},"attached_disk":{"type":["list",["object",{"device_name":"string","disk_encryption_key_raw":"string","disk_encryption_key_sha256":"string","kms_key_self_link":"string","mode":"string","source":"string"}]],"description":"List of disks attached to the instance","description_kind":"plain","optional":true,"computed":true},"can_ip_forward":{"type":"bool","description":"Whether sending and receiving of packets with non-matching source or destination IPs is allowed.","description_kind":"plain","optional":true,"computed":true},"cpu_platform":{"type":"string","description":"The CPU platform used by this instance.","description_kind":"plain","computed":true},"current_status":{"type":"string","description":"Current status of the instance.","description_kind":"plain","computed":true},"deletion_protection":{"type":"bool","description":"Whether deletion protection is enabled on this instance.","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description":"A brief description of the resource.","description_kind":"plain","optional":true,"computed":true},"desired_status":{"type":"string","description":"Desired status of the instance. Either \"RUNNING\" or \"TERMINATED\".","description_kind":"plain","optional":true,"computed":true},"enable_display":{"type":"bool","description":"Whether the instance has virtual displays enabled.","description_kind":"plain","optional":true,"computed":true},"guest_accelerator":{"type":["list",["object",{"count":"number","type":"string"}]],"description":"List of the type and count of accelerator cards attached to the instance.","description_kind":"plain","optional":true,"computed":true},"hostname":{"type":"string","description":"A custom hostname for the instance. Must be a fully qualified DNS name and RFC-1035-valid. Valid format is a series of labels 1-63 characters long matching the regular expression [a-z]([-a-z0-9]*[a-z0-9]), concatenated with periods. The entire hostname must not exceed 253 characters. Changing this forces a new resource to be created.","description_kind":"plain","optional":true,"computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_id":{"type":"string","description":"The server-assigned unique identifier of this instance.","description_kind":"plain","computed":true},"label_fingerprint":{"type":"string","description":"The unique fingerprint of the labels.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs assigned to the instance.","description_kind":"plain","optional":true,"computed":true},"machine_type":{"type":"string","description":"The machine type to create.","description_kind":"plain","optional":true,"computed":true},"metadata":{"type":["map","string"],"description":"Metadata key/value pairs made available within the instance.","description_kind":"plain","optional":true,"computed":true},"metadata_fingerprint":{"type":"string","description":"The unique fingerprint of the metadata.","description_kind":"plain","computed":true},"metadata_startup_script":{"type":"string","description":"Metadata startup scripts made available within the instance.","description_kind":"plain","optional":true,"computed":true},"min_cpu_platform":{"type":"string","description":"The minimum CPU platform specified for the VM instance.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the instance. One of name or self_lin
[2021-03-30T16:04:49.148] [DEBUG] default - k must be provided.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If self_link is provided, this value is ignored. If neither self_link nor project are provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"resource_policies":{"type":["list","string"],"description":"A list of short names or self_links of resource policies to attach to the instance. Modifying this list will cause the instance to recreate. Currently a max of 1 resource policy is supported.","description_kind":"plain","optional":true,"computed":true},"scratch_disk":{"type":["list",["object",{"interface":"string"}]],"description":"The scratch disks attached to the instance.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true},"service_account":{"type":["list",["object",{"email":"string","scopes":["set","string"]}]],"description":"The service account to attach to the instance.","description_kind":"plain","optional":true,"computed":true},"source_instance_template":{"type":"string","description":"Name or self link of an instance template to create the instance based on.","description_kind":"plain","required":true},"tags":{"type":["set","string"],"description":"The list of tags attached to the instance.","description_kind":"plain","optional":true,"computed":true},"tags_fingerprint":{"type":"string","description":"The unique fingerprint of the tags.","description_kind":"plain","computed":true},"zone":{"type":"string","description":"The zone of the instance. If self_link is provided, this value is ignored. If neither self_link nor zone are provided, the provider zone is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"boot_disk":{"nesting_mode":"list","block":{"attributes":{"auto_delete":{"type":"bool","description":"Whether the disk will be auto-deleted when the instance is deleted.","description_kind":"plain","optional":true,"computed":true},"device_name":{"type":"string","description":"Name with which attached disk will be accessible under /dev/disk/by-id/","description_kind":"plain","optional":true,"computed":true},"disk_encryption_key_raw":{"type":"string","description":"A 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to encrypt this disk. Only one of kms_key_self_link and disk_encryption_key_raw may be set.","description_kind":"plain","optional":true,"computed":true,"sensitive":true},"disk_encryption_key_sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.","description_kind":"plain","computed":true},"kms_key_self_link":{"type":"string","description":"The self_link of the encryption key that is stored in Google Cloud KMS to encrypt this disk. Only one of kms_key_self_link and disk_encryption_key_raw may be set.","description_kind":"plain","optional":true,"computed":true},"mode":{"type":"string","description":"Read/write mode for the disk. One of \"READ_ONLY\" or \"READ_WRITE\".","description_kind":"plain","optional":true,"computed":true},"source":{"type":"string","description":"The name or self_link of the disk attached to this instance.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"initialize_params":{"nesting_mode":"list","block":{"attributes":{"image":{"type":"string","description":"The image from which this disk was initialised.","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs assigned to the disk.","description_kind":"plain","optional":true,"computed":true},"size":{"type":"number","description":"The size of the image in gigabytes.","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The Google Compute Engine disk type. One of pd-standard, pd-ssd or pd-balanced.","description_kind":"plain","optional":true,"computed":true}},"description":"Parameters with which a disk was created alongside the instance.","description_kind":"plain"},"max_items":1}},"description":"The boot disk for the instance.","description_kind":"plain"},"max_items":1},"confidential_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_confidential_compute":{"type":"bool","description":"Defines whether the instance should have confidential compute enabled.","description_kind":"plain","required":true}},"description":"The Confidential VM config being used by the instance. on_host_maintenance has to be set to TERMINATE or this will fail to create.","description_kind":"plain"},"max_items":1},"network_interface":{"nesting_mode":"list","block":{"attributes":{"access_config":{"type":["list",["object",{"nat_ip":"string","network_tier":"string","public_ptr_domain_name":"string"}]],"description":"Access configurations, i.e. IPs via which this instance can be accessed via the Internet.","description_kind":"plain","optional":true,"computed":true},"alias_ip_range":{"type":["list",["object",{"ip_cidr_range":"string","subnetwork_range_name":"string"}]],"description":"An array of alias IP ranges for this network interface.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the interface","description_kind":"plain","computed":true},"network":{"type":"string","description":"The name or self_link of the network attached to this interface.","description_kind":"plain","optional":true,"computed":true},"network_ip":{"type":"string","description":"The private IP address assigned to the instance.","description_kind":"plain","optional":true,"computed":true},"nic_type":{"type":"string","description":"The type of vNIC to be used on this interface. Possible values:GVNIC, VIRTIO_NET","description_kind":"plain","optional":true,"computed":true},"subnetwork":{"type":"string","description":"The name or self_link of the subnetwork attached to this interface.","description_kind":"plain","optional":true,"computed":true},"subnetwork_project":{"type":"string","description":"The project in which the subnetwork belongs.","description_kind":"plain","optional":true,"computed":true}},"description":"The networks attached to the instance.","description_kind":"plain"}},"scheduling":{"nesting_mode":"list","block":{"attributes":{"automatic_restart":{"type":"bool","description":"Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).","description_kind":"plain","optional":true,"computed":true},"min_node_cpus":{"type":"number","description_kind":"plain","optional":true,"computed":true},"on_host_maintenance":{"type":"string","description":"Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,","description_kind":"plain","optional":true,"computed":true},"preemptible":{"type":"bool","description":"Whether the instance is preemptible.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"node_affinities":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["set","string"],"description_kind":"plain","required":true}},"description":"Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.","description_kind":"plain"}}},"description":"The scheduling strategy being used by the instance.","description_kind":"plain"},"max_items":1},"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description":"Whether integrity monitoring is enabled for the instance.","description_kind":"plain","optional":true,"computed":true},"enable_secure_boot":{"type":"bool","description":"Whether secure boot is enabled for the instance.","description_kind":"plain","optional":true,"computed":true},"enable_vtpm":{"type":"bool","description":"Whether the instance uses vTPM.","description_kind":"plain","optional":true,"computed":true}},"description":"The shielded vm config being used by the instance.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_instance_group":{"version":2,"block":{"attributes":{"description":{"type":"string","description":"An optional textual description of the instance group.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instances":{"type":["set","string"],"description":"List of instances in the group. They should be given as self_link URLs. When adding instances they must all be in the same network and zone as the instance group.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the instance group. Must be 1-63 characters long and comply with RFC1035. Supported characters include lowercase letters, numbers, and hyphens.","description_kind":"plain","required":true},"network":{"type":"string","description":"The URL of the network the instance group is in. If this is different from the network where the instances are in, the creation fails. Defaults to the network where the instances are in (if neither network nor instances is specified, this field will be blank).","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true},"size":{"type":"number","description":"The number of instances in the group.","description_kind":"plain","computed":true},"zone":{"type":"string","description":"The zone that this instance group should be created in.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"named_port":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name which the port will be mapped to.","description_kind":"plain","required":true},"port":{"type":"number","description":"The port number to map the name to.","description_kind":"plain","required":true}},"description":"The named port configuration.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_instance_group_manager":{"version":0,"block":{"attributes":{"base_instance_name":{"type":"string","description":"The base instance name to use for instances in this group. The value must be a valid RFC1035 name. Supported characters are lowercase letters, numbers, and hyphens (-). Instances are named by appending a hyphen and a random four-character string to the base instance name.","description_kind":"plain","required":true},"description":{"type":"string","description":"An optional textual description of the instance group manager.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"The fingerprint of the instance group manager.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_group":{"type":"string","description":"The full URL of the instance group created by the manager.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the instance group manager. Must be 1-63 characters long and comply with RFC1035. Supported characters include lowercase letters, numbers, and hyphens.","description_kind":"plain","required":true},"operation":{"type":"string","description_kind":"plain","computed":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URL of the created resource.","description_kind":"plain","computed":true},"target_pools":{"type":["set","string"],"description":"The full URL of all target pools to which new instances in the group are added. Updating the target pools attribute does not affect existing instances.","description_kind":"plain","optional":true},"target_size":{"type":"number","description":"The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0.","description_kind":"plain","optional":true,"computed":true},"wait_for_instances":{"type":"bool","description":"Whether to wait for all instances to be created/updated before returning. Note that if this is set to true and the operation does not succeed, Terraform will continue trying until it times out.","description_kind":"plain","optional":true},"zone":{"type":"string","description":"The zone that instances in this group should be created in.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"auto_healing_policies":{"nesting_mode":"list","block":{"attributes":{"health_check":{"type":"string","description":"The health check resource that signals autohealing.","description_kind":"plain","required":true},"initial_delay_sec":{"type":"number","description":"The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.","description_kind":"plain","required":true}},"description":"The autohealing policies for this managed instance group. You can specify only one value.","description_kind":"plain"},"max_items":1},"named_port":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"The name of the port.","description_kind":"plain","required":true},"port":{"type":"number","description":"The port number.","description_kind":"plain","required":true}},"description":"The named port configuration.","description_kind":"plain"}},"stateful_disk":{"nesting_mode":"set","block":{"attributes":{"delete_rule":{"type":"string","description":"A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the disk when the VM is deleted, but do not delete the disk. ON_PERMANENT_INSTANCE_DELETION will delete the stateful disk when the VM is permanently deleted from the instance group. The default is NEVER.","description_kind":"plain","optional":true},"device_name":{"type":"string","description":"The device name of the disk to be attached.","description_kind":"plain","required":true}},"description":"Disks created on the instances that will be preserved on instance delete, update, etc.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"max_surge_fixed":{"type":"number","description":"The maximum number of instances that can be created above the specified targetSize during the update process. Conflicts with max_surge_percent. If neither is set, defaults to 1","description_kind":"plain","optional":true,"computed":true},"max_surge_percent":{"type":"number","description":"The maximum number of instances(calculated as percentage) that can be created above the specified targetSize during the update process. Conflicts with max_surge_fixed.","description_kind":"plain","optional":true},"max_unavailable_fixed":{"type":"number","description":"The maximum number of instances that can be unavailable during the update process. Conflicts with max_unavailable_percent. If neither is set, defaults to 1.","description_kind":"plain","optional":true,"computed":true},"max_unavailable_percent":{"type":"number","description":"The maximum number of instances(calculated as percentage) that can be unavailable during the update process. Conflicts with max_unavailable_fixed.","description_kind":"plain","optional":true},"min_ready_sec":{"type":"number","description":"Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].","description_kind":"plain","optional":true},"minimal_action":{"type":"string","description":"Minimal action to be taken on an instance. You can specify either RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a RESTART, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.","description_kind":"plain","required":true},"replacement_method":{"type":"string","description":"The instance replacement method for managed instance groups. Valid values are: \"RECREATE\", \"SUBSTITUTE\". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved. You must also set max_unavailable_fixed or max_unavailable_percent to be greater than 0.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of update process. You can specify either PROACTIVE so that the instance group manager proactively executes actions in order to bring instances to their target versions or OPPORTUNISTIC so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).","description_kind":"plain","required":true}},"description":"The update policy for this managed instance group.","description_kind":"plain"},"max_items":1},"version":{"nesting_mode":"list","block":{"attributes":{"instance_template":{"type":"string","description":"The full URL to an instance template from which all new instances of this version will be created.","description_kind":"plain","required":true},"name":{"type":"string","description":"Version name.","description_kind":"plain","optional":true}},"block_types":{"target_size":{"nesting_mode":"list","block":{"attributes":{"fixed":{"type":"number","description":"The number of instances which are managed for this version. Conflicts with percent.","description_kind":"plain","optional":true},"percent":{"type":"number","description":"The number of instances (calculated as percentage) which are managed for this version. Conflicts with fixed. Note that when using percent, rounding will be in favor of explicitly set target_size values; a managed instance group with 2 instances and 2 versions, one of which has a target_size.percent of 60 will create 2 instances of that version.","description_kind":"plain","optional":true}},"description":"The number of instances calculated as a fixed number or a percentage depending on the settings.","description_kind":"plain"},"max_items":1}},"description":"Application versions managed by this instance group. Each version deals with a specific instance template, allowing canary release scenarios.","description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"google_compute_instance_group_named_port":{"version":0,"block":{"attributes":{"group":{"type":"string","description":"The name of the instance group.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name for this named port. The name must be 1-63 characters\nlong, and comply with RFC1035.","description_kind":"plain","required":true},"port":{"type":"number","description":"The port number, which can be a value between 1 and 65535.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description":"The zone of the instance group.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_instance_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name":{"type":"string","description_kind":"plain","required":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"zone":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_instance_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name":{"type":"string","description_kind":"plain","required":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"zone":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_instance_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_name":{"type":"string","description_kind":"plain","required":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_compute_instance_template":{"version":1,"block":{"attributes":{"can_ip_forward":{"type":"bool","description":"Whether to allow sending and receiving of packets with non-matching source or destination IPs. This defaults to false.","description_kind":"plain","optional":true},"description":{"type":"string","description":"A brief description of this resource.","description_kind":"plain","optional":true},"enable_display":{"type":"bool","description":"Enable Virtual Displays on this instance. Note: allow_stopping_for_update must be set to true in order to update this field.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_description":{"type":"string","description":"A description of the instance.","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs to assign to instances created from this template,","description_kind":"plain","optional":true},"machine_type":{"type":"string","description":"The machine type to create. To create a machine with a custom type (such as extended memory), format the value like custom-VCPUS-MEM_IN_MB like custom-6-20480 for 6 vCPU and 20GB of RAM.","description_kind":"plain","required":true},"metadata":{"type":["map","string"],"description":"Metadata key/value pairs to make available from within instances created from this template.","description_kind":"plain","optional":true},"metadata_fingerprint":{"type":"string","description":"The unique fingerprint of the metadata.","description_kind":"plain","computed":true},"metadata_startup_script":{"type":"string","description":"An alternative to using the startup-script metadata key, mostly to match the compute_instance resource. This replaces the startup-script metadata key on the created instance and thus the two mechanisms are not allowed to be used simultaneously.","description_kind":"plain","optional":true},"min_cpu_platform":{"type":"string","description":"Specifies a minimum CPU platform. Applicable values are the friendly names of CPU platforms, such as Intel Haswell or Intel Skylake.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the instance template. If you leave this blank, Terraform will auto-generate a unique name.","description_kind":"plain","optional":true,"computed":true},"name_prefix":{"type":"string","description":"Creates a unique name beginning with the specified prefix. Conflicts with name.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"An instance template is a global resource that is not bound to a zone or a region. However, you can still specify some regional resources in an instance template, which restricts the template to the region where that resource resides. For example, a custom subnetwork resource is tied to a specific region. Defaults to the region of the Provider if no value is given.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"Tags to attach to the instance.","description_kind":"plain","optional":true},"tags_fingerprint":{"type":"string","description":"The unique fingerprint of the tags.","description_kind":"plain","computed":true}},"block_types":{"confidential_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_confidential_compute":{"type":"bool","description":"Defines whether the instance should have confidential compute enabled.","description_kind":"plain","required":true}},"description":"The Confidential VM config being used by the instance. on_host_maintenance has to be set to TERMINATE or this will fail to create.","description_kind":"plain"},"max_items":1},"disk":{"nesting_mode":"list","block":{"attributes":{"auto_delete":{"type":"bool","description":"Whether or not the disk should be auto-deleted. This defaults to true.","description_kind":"plain","optional":true},"boot":{"type":"bool","description":"Indicates that this is a boot disk.","description_kind":"plain","optional":true,"computed":true},"device_name":{"type":"string","description":"A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance. If not specified, the server chooses a default device name to apply to this disk.","description_kind":"plain","optional":true,"computed":true},"disk_name":{"type":"string","description":"Name of the disk. When not provided, this defaults to the name of the instance.","description_kind":"plain","optional":true},"disk_size_gb":{"type":"number","description":"The size of the image in gigabytes. If not specified, it will inherit the size of its base image. For SCRATCH disks, the size must be exactly 375GB.","description_kind":"plain","optional":true,"computed":true},"disk_type":{"type":"string","description":"The Google Compute Engine disk type. Can be either \"pd-ssd\", \"local-ssd\", \"pd-balanced\" or \"pd-standard\".","description_kind":"plain","optional":true,"computed":true},"interface":{"type":"string","description":"Specifies the disk interface to use for attaching this disk.","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"A set of key/value label pairs to assign to disks,","description_kind":"plain","optional":true},"mode":{"type":"string","description":"The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If you are attaching or creating a boot disk, this must read-write mode.","description_kind":"plain","optional":true,"computed":true},"resource_policies":{"type":["list","string"],"description":"A list (short name or id) of resource policies to attach to this disk. Currently a max of 1 resource policy is supported.","description_kind":"plain","optional":true},"source":{"type":"string","description":"The name (not self_link) of the disk (such as those managed by google_compute_disk) to attach. ~\u003e Note: Either source or source_image is required when creating a new instance except for when creating a local SSD.","description_kind":"plain","optional":true},"source_image":{"type":"string","description":"The image from which to initialize this disk. This can be one of: the image's self_link, projects/{project}/global/images/{image}, projects/{project}/global/images/family/{family}, global/images/{image}, global/images/family/{family}, family/{family}, {project}/{family}, {project}/{image}, {family}, or {image}. ~\u003e Note: Either source or source_image is required when creating a new instance except for when creating a local SSD.","description_kind":"plain","optional":true,"computed":true},"type":{"type":"string","description":"The type of Google Compute Engine disk, can be either \"SCRATCH\" or \"PERSISTENT\".","description_kind":"plain","optional":true,"computed":true}},"block_types":{"disk_encryption_key":{"nesting_mode":"list","block":{"attributes":{"kms_key_self_link":{"type":"string","description":"The self link of the encryption key that is stored in Google Cloud KMS.","description_kind":"plain","required":true}},"description":"Encrypts or decrypts a disk using a customer-supplied encryption key.","description_kind":"plain"},"max_items":1}},"description":"Disks to attach to instances created from this template. This can be specified multiple times for multiple disks.","description_kind":"plain"},"min_items":1},"guest_accelerator":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of the guest accelerator cards exposed to this instance.","description_kind":"plain","required":true},"type":{"type":"string","description":"The accelerator type resource to expose to this instance. E.g. nvidia-tesla-k80.","description_kind":"plain","required":true}},"description":"List of the type and count of accelerator cards attached to the instance.","description_kind":"plain"}},"network_interface":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The name of the network_interface.","description_kind":"plain","computed":true},"network":{"type":"string","description":"The name or self_link of the network to attach this interface to. Use network attribute for Legacy or Auto subnetted networks and subnetwork for custom subnetted networks.","description_kind":"plain","optional":true,"computed":true},"network_ip":{"type":"string","description":"The private IP address to assign to the instance. If empty, the address will be automatically assigned.","description_kind":"plain","optional":true},"subnetwork":{"type":"string","description":"The name of the subnetwork to attach this interface to. The subnetwork must exist in the same region this instance will be created in. Either network or subnetwork must be provided.","description_kind":"plain","optional":true,"computed":true},"subnetwork_project":{"type":"string","description":"The ID of the project in which the subnetwork belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"access_config":{"nesting_mode":"list","block":{"attributes":{"nat_ip":{"type":"string","description":"The IP address that will be 1:1 mapped to the instance's network ip. If not given, one will be generated.","description_kind":"plain","optional":true,"computed":true},"network_tier":{"type":"string","description":"The networking tier used for configuring this instance template. This field can take the following values: PREMIUM or STANDARD. If this field is not specified, it is assumed to be PREMIUM.","description_kind":"plain","optional":true,"computed":true},"public_ptr_domain_name":{"type":"string","description":"The DNS domain name for the public PTR record.The DNS domain name for the public PTR record.","description_kind":"plain","computed":true}},"description":"Access configurations, i.e. IPs via which this instance can be accessed via the Internet. Omit to ensure that the instance is not accessible from the Internet (this means that ssh provisioners will not work unless you are running Terraform can send traffic to the instance's network (e.g. via tunnel or because it is running on another cloud instance on that network). This block can be repeated multiple times.","description_kind":"plain"}},"alias_ip_range":{"nesting_mode":"list","block":{"attributes":{"ip_cidr_range":{"type":"string","description":"The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. At the time of writing only a netmask (e.g. /24) may be supplied, with a CIDR format resulting in an API error.","description_kind":"plain","required":true},"subnetwork_range_name":{"type":"string","description":"The subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.","description_kind":"plain","optional":true}},"description":"An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.","description_kind":"plain"}}},"description":"Networks to attach to instances created from this template. This can be specified multiple times for multiple networks.","description_kind":"plain"}},"scheduling":{"nesting_mode":"list","block":{"attributes":{"automatic_restart":{"type":"bool","description":"Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). This defaults to true.","description_kind":"plain","optional":true},"on_host_maintenance":{"type":"string","description":"Defines the maintenance behavior for this instance.","description_kind":"plain","optional":true,"computed":true},"preemptible":{"type":"bool","description":"Allows instance to be preempted. This defaults to false.","description_kind":"plain","optional":true}},"block_types":{"node_affinities":{"nesting_mode":"set","block":{"attributes":{"key":{"type":"string","description_kind":"plain","required":true},"operator":{"type":"string","description_kind":"plain","required":true},"values":{"type":["set","string"],"description_kind":"plain","required":true}},"description":"Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.","description_kind":"plain"}}},"description":"The scheduling strategy to use.","description_kind":"plain"},"max_items":1},"service_account":{"nesting_mode":"list","block":{"attributes":{"email":{"type":"string","description":"The service account e-mail address. If not given, the default Google Compute Engine service account is used.","description_kind":"plain","optional":true,"computed":true},"scopes":{"type":["set","string"],"description":"A list of service scopes. Both OAuth2 URLs and gcloud short names are supported. To allow full access to all Cloud APIs, use the cloud-platform scope.","description_kind":"plain","required":true}},"description":"Service account to attach to the instance.","description_kind":"plain"},"max_items":1},"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description":"Compare the most recent boot measurements to the integrity policy baseline and return a pair of pass/fail results depending on whether they match or not. Defaults to true.","description_kind":"plain","optional":true},"enable_secure_boot":{"type":"bool","description":"Verify the digital signature of all boot components, and halt the boot process if signature verification fails. Defaults to false.","description_kind":"plain","optional":true},"enable_vtpm":{"type":"bool","description":"Use a virtualized trusted platform module, which is a specialized computer chip you can use to encrypt objects like keys and certificates. Defaults to true.","description_kind":"plain","optional":true}},"description":"Enable Shielded VM on this instance. Shielded VM provides verifiable integrity to prevent against malware and rootkits. Defaults to disabled. Note: shielded_instance_config can only be used with boot images with shielded vm support.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_interconnect_attachment":{"version":0,"block":{"attributes":{"admin_enabled":{"type":"bool","description":"Whether the VLAN attachment is enabled or disabled. When using\nPARTNER type this will Pre-Activate the interconnect attachment","description_kind":"plain","optional":true},"bandwidth":{"type":"string","description":"Provisioned bandwidth capacity for the interconnect attachment.\nFor attachments of type DEDICATED, the user can set the bandwidth.\nFor attachments of type PARTNER, the Google Partner that is operating the interconnect must set the bandwidth.\nOutput only for PARTNER type, mutable for PARTNER_PROVIDER and DEDICATED,\nDefaults to BPS_10G Possible values: [\"BPS_50M\", \"BPS_100M\", \"BPS_200M\", \"BPS_300M\", \"BPS_400M\", \"BPS_500M\", \"BPS_1G\", \"BPS_2G\", \"BPS_5G\", \"BPS_10G\", \"BPS_20G\", \"BPS_50G\"]","description_kind":"plain","optional":true,"computed":true},"candidate_subnets":{"type":["list","string"],"description":"Up to 16 candidate prefixes that can be used to restrict the allocation\nof cloudRouterIpAddress and customerRouterIpAddress for this attachment.\nAll prefixes must be within link-local address space (169.254.0.0/16)\nand must be /29 or shorter (/28, /27, etc). Google will attempt to select\nan unused /29 from the supplied candidate prefix(es). The request will\nfail if all possible /29s are in use on Google's edge. If not supplied,\nGoogle will randomly select an unused /29 from all of link-local space.","description_kind":"plain","optional":true},"cloud_router_ip_address":{"type":"string","description":"IPv4 address + prefix length to be configured on Cloud Router\nInterface for this interconnect attachment.","description_kind":"plain","computed":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"customer_router_ip_address":{"type":"string","description":"IPv4 address + prefix length to be configured on the customer\nrouter subinterface for this interconnect attachment.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"edge_availability_domain":{"type":"string","description":"Desired availability domain for the attachment. Only available for type\nPARTNER, at creation time. For improved reliability, customers should\nconfigure a pair of attachments with one per availability domain. The\nselected availability domain will be provided to the Partner via the\npairing key so that the provisioned circuit will lie in the specified\ndomain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.","description_kind":"plain","optional":true,"computed":true},"google_reference_id":{"type":"string","description":"Google reference ID, to be used when raising support tickets with\nGoogle or otherwise to debug backend connectivity issues.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interconnect":{"type":"string","description":"URL of the underlying Interconnect object that this attachment's\ntraffic will traverse through. Required if type is DEDICATED, must not\nbe set if type is PARTNER.","description_kind":"plain","optional":true},"mtu":{"type":"number","description":"Maximum Transmission Unit (MTU), in bytes, of packets passing through\nthis interconnect attachment. Currently, only 1440 and 1500 are allowed. If not specified, the value will default to 1440.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is created. The\nname must be 1-63 characters long, and comply with RFC1035. Specifically, the\nname must be 1-63 characters long and match the regular expression\n'[a-z]([-a-z0-9]*[a-z0-9])?' which means the first character must be a\nlowercase letter, and all following characters must be a dash, lowercase\nletter, or digit, except the last character, which cannot be a dash.","description_kind":"plain","required":true},"pairing_key":{"type":"string","description":"[Output only for type PARTNER. Not present for DEDICATED]. The opaque\nidentifier of an PARTNER attachment used to initiate provisioning with\na selected partner. Of the form \"XXXXX/region/domain\"","description_kind":"plain","computed":true},"partner_asn":{"type":"string","description":"[Output only for type PARTNER. Not present for DEDICATED]. Optional\nBGP ASN for the router that should be supplied by a layer 3 Partner if\nthey configured BGP on behalf of the customer.","description_kind":"plain","computed":true},"private_interconnect_info":{"type":["list",["object",{"tag8021q":"number"}]],"description":"Information specific to an InterconnectAttachment. This property\nis populated if the interconnect that this is attached to is of type DEDICATED.","description_kind":"plain","computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where the regional interconnect attachment resides.","description_kind":"plain","optional":true,"computed":true},"router":{"type":"string","description":"URL of the cloud router to be used for dynamic routing. This router must be in\nthe same region as this InterconnectAttachment. The InterconnectAttachment will\nautomatically connect the Interconnect to the network \u0026 region within which the\nCloud Router is configured.","description_kind":"plain","required":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"state":{"type":"string","description":"[Output Only] The current state of this attachment's functionality.","description_kind":"plain","computed":true},"type":{"type":"string","description":"The type of InterconnectAttachment you wish to create. Defaults to\nDEDICATED. Possible values: [\"DEDICATED\", \"PARTNER\", \"PARTNER_PROVIDER\"]","description_kind":"plain","optional":true,"computed":true},"vlan_tag8021q":{"type":"number","description":"The IEEE 802.1Q VLAN tag for this attachment, in the range 2-4094. When\nusing PARTNER type this will be managed upstream.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_managed_ssl_certificate":{"version":0,"block":{"attributes":{"certificate_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","optional":true,"computed":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"expire_time":{"type":"string","description":"Expire time of the certificate.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.\n\n\nThese are in the same namespace as the managed SSL certificates.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"subject_alternative_names":{"type":["list","string"],"description":"Domains associated with the certificate via Subject Alternative Name.","description_kind":"plain","computed":true},"type":{"type":"string","description":"Enum field whose value is always 'MANAGED' - used to signal to the API\nwhich type this is. Default value: \"MANAGED\" Possible values: [\"MANAGED\"]","description_kind":"plain","optional":true}},"block_types":{"managed":{"nesting_mode":"list","block":{"attributes":{"domains":{"type":["list","string"],"description":"Domains for which a managed SSL certificate will be valid. Currently,\nthere can be up to 100 domains in this list.","description_kind":"plain","required":true}},"description":"Properties relevant to a managed certificate. These will be used if the\ncertificate is managed (as indicated by a value of 'MANAGED' in 'type').","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_network":{"version":0,"block":{"attributes":{"auto_create_subnetworks":{"type":"bool","description":"When set to 'true', the network is created in \"auto subnet mode\" and\nit will create a subnet for each region automatically across the\n'10.128.0.0/9' address range.\n\nWhen set to 'false', the network is created in \"custom subnet mode\" so\nthe user can explicitly connect subnetwork resources.","description_kind":"plain","optional":true},"delete_default_routes_on_create":{"type":"bool","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource. The resource must be\nrecreated to modify this field.","description_kind":"plain","optional":true},"gateway_ipv4":{"type":"string","description":"The gateway address for default routing out of the network. This value\nis selected by GCP.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"mtu":{"type":"number","description":"Maximum Transmission Unit in bytes. The minimum value for this field is 1460\nand the maximum value is 1500 bytes.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"routing_mode":{"type":"string","description":"The network-wide routing mode to use. If set to 'REGIONAL', this\nnetwork's cloud routers will only advertise routes with subnetworks\nof this network in the same region as the router. If set to 'GLOBAL',\nthis network's cloud routers will advertise routes with all\nsubnetworks of this network, across regions. Possible values: [\"REGIONAL\", \"GLOBAL\"]","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_network_endpoint":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description":"The name for a specific VM instance that the IP address belongs to.\nThis is required for network endpoints of type GCE_VM_IP_PORT.\nThe instance must be in the same zone of network endpoint group.","description_kind":"plain","required":true},"ip_address":{"type":"string","description":"IPv4 address of network endpoint. The IP address must belong\nto a VM in GCE (either the primary IP or as part of an aliased IP\nrange).","description_kind":"plain","required":true},"network_endpoint_group":{"type":"string","description":"The network endpoint group this endpoint is part of.","description_kind":"plain","required":true},"port":{"type":"number","description":"Port number of network endpoint.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description":"Zone where the containing network endpoint group is located.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_network_endpoint_group":{"version":0,"block":{"attributes":{"default_port":{"type":"number","description":"The default port used if the port number is not specified in the\nnetwork endpoint.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The network to which all network endpoints in the NEG belong.\nUses \"default\" project network if unspecified.","description_kind":"plain","required":true},"network_endpoint_type":{"type":"string","description":"Type of network endpoints in this network endpoint group. Default value: \"GCE_VM_IP_PORT\" Possible values: [\"GCE_VM_IP_PORT\"]","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"size":{"type":"number","description":"Number of network endpoints in the network endpoint group.","description_kind":"plain","computed":true},"subnetwork":{"type":"string","description":"Optional subnetwork to which all network endpoints in the NEG belong.","description_kind":"plain","optional":true},"zone":{"type":"string","description":"Zone where the network endpoint group is located.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_network_peering":{"version":0,"block":{"attributes":{"export_custom_routes":{"type":"bool","description":"Whether to export the custom routes to the peer network. Defaults to false.","description_kind":"plain","optional":true},"export_subnet_routes_with_public_ip":{"type":"bool","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"import_custom_routes":{"type":"bool","description":"Whether to export the custom routes from the peer network. Defaults to false.","description_kind":"plain","optional":true},"import_subnet_routes_with_public_ip":{"type":"bool","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the peering.","description_kind":"plain","required":true},"network":{"type":"string","description":"The primary network of the peering.","description_kind":"plain","required":true},"peer_network":{"type":"string","description":"The peer network in the peering. The peer network may belong to a different project.","description_kind":"plain","required":true},"state":{"type":"string","description":"State for the peering, either ACTIVE or INACTIVE. The peering is ACTIVE when there's a matching configuration in the peer network.","description_kind":"plain","computed":true},"state_details":{"type":"string","description":"Details about the current state of the peering.","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_network_peering_routes_config":{"version":0,"block":{"attributes":{"export_custom_routes":{"type":"bool","description":"Whether to export the custom routes to the peer network.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"import_custom_routes":{"type":"bool","description":"Whether to import the custom routes to the peer network.","description_kind":"plain","required":true},"network":{"type":"string","description":"The name of the primary network for the peering.","description_kind":"plain","required":true},"peering":{"type":"string","description":"Name of the peering.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_node_group":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional textual description of the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"maintenance_policy":{"type":"string","description":"Specifies how to handle instances when a node in the group undergoes maintenance. Set to one of: DEFAULT, RESTART_IN_PLACE, or MIGRATE_WITHIN_NODE_GROUP. The default value is DEFAULT.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource.","description_kind":"plain","optional":true},"node_template":{"type":"string","description":"The URL of the node template to which this node group belongs.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"size":{"type":"number","description":"The total number of nodes in the node group.","description_kind":"plain","required":true},"zone":{"type":"string","description":"Zone where this node group is located","description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscaling_policy":{"nesting_mode":"list","block":{"attributes":{"max_nodes":{"type":"number","description":"Maximum size of the node group. Set to a value less than or equal\nto 100 and greater than or equal to min-nodes.","description_kind":"plain","optional":true,"computed":true},"min_nodes":{"type":"number","description":"Minimum size of the node group. Must be less\nthan or equal to max-nodes. The default value is 0.","description_kind":"plain","optional":true,"computed":true},"mode":{"type":"string","description":"The autoscaling mode. Set to one of the following:\n - OFF: Disables the autoscaler.\n - ON: Enables scaling in and scaling out.\n - ONLY_SCALE_OUT: Enables only scaling out.\n You must use this mode if your node groups are configured to\n restart their hosted VMs on minimal servers. Possible values: [\"OFF\", \"ON\", \"ONLY_SCALE_OUT\"]","description_kind":"plain","optional":true,"computed":true}},"description":"If you use sole-tenant nodes for your workloads, you can use the node\ngroup autoscaler to automatically manage the sizes of your node groups.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_node_template":{"version":0,"block":{"attributes":{"cpu_overcommit_type":{"type":"string","description":"CPU overcommit. Default value: \"NONE\" Possible values: [\"ENABLED\", \"NONE\"]","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional textual description of the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource.","description_kind":"plain","optional":true},"node_affinity_labels":{"type":["map","string"],"description":"Labels to use for node affinity, which will be used in\ninstance scheduling.","description_kind":"plain","optional":true},"node_type":{"type":"string","description":"Node type to use for nodes group that are created from this template.\nOnly one of nodeTypeFlexibility and nodeType can be specified.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where nodes using the node template will be created.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"node_type_flexibility":{"nesting_mode":"list","block":{"attributes":{"cpus":{"type":"string","description":"Number of virtual CPUs to use.","description_kind":"plain","optional":true},"local_ssd":{"type":"string","description":"Use local SSD","description_kind":"plain","computed":true},"memory":{"type":"string","description":"Physical memory available to the node, defined in MB.","description_kind":"plain","optional":true}},"description":"Flexible properties for the desired node type. Node groups that\nuse this node template will create nodes of a type that matches\nthese properties. Only one of nodeTypeFlexibility and nodeType can\nbe specified.","description_kind":"plain"},"max_items":1},"server_binding":{"nesting_mode":"list","block":{"attributes":{"type":{"type":"string","description":"Type of server binding policy. If 'RESTART_NODE_ON_ANY_SERVER',\nnodes using this template will restart on any physical server\nfollowing a maintenance event.\n\nIf 'RESTART_NODE_ON_MINIMAL_SERVER', nodes using this template\nwill restart on the same physical server following a maintenance\nevent, instead of being live migrated to or restarted on a new\nphysical server. This option may be useful if you are using\nsoftware licenses tied to the underlying server characteristics\nsuch as physical sockets or cores, to avoid the need for\nadditional licenses when maintenance occurs. However, VMs on such\nnodes will experience outages while maintenance is applied. Possible values: [\"RESTART_NODE_ON_ANY_SERVER\", \"RESTART_NODE_ON_MINIMAL_SERVERS\"]","description_kind":"plain","required":true}},"description":"The server binding policy for nodes using this template. Determines\nwhere the nodes should restart following a maintenance event.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_packet_mirroring":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"A human-readable description of the rule.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the packet mirroring rule","description_kind":"plain","required":true},"priority":{"type":"number","description":"Since only one rule can be active at a time, priority is\nused to break ties in the case of two rules that apply to\nthe same instances.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The Region in which the created address should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"collector_ilb":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL of the forwarding rule.","description_kind":"plain","required":true}},"description":"The Forwarding Rule resource (of type load_balancing_scheme=INTERNAL)\nthat will be used as collector for mirrored traffic. The\nspecified forwarding rule must have is_mirroring_collector\nset to true.","description_kind":"plain"},"
[2021-03-30T16:04:49.149] [DEBUG] default - min_items":1,"max_items":1},"filter":{"nesting_mode":"list","block":{"attributes":{"cidr_ranges":{"type":["list","string"],"description":"IP CIDR ranges that apply as a filter on the source (ingress) or\ndestination (egress) IP in the IP header. Only IPv4 is supported.","description_kind":"plain","optional":true},"direction":{"type":"string","description":"Direction of traffic to mirror. Default value: \"BOTH\" Possible values: [\"INGRESS\", \"EGRESS\", \"BOTH\"]","description_kind":"plain","optional":true},"ip_protocols":{"type":["list","string"],"description":"Protocols that apply as a filter on mirrored traffic. Possible values: [\"tcp\", \"udp\", \"icmp\"]","description_kind":"plain","optional":true}},"description":"A filter for mirrored traffic. If unset, all traffic is mirrored.","description_kind":"plain"},"max_items":1},"mirrored_resources":{"nesting_mode":"list","block":{"attributes":{"tags":{"type":["list","string"],"description":"All instances with these tags will be mirrored.","description_kind":"plain","optional":true}},"block_types":{"instances":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL of the instances where this rule should be active.","description_kind":"plain","required":true}},"description":"All the listed instances will be mirrored. Specify at most 50.","description_kind":"plain"}},"subnetworks":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The URL of the subnetwork where this rule should be active.","description_kind":"plain","required":true}},"description":"All instances in one of these subnetworks will be mirrored.","description_kind":"plain"}}},"description":"A means of specifying which resources to mirror.","description_kind":"plain"},"min_items":1,"max_items":1},"network":{"nesting_mode":"list","block":{"attributes":{"url":{"type":"string","description":"The full self_link URL of the network where this rule is active.","description_kind":"plain","required":true}},"description":"Specifies the mirrored VPC network. Only packets in this network\nwill be mirrored. All mirrored VMs should have a NIC in the given\nnetwork. All mirrored subnetworks should belong to the given network.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_per_instance_config":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_group_manager":{"type":"string","description":"The instance group manager this instance config is part of.","description_kind":"plain","required":true},"minimal_action":{"type":"string","description_kind":"plain","optional":true},"most_disruptive_allowed_action":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name for this per-instance config and its corresponding instance.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"remove_instance_state_on_destroy":{"type":"bool","description_kind":"plain","optional":true},"zone":{"type":"string","description":"Zone where the containing instance group manager is located","description_kind":"plain","optional":true}},"block_types":{"preserved_state":{"nesting_mode":"list","block":{"attributes":{"metadata":{"type":["map","string"],"description":"Preserved metadata defined for this instance. This is a list of key-\u003evalue pairs.","description_kind":"plain","optional":true}},"block_types":{"disk":{"nesting_mode":"set","block":{"attributes":{"delete_rule":{"type":"string","description":"A value that prescribes what should happen to the stateful disk when the VM instance is deleted.\nThe available options are 'NEVER' and 'ON_PERMANENT_INSTANCE_DELETION'.\n'NEVER' - detach the disk when the VM is deleted, but do not delete the disk.\n'ON_PERMANENT_INSTANCE_DELETION' will delete the stateful disk when the VM is permanently\ndeleted from the instance group. Default value: \"NEVER\" Possible values: [\"NEVER\", \"ON_PERMANENT_INSTANCE_DELETION\"]","description_kind":"plain","optional":true},"device_name":{"type":"string","description":"A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance.","description_kind":"plain","required":true},"mode":{"type":"string","description":"The mode of the disk. Default value: \"READ_WRITE\" Possible values: [\"READ_ONLY\", \"READ_WRITE\"]","description_kind":"plain","optional":true},"source":{"type":"string","description":"The URI of an existing persistent disk to attach under the specified device-name in the format\n'projects/project-id/zones/zone/disks/disk-name'.","description_kind":"plain","required":true}},"description":"Stateful disks for the instance.","description_kind":"plain"}}},"description":"The preserved state for this instance.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_project_default_network_tier":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"network_tier":{"type":"string","description":"The default network tier to be configured for the project. This field can take the following values: PREMIUM or STANDARD.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_project_metadata":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"metadata":{"type":["map","string"],"description":"A series of key value pairs.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_project_metadata_item":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"key":{"type":"string","description":"The metadata key to set.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"value":{"type":"string","description":"The value to set for the given metadata key.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_autoscaler":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. The name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"URL of the region where the instance group resides.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"target":{"type":"string","description":"URL of the managed instance group that this autoscaler will scale.","description_kind":"plain","required":true}},"block_types":{"autoscaling_policy":{"nesting_mode":"list","block":{"attributes":{"cooldown_period":{"type":"number","description":"The number of seconds that the autoscaler should wait before it\nstarts collecting information from a new instance. This prevents\nthe autoscaler from collecting information when the instance is\ninitializing, during which the collected usage would not be\nreliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of\nnumerous factors. We recommend that you test how long an\ninstance may take to initialize. To do this, create an instance\nand time the startup process.","description_kind":"plain","optional":true},"max_replicas":{"type":"number","description":"The maximum number of instances that the autoscaler can scale up\nto. This is required when creating or updating an autoscaler. The\nmaximum number of replicas should not be lower than minimal number\nof replicas.","description_kind":"plain","required":true},"min_replicas":{"type":"number","description":"The minimum number of replicas that the autoscaler can scale down\nto. This cannot be less than 0. If not provided, autoscaler will\nchoose a default value depending on maximum number of instances\nallowed.","description_kind":"plain","required":true},"mode":{"type":"string","description":"Defines operating mode for this policy. Default value: \"ON\" Possible values: [\"OFF\", \"ONLY_UP\", \"ON\"]","description_kind":"plain","optional":true}},"block_types":{"cpu_utilization":{"nesting_mode":"list","block":{"attributes":{"target":{"type":"number","description":"The target CPU utilization that the autoscaler should maintain.\nMust be a float value in the range (0, 1]. If not specified, the\ndefault is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler\nscales down the number of instances until it reaches the minimum\nnumber of instances you specified or until the average CPU of\nyour instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler\nscales up until it reaches the maximum number of instances you\nspecified or until the average utilization reaches the target\nutilization.","description_kind":"plain","required":true}},"description":"Defines the CPU utilization policy that allows the autoscaler to\nscale based on the average CPU utilization of a managed instance\ngroup.","description_kind":"plain"},"max_items":1},"load_balancing_utilization":{"nesting_mode":"list","block":{"attributes":{"target":{"type":"number","description":"Fraction of backend capacity utilization (set in HTTP(s) load\nbalancing configuration) that autoscaler should maintain. Must\nbe a positive float value. If not defined, the default is 0.8.","description_kind":"plain","required":true}},"description":"Configuration parameters of autoscaling based on a load balancer.","description_kind":"plain"},"max_items":1},"metric":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"The identifier (type) of the Stackdriver Monitoring metric.\nThe metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE.","description_kind":"plain","required":true},"target":{"type":"number","description":"The target value of the metric that autoscaler should\nmaintain. This must be a positive value. A utilization\nmetric scales number of virtual machines handling requests\nto increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilizationTarget is\nwww.googleapis.com/compute/instance/network/received_bytes_count.\nThe autoscaler will work to keep this value constant for each\nof the instances.","description_kind":"plain","optional":true},"type":{"type":"string","description":"Defines how target utilization value is expressed for a\nStackdriver Monitoring metric. Possible values: [\"GAUGE\", \"DELTA_PER_SECOND\", \"DELTA_PER_MINUTE\"]","description_kind":"plain","optional":true}},"description":"Configuration parameters of autoscaling based on a custom metric.","description_kind":"plain"}},"scale_in_control":{"nesting_mode":"list","block":{"attributes":{"time_window_sec":{"type":"number","description":"How long back autoscaling should look when computing recommendations\nto include directives regarding slower scale down, as described above.","description_kind":"plain","optional":true}},"block_types":{"max_scaled_in_replicas":{"nesting_mode":"list","block":{"attributes":{"fixed":{"type":"number","description":"Specifies a fixed number of VM instances. This must be a positive\ninteger.","description_kind":"plain","optional":true},"percent":{"type":"number","description":"Specifies a percentage of instances between 0 to 100%, inclusive.\nFor example, specify 80 for 80%.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1}},"description":"Defines scale in controls to reduce the risk of response latency\nand outages due to abrupt scale-in events","description_kind":"plain"},"max_items":1}},"description":"The configuration parameters for the autoscaling algorithm. You can\ndefine one or more of the policies for an autoscaler: cpuUtilization,\ncustomMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based\non cpuUtilization to 0.6 or 60%.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_backend_service":{"version":1,"block":{"attributes":{"affinity_cookie_ttl_sec":{"type":"number","description":"Lifetime of cookies in seconds if session_affinity is\nGENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts\nonly until the end of the browser session (or equivalent). The\nmaximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.","description_kind":"plain","optional":true},"connection_draining_timeout_sec":{"type":"number","description":"Time for which instance will be drained (not accept new\nconnections, but still work to finish started).","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"enable_cdn":{"type":"bool","description":"If true, enable Cloud CDN for this RegionBackendService.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. A hash of the contents stored in this\nobject. This field is used in optimistic locking.","description_kind":"plain","computed":true},"health_checks":{"type":["set","string"],"description":"The set of URLs to HealthCheck resources for health checking\nthis RegionBackendService. Currently at most one health\ncheck can be specified.\n\nA health check must be specified unless the backend service uses an internet\nor serverless NEG as a backend.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"load_balancing_scheme":{"type":"string","description":"Indicates what kind of load balancing this regional backend service\nwill be used for. A backend service created for one type of load\nbalancing cannot be used with the other(s). Default value: \"INTERNAL\" Possible values: [\"EXTERNAL\", \"INTERNAL\", \"INTERNAL_MANAGED\"]","description_kind":"plain","optional":true},"locality_lb_policy":{"type":"string","description":"The load balancing algorithm used within the scope of the locality.\nThe possible values are -\n\n* ROUND_ROBIN - This is a simple policy in which each healthy backend\n is selected in round robin order.\n\n* LEAST_REQUEST - An O(1) algorithm which selects two random healthy\n hosts and picks the host which has fewer active requests.\n\n* RING_HASH - The ring/modulo hash load balancer implements consistent\n hashing to backends. The algorithm has the property that the\n addition/removal of a host from a set of N hosts only affects\n 1/N of the requests.\n\n* RANDOM - The load balancer selects a random healthy host.\n\n* ORIGINAL_DESTINATION - Backend host is selected based on the client\n connection metadata, i.e., connections are opened\n to the same address as the destination address of\n the incoming connection before the connection\n was redirected to the load balancer.\n\n* MAGLEV - used as a drop in replacement for the ring hash load balancer.\n Maglev is not as stable as ring hash but has faster table lookup\n build times and host selection times. For more information about\n Maglev, refer to https://ai.google/research/pubs/pub44824\n\nThis field is applicable only when the 'load_balancing_scheme' is set to\nINTERNAL_MANAGED and the 'protocol' is set to HTTP, HTTPS, or HTTP2. Possible values: [\"ROUND_ROBIN\", \"LEAST_REQUEST\", \"RING_HASH\", \"RANDOM\", \"ORIGINAL_DESTINATION\", \"MAGLEV\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The URL of the network to which this backend service belongs.\nThis field can only be specified when the load balancing scheme is set to INTERNAL.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"A named port on a backend instance group representing the port for\ncommunication to the backend VMs in that group. Required when the\nloadBalancingScheme is EXTERNAL, INTERNAL_MANAGED, or INTERNAL_SELF_MANAGED\nand the backends are instance groups. The named port must be defined on each\nbackend instance group. This parameter has no meaning if the backends are NEGs. API sets a\ndefault of \"http\" if not given.\nMust be omitted when the loadBalancingScheme is INTERNAL (Internal TCP/UDP Load Balancing).","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"protocol":{"type":"string","description":"The protocol this RegionBackendService uses to communicate with backends.\nThe default is HTTP. **NOTE**: HTTP2 is only valid for beta HTTP/2 load balancer\ntypes and may result in errors if used with the GA API. Possible values: [\"HTTP\", \"HTTPS\", \"HTTP2\", \"SSL\", \"TCP\", \"UDP\", \"GRPC\"]","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The Region in which the created backend service should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"session_affinity":{"type":"string","description":"Type of session affinity to use. The default is NONE. Session affinity is\nnot applicable if the protocol is UDP. Possible values: [\"NONE\", \"CLIENT_IP\", \"CLIENT_IP_PORT_PROTO\", \"CLIENT_IP_PROTO\", \"GENERATED_COOKIE\", \"HEADER_FIELD\", \"HTTP_COOKIE\"]","description_kind":"plain","optional":true,"computed":true},"timeout_sec":{"type":"number","description":"How many seconds to wait for the backend before considering it a\nfailed request. Default is 30 seconds. Valid range is [1, 86400].","description_kind":"plain","optional":true,"computed":true}},"block_types":{"backend":{"nesting_mode":"set","block":{"attributes":{"balancing_mode":{"type":"string","description":"Specifies the balancing mode for this backend. Default value: \"CONNECTION\" Possible values: [\"UTILIZATION\", \"RATE\", \"CONNECTION\"]","description_kind":"plain","optional":true},"capacity_scaler":{"type":"number","description":"A multiplier applied to the group's maximum servicing capacity\n(based on UTILIZATION, RATE or CONNECTION).\n\n~\u003e**NOTE**: This field cannot be set for\nINTERNAL region backend services (default loadBalancingScheme),\nbut is required for non-INTERNAL backend service. The total\ncapacity_scaler for all backends must be non-zero.\n\nA setting of 0 means the group is completely drained, offering\n0% of its available Capacity. Valid range is [0.0,1.0].","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource.\nProvide this property when you create the resource.","description_kind":"plain","optional":true},"failover":{"type":"bool","description":"This field designates whether this is a failover backend. More\nthan one failover backend can be configured for a given RegionBackendService.","description_kind":"plain","optional":true,"computed":true},"group":{"type":"string","description":"The fully-qualified URL of an Instance Group or Network Endpoint\nGroup resource. In case of instance group this defines the list\nof instances that serve traffic. Member virtual machine\ninstances from each instance group must live in the same zone as\nthe instance group itself. No two backends in a backend service\nare allowed to use same Instance Group resource.\n\nFor Network Endpoint Groups this defines list of endpoints. All\nendpoints of Network Endpoint Group must be hosted on instances\nlocated in the same zone as the Network Endpoint Group.\n\nBackend services cannot mix Instance Group and\nNetwork Endpoint Group backends.\n\nWhen the 'load_balancing_scheme' is INTERNAL, only instance groups\nare supported.\n\nNote that you must specify an Instance Group or Network Endpoint\nGroup resource using the fully-qualified URL, rather than a\npartial URL.","description_kind":"plain","required":true},"max_connections":{"type":"number","description":"The max number of simultaneous connections for the group. Can\nbe used with either CONNECTION or UTILIZATION balancing modes.\nCannot be set for INTERNAL backend services.\n\nFor CONNECTION mode, either maxConnections or one\nof maxConnectionsPerInstance or maxConnectionsPerEndpoint,\nas appropriate for group type, must be set.","description_kind":"plain","optional":true},"max_connections_per_endpoint":{"type":"number","description":"The max number of simultaneous connections that a single backend\nnetwork endpoint can handle. Cannot be set\nfor INTERNAL backend services.\n\nThis is used to calculate the capacity of the group. Can be\nused in either CONNECTION or UTILIZATION balancing modes. For\nCONNECTION mode, either maxConnections or\nmaxConnectionsPerEndpoint must be set.","description_kind":"plain","optional":true},"max_connections_per_instance":{"type":"number","description":"The max number of simultaneous connections that a single\nbackend instance can handle. Cannot be set for INTERNAL backend\nservices.\n\nThis is used to calculate the capacity of the group.\nCan be used in either CONNECTION or UTILIZATION balancing modes.\nFor CONNECTION mode, either maxConnections or\nmaxConnectionsPerInstance must be set.","description_kind":"plain","optional":true},"max_rate":{"type":"number","description":"The max requests per second (RPS) of the group. Cannot be set\nfor INTERNAL backend services.\n\nCan be used with either RATE or UTILIZATION balancing modes,\nbut required if RATE mode. Either maxRate or one\nof maxRatePerInstance or maxRatePerEndpoint, as appropriate for\ngroup type, must be set.","description_kind":"plain","optional":true},"max_rate_per_endpoint":{"type":"number","description":"The max requests per second (RPS) that a single backend network\nendpoint can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerEndpoint must be set. Cannot be set\nfor INTERNAL backend services.","description_kind":"plain","optional":true},"max_rate_per_instance":{"type":"number","description":"The max requests per second (RPS) that a single backend\ninstance can handle. This is used to calculate the capacity of\nthe group. Can be used in either balancing mode. For RATE mode,\neither maxRate or maxRatePerInstance must be set. Cannot be set\nfor INTERNAL backend services.","description_kind":"plain","optional":true},"max_utilization":{"type":"number","description":"Used when balancingMode is UTILIZATION. This ratio defines the\nCPU utilization target for the group. Valid range is [0.0, 1.0].\nCannot be set for INTERNAL backend services.","description_kind":"plain","optional":true}},"description":"The set of backends that serve this RegionBackendService.","description_kind":"plain"}},"cdn_policy":{"nesting_mode":"list","block":{"attributes":{"signed_url_cache_max_age_sec":{"type":"number","description":"Maximum number of seconds the response to a signed URL request\nwill be considered fresh, defaults to 1hr (3600s). After this\ntime period, the response will be revalidated before\nbeing served.\n\nWhen serving responses to signed URL requests, Cloud CDN will\ninternally behave as though all responses from this backend had a\n\"Cache-Control: public, max-age=[TTL]\" header, regardless of any\nexisting Cache-Control header. The actual headers served in\nresponses will not be altered.","description_kind":"plain","optional":true}},"block_types":{"cache_key_policy":{"nesting_mode":"list","block":{"attributes":{"include_host":{"type":"bool","description":"If true requests to different hosts will be cached separately.","description_kind":"plain","optional":true},"include_protocol":{"type":"bool","description":"If true, http and https requests will be cached separately.","description_kind":"plain","optional":true},"include_query_string":{"type":"bool","description":"If true, include query string parameters in the cache key\naccording to query_string_whitelist and\nquery_string_blacklist. If neither is set, the entire query\nstring will be included.\n\nIf false, the query string will be excluded from the cache\nkey entirely.","description_kind":"plain","optional":true},"query_string_blacklist":{"type":["set","string"],"description":"Names of query string parameters to exclude in cache keys.\n\nAll other parameters will be included. Either specify\nquery_string_whitelist or query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.","description_kind":"plain","optional":true},"query_string_whitelist":{"type":["set","string"],"description":"Names of query string parameters to include in cache keys.\n\nAll other parameters will be excluded. Either specify\nquery_string_whitelist or query_string_blacklist, not both.\n'\u0026' and '=' will be percent encoded and not treated as\ndelimiters.","description_kind":"plain","optional":true}},"description":"The CacheKeyPolicy for this CdnPolicy.","description_kind":"plain"},"max_items":1}},"description":"Cloud CDN configuration for this BackendService.","description_kind":"plain"},"max_items":1},"circuit_breakers":{"nesting_mode":"list","block":{"attributes":{"max_connections":{"type":"number","description":"The maximum number of connections to the backend cluster.\nDefaults to 1024.","description_kind":"plain","optional":true},"max_pending_requests":{"type":"number","description":"The maximum number of pending requests to the backend cluster.\nDefaults to 1024.","description_kind":"plain","optional":true},"max_requests":{"type":"number","description":"The maximum number of parallel requests to the backend cluster.\nDefaults to 1024.","description_kind":"plain","optional":true},"max_requests_per_connection":{"type":"number","description":"Maximum requests for a single backend connection. This parameter\nis respected by both the HTTP/1.1 and HTTP/2 implementations. If\nnot specified, there is no limit. Setting this parameter to 1\nwill effectively disable keep alive.","description_kind":"plain","optional":true},"max_retries":{"type":"number","description":"The maximum number of parallel retries to the backend cluster.\nDefaults to 3.","description_kind":"plain","optional":true}},"description":"Settings controlling the volume of connections to a backend service. This field\nis applicable only when the 'load_balancing_scheme' is set to INTERNAL_MANAGED\nand the 'protocol' is set to HTTP, HTTPS, or HTTP2.","description_kind":"plain"},"max_items":1},"consistent_hash":{"nesting_mode":"list","block":{"attributes":{"http_header_name":{"type":"string","description":"The hash based on the value of the specified header field.\nThis field is applicable if the sessionAffinity is set to HEADER_FIELD.","description_kind":"plain","optional":true},"minimum_ring_size":{"type":"number","description":"The minimum number of virtual nodes to use for the hash ring.\nLarger ring sizes result in more granular load\ndistributions. If the number of hosts in the load balancing pool\nis larger than the ring size, each host will be assigned a single\nvirtual node.\nDefaults to 1024.","description_kind":"plain","optional":true}},"block_types":{"http_cookie":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of the cookie.","description_kind":"plain","optional":true},"path":{"type":"string","description":"Path to set for the cookie.","description_kind":"plain","optional":true}},"block_types":{"ttl":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond\nresolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must\nbe from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"number","description":"Span of time at a resolution of a second.\nMust be from 0 to 315,576,000,000 inclusive.","description_kind":"plain","required":true}},"description":"Lifetime of the cookie.","description_kind":"plain"},"max_items":1}},"description":"Hash is based on HTTP Cookie. This field describes a HTTP cookie\nthat will be used as the hash key for the consistent hash load\nbalancer. If the cookie is not present, it will be generated.\nThis field is applicable if the sessionAffinity is set to HTTP_COOKIE.","description_kind":"plain"},"max_items":1}},"description":"Consistent Hash-based load balancing can be used to provide soft session\naffinity based on HTTP headers, cookies or other properties. This load balancing\npolicy is applicable only for HTTP connections. The affinity to a particular\ndestination host will be lost when one or more hosts are added/removed from the\ndestination service. This field specifies parameters that control consistent\nhashing.\nThis field only applies when all of the following are true -\n * 'load_balancing_scheme' is set to INTERNAL_MANAGED\n * 'protocol' is set to HTTP, HTTPS, or HTTP2\n * 'locality_lb_policy' is set to MAGLEV or RING_HASH","description_kind":"plain"},"max_items":1},"failover_policy":{"nesting_mode":"list","block":{"attributes":{"disable_connection_drain_on_failover":{"type":"bool","description":"On failover or failback, this field indicates whether connection drain\nwill be honored. Setting this to true has the following effect: connections\nto the old active pool are not drained. Connections to the new active pool\nuse the timeout of 10 min (currently fixed). Setting to false has the\nfollowing effect: both old and new connections will have a drain timeout\nof 10 min.\nThis can be set to true only if the protocol is TCP.\nThe default is false.","description_kind":"plain","optional":true},"drop_traffic_if_unhealthy":{"type":"bool","description":"This option is used only when no healthy VMs are detected in the primary\nand backup instance groups. When set to true, traffic is dropped. When\nset to false, new connections are sent across all VMs in the primary group.\nThe default is false.","description_kind":"plain","optional":true},"failover_ratio":{"type":"number","description":"The value of the field must be in [0, 1]. If the ratio of the healthy\nVMs in the primary backend is at or below this number, traffic arriving\nat the load-balanced IP will be directed to the failover backend.\nIn case where 'failoverRatio' is not set or all the VMs in the backup\nbackend are unhealthy, the traffic will be directed back to the primary\nbackend in the \"force\" mode, where traffic will be spread to the healthy\nVMs with the best effort, or to all VMs when no VM is healthy.\nThis field is only used with l4 load balancing.","description_kind":"plain","optional":true}},"description":"Policy for failovers.","description_kind":"plain"},"max_items":1},"log_config":{"nesting_mode":"list","block":{"attributes":{"enable":{"type":"bool","description":"Whether to enable logging for the load balancer traffic served by this backend service.","description_kind":"plain","optional":true},"sample_rate":{"type":"number","description":"This field can only be specified if logging is enabled for this backend service. The value of\nthe field must be in [0, 1]. This configures the sampling rate of requests to the load balancer\nwhere 1.0 means all logged requests are reported and 0.0 means no logged requests are reported.\nThe default value is 1.0.","description_kind":"plain","optional":true}},"description":"This field denotes the logging options for the load balancer traffic served by this backend service.\nIf logging is enabled, logs will be exported to Stackdriver.","description_kind":"plain"},"max_items":1},"outlier_detection":{"nesting_mode":"list","block":{"attributes":{"consecutive_errors":{"type":"number","description":"Number of errors before a host is ejected from the connection pool. When the\nbackend host is accessed over HTTP, a 5xx return code qualifies as an error.\nDefaults to 5.","description_kind":"plain","optional":true},"consecutive_gateway_failure":{"type":"number","description":"The number of consecutive gateway failures (502, 503, 504 status or connection\nerrors that are mapped to one of those status codes) before a consecutive\ngateway failure ejection occurs. Defaults to 5.","description_kind":"plain","optional":true},"enforcing_consecutive_errors":{"type":"number","description":"The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive 5xx. This setting can be used to disable\nejection or to ramp it up slowly. Defaults to 100.","description_kind":"plain","optional":true},"enforcing_consecutive_gateway_failure":{"type":"number","description":"The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through consecutive gateway failures. This setting can be\nused to disable ejection or to ramp it up slowly. Defaults to 0.","description_kind":"plain","optional":true},"enforcing_success_rate":{"type":"number","description":"The percentage chance that a host will be actually ejected when an outlier\nstatus is detected through success rate statistics. This setting can be used to\ndisable ejection or to ramp it up slowly. Defaults to 100.","description_kind":"plain","optional":true},"max_ejection_percent":{"type":"number","description":"Maximum percentage of hosts in the load balancing pool for the backend service\nthat can be ejected. Defaults to 10%.","description_kind":"plain","optional":true},"success_rate_minimum_hosts":{"type":"number","description":"The number of hosts in a cluster that must have enough request volume to detect\nsuccess rate outliers. If the number of hosts is less than this setting, outlier\ndetection via success rate statistics is not performed for any host in the\ncluster. Defaults to 5.","description_kind":"plain","optional":true},"success_rate_request_volume":{"type":"number","description":"The minimum number of total requests that must be collected in one interval (as\ndefined by the interval duration above) to include this host in success rate\nbased outlier detection. If the volume is lower than this setting, outlier\ndetection via success rate statistics is not performed for that host. Defaults\nto 100.","description_kind":"plain","optional":true},"success_rate_stdev_factor":{"type":"number","description":"This factor is used to determine the ejection threshold for success rate outlier\nejection. The ejection threshold is the difference between the mean success\nrate, and the product of this factor and the standard deviation of the mean\nsuccess rate: mean - (stdev * success_rate_stdev_factor). This factor is divided\nby a thousand to get a double. That is, if the desired factor is 1.9, the\nruntime value should be 1900. Defaults to 1900.","description_kind":"plain","optional":true}},"block_types":{"base_ejection_time":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"number","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"The base time that a host is ejected for. The real time is equal to the base\ntime multiplied by the number of times the host has been ejected. Defaults to\n30000ms or 30s.","description_kind":"plain"},"max_items":1},"interval":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"number","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Time interval between ejection sweep analysis. This can result in both new\nejections as well as hosts being returned to service. Defaults to 10 seconds.","description_kind":"plain"},"max_items":1}},"description":"Settings controlling eviction of unhealthy hosts from the load balancing pool.\nThis field is applicable only when the 'load_balancing_scheme' is set\nto INTERNAL_MANAGED and the 'protocol' is set to HTTP, HTTPS, or HTTP2.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_disk":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"label_fingerprint":{"type":"string","description":"The fingerprint used for optimistic locking of this resource. Used\ninternally during updates.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Labels to apply to this disk. A list of key-\u003evalue pairs.","description_kind":"plain","optional":true},"last_attach_timestamp":{"type":"string","description":"Last attach timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"last_detach_timestamp":{"type":"string","description":"Last detach timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"physical_block_size_bytes":{"type":"number","description":"Physical block size of the persistent disk, in bytes. If not present\nin a request, a default value is used. Currently supported sizes\nare 4096 and 16384, other sizes may be added in the future.\nIf an unsupported value is requested, the error message will list\nthe supported values for the caller's project.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"A reference to the region where the disk resides.","description_kind":"plain","optional":true,"computed":true},"replica_zones":{"type":["list","string"],"description":"URLs of the zones where the disk should be replicated to.","description_kind":"plain","required":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"size":{"type":"number","description":"Size of the persistent disk, specified in GB. You can specify this\nfield when creating a persistent disk using the sourceImage or\nsourceSnapshot parameter, or specify it alone to create an empty\npersistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot,\nthe value of sizeGb must not be less than the size of the sourceImage\nor the size of the snapshot.","description_kind":"plain","optional":true,"computed":true},"snapshot":{"type":"string","description":"The source snapshot used to create this disk. You can provide this as\na partial or full URL to the resource. For example, the following are\nvalid values:\n\n* 'https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot'\n* 'projects/project/global/snapshots/snapshot'\n* 'global/snapshots/snapshot'\n* 'snapshot'","description_kind":"plain","optional":true},"source_snapshot_id":{"type":"string","description":"The unique ID of the snapshot used to create this disk. This value\nidentifies the exact snapshot that was used to create this persistent\ndisk. For example, if you created the persistent disk from a snapshot\nthat was later deleted and recreated under the same name, the source\nsnapshot ID would identify the exact version of the snapshot that was\nused.","description_kind":"plain","computed":true},"type":{"type":"string","description":"URL of the disk type resource describing which disk type to use to\ncreate the disk. Provide this when creating the disk.","description_kind":"plain","optional":true},"users":{"type":["list","string"],"description":"Links to the users of the disk (attached instances) in form:\nproject/zones/zone/instances/instance","description_kind":"plain","computed":true}},"block_types":{"disk_encryption_key":{"nesting_mode":"list","block":{"attributes":{"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true,"sensitive":true},"sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.","description_kind":"plain","computed":true}},"description":"Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must\nprovide the same key if you use the disk later (e.g. to create a disk\nsnapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of\nthe disk.\n\nIf you do not provide an encryption key when creating the disk, then\nthe disk will be encrypted using an automatically generated key and\nyou do not need to provide a key to use the disk later.","description_kind":"plain"},"max_items":1},"source_snapshot_encryption_key":{"nesting_mode":"list","block":{"attributes":{"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true},"sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.","description_kind":"plain","computed":true}},"description":"The customer-supplied encryption key of the source snapshot. Required\nif the source snapshot is protected by a customer-supplied encryption\nkey.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_disk_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_region_disk_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"name":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_region_disk_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description_kind":"plain","required":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true}},"description_kind":"plain"}},"google_compute_region_disk_resource_policy_attachment":{"version":0,"block":{"attributes":{"disk":{"type":"string","description":"The name of the regional disk in which the resource policies are attached to.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The resource policy to be attached to the disk for scheduling snapshot\ncreation. Do not specify the self link.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"A reference to the region where the disk resides.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_health_check":{"version":0,"block":{"attributes":{"check_interval_sec":{"type":"number","description":"How often (in seconds) to send a health check. The default value is 5\nseconds.","description_kind":"plain","optional":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"healthy_threshold":{"type":"number","description":"A so-far unhealthy instance will be marked healthy after this many\nconsecutive successes. The default value is 2.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The Region in which the created health check should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"timeout_sec":{"type":"number","description":"How long (in seconds) to wait before claiming failure.\nThe default value is 5 seconds. It is invalid for timeoutSec to have\ngreater value than checkIntervalSec.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of the health check. One of HTTP, HTTP2, HTTPS, TCP, or SSL.","description_kind":"plain","computed":true},"unhealthy_threshold":{"type":"number","description":"A so-far healthy instance will be marked unhealthy after this many\nconsecutive failures. The default value is 2.","description_kind":"plain","optional":true}},"block_types":{"grpc_health_check":{"nesting_mode":"list","block":{"attributes":{"grpc_service_name":{"type":"string","description":"The gRPC service name for the health check.\nThe value of grpcServiceName has the following meanings by convention:\n\n* Empty serviceName means the overall status of all services at the backend.\n* Non-empty serviceName means the health of that gRPC service, as defined by the owner of the service.\n\nThe grpcServiceName can only be ASCII.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The port number for the health check request.\nMust be specified if portName and portSpecification are not set\nor if port_specification is USE_FIXED_PORT. Valid values are 1 through 65535.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, gRPC health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"http2_health_check":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The value of the host header in the HTTP2 health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The TCP port number for the HTTP2 health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, HTTP2 health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request_path":{"type":"string","description":"The request path of the HTTP2 health check request.\nThe default value is /.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"http_health_check":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The value of the host header in the HTTP health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The TCP port number for the HTTP health check request.\nThe default value is 80.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, HTTP health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request_path":{"type":"string","description":"The request path of the HTTP health check request.\nThe default value is /.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"https_health_check":{"nesting_mode":"list","block":{"attributes":{"host":{"type":"string","description":"The value of the host header in the HTTPS health check request.\nIf left empty (default value), the public IP on behalf of which this health\ncheck is performed will be used.","description_kind":"plain","optional":true},"port":{"type":"number","description":"The TCP port number for the HTTPS health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, HTTPS health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request_path":{"type":"string","description":"The request path of the HTTPS health check request.\nThe default value is /.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"ssl_health_check":{"nesting_mode":"list","block":{"attributes":{"port":{"type":"number","description":"The TCP port number for the SSL health check request.\nThe default value is 443.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, SSL health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"request":{"type":"string","description":"The application data to send once the SSL connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"tcp_health_check":{"nesting_mode":"list","block":{"attributes":{"port":{"type":"number","description":"The TCP port number for the TCP health check request.\nThe default value is 80.","description_kind":"plain","optional":true},"port_name":{"type":"string","description":"Port name as defined in InstanceGroup#NamedPort#name. If both port and\nport_name are defined, port takes precedence.","description_kind":"plain","optional":true},"port_specification":{"type":"string","description":"Specifies how port is selected for health checking, can be one of the\nfollowing values:\n\n * 'USE_FIXED_PORT': The port number in 'port' is used for health checking.\n\n * 'USE_NAMED_PORT': The 'portName' is used for health checking.\n\n * 'USE_SERVING_PORT': For NetworkEndpointGroup, the port specified for each\n network endpoint is used for health checking. For other backends, the\n port or named port specified in the Backend Service is used for health\n checking.\n\nIf not specified, TCP health check follows behavior specified in 'port' and\n'portName' fields. Possible values: [\"USE_FIXED_PORT\", \"USE_NAMED_PORT\", \"USE_SERVING_PORT\"]","description_kind":"plain","optional":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to the\nbackend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]",
[2021-03-30T16:04:49.149] [DEBUG] default - "description_kind":"plain","optional":true},"request":{"type":"string","description":"The application data to send once the TCP connection has been\nestablished (default value is empty). If both request and response are\nempty, the connection establishment alone will indicate health. The request\ndata can only be ASCII.","description_kind":"plain","optional":true},"response":{"type":"string","description":"The bytes to match against the beginning of the response data. If left empty\n(the default value), any response will indicate health. The response data\ncan only be ASCII.","description_kind":"plain","optional":true}},"description":"A nested object resource","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_instance_group_manager":{"version":0,"block":{"attributes":{"base_instance_name":{"type":"string","description":"The base instance name to use for instances in this group. The value must be a valid RFC1035 name. Supported characters are lowercase letters, numbers, and hyphens (-). Instances are named by appending a hyphen and a random four-character string to the base instance name.","description_kind":"plain","required":true},"description":{"type":"string","description":"An optional textual description of the instance group manager.","description_kind":"plain","optional":true},"distribution_policy_target_shape":{"type":"string","description":"The shape to which the group converges either proactively or on resize events (depending on the value set in updatePolicy.instanceRedistributionType).","description_kind":"plain","optional":true,"computed":true},"distribution_policy_zones":{"type":["set","string"],"description":"The distribution policy for this managed instance group. You can specify one or more values.","description_kind":"plain","optional":true,"computed":true},"fingerprint":{"type":"string","description":"The fingerprint of the instance group manager.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance_group":{"type":"string","description":"The full URL of the instance group created by the manager.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the instance group manager. Must be 1-63 characters long and comply with RFC1035. Supported characters include lowercase letters, numbers, and hyphens.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The region where the managed instance group resides.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URL of the created resource.","description_kind":"plain","computed":true},"target_pools":{"type":["set","string"],"description":"The full URL of all target pools to which new instances in the group are added. Updating the target pools attribute does not affect existing instances.","description_kind":"plain","optional":true},"target_size":{"type":"number","description":"The target number of running instances for this managed instance group. This value should always be explicitly set unless this resource is attached to an autoscaler, in which case it should never be set. Defaults to 0.","description_kind":"plain","optional":true,"computed":true},"wait_for_instances":{"type":"bool","description":"Whether to wait for all instances to be created/updated before returning. Note that if this is set to true and the operation does not succeed, Terraform will continue trying until it times out.","description_kind":"plain","optional":true}},"block_types":{"auto_healing_policies":{"nesting_mode":"list","block":{"attributes":{"health_check":{"type":"string","description":"The health check resource that signals autohealing.","description_kind":"plain","required":true},"initial_delay_sec":{"type":"number","description":"The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. Between 0 and 3600.","description_kind":"plain","required":true}},"description":"The autohealing policies for this managed instance group. You can specify only one value.","description_kind":"plain"},"max_items":1},"named_port":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"The name of the port.","description_kind":"plain","required":true},"port":{"type":"number","description":"The port number.","description_kind":"plain","required":true}},"description":"The named port configuration.","description_kind":"plain"}},"stateful_disk":{"nesting_mode":"set","block":{"attributes":{"delete_rule":{"type":"string","description":"A value that prescribes what should happen to the stateful disk when the VM instance is deleted. The available options are NEVER and ON_PERMANENT_INSTANCE_DELETION. NEVER - detach the disk when the VM is deleted, but do not delete the disk. ON_PERMANENT_INSTANCE_DELETION will delete the stateful disk when the VM is permanently deleted from the instance group. The default is NEVER.","description_kind":"plain","optional":true},"device_name":{"type":"string","description":"The device name of the disk to be attached.","description_kind":"plain","required":true}},"description":"Disks created on the instances that will be preserved on instance delete, update, etc. Structure is documented below. For more information see the official documentation. Proactive cross zone instance redistribution must be disabled before you can update stateful disks on existing instance group managers. This can be controlled via the update_policy.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}},"update_policy":{"nesting_mode":"list","block":{"attributes":{"instance_redistribution_type":{"type":"string","description":"The instance redistribution policy for regional managed instance groups. Valid values are: \"PROACTIVE\", \"NONE\". If PROACTIVE (default), the group attempts to maintain an even distribution of VM instances across zones in the region. If NONE, proactive redistribution is disabled.","description_kind":"plain","optional":true},"max_surge_fixed":{"type":"number","description":"The maximum number of instances that can be created above the specified targetSize during the update process. Conflicts with max_surge_percent. It has to be either 0 or at least equal to the number of zones. If fixed values are used, at least one of max_unavailable_fixed or max_surge_fixed must be greater than 0.","description_kind":"plain","optional":true,"computed":true},"max_surge_percent":{"type":"number","description":"The maximum number of instances(calculated as percentage) that can be created above the specified targetSize during the update process. Conflicts with max_surge_fixed. Percent value is only allowed for regional managed instance groups with size at least 10.","description_kind":"plain","optional":true},"max_unavailable_fixed":{"type":"number","description":"The maximum number of instances that can be unavailable during the update process. Conflicts with max_unavailable_percent. It has to be either 0 or at least equal to the number of zones. If fixed values are used, at least one of max_unavailable_fixed or max_surge_fixed must be greater than 0.","description_kind":"plain","optional":true,"computed":true},"max_unavailable_percent":{"type":"number","description":"The maximum number of instances(calculated as percentage) that can be unavailable during the update process. Conflicts with max_unavailable_fixed. Percent value is only allowed for regional managed instance groups with size at least 10.","description_kind":"plain","optional":true},"min_ready_sec":{"type":"number","description":"Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].","description_kind":"plain","optional":true},"minimal_action":{"type":"string","description":"Minimal action to be taken on an instance. You can specify either RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a RESTART, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.","description_kind":"plain","required":true},"replacement_method":{"type":"string","description":"The instance replacement method for regional managed instance groups. Valid values are: \"RECREATE\", \"SUBSTITUTE\". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved. You must also set max_unavailable_fixed or max_unavailable_percent to be greater than 0.","description_kind":"plain","optional":true},"type":{"type":"string","description":"The type of update process. You can specify either PROACTIVE so that the instance group manager proactively executes actions in order to bring instances to their target versions or OPPORTUNISTIC so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).","description_kind":"plain","required":true}},"description":"The update policy for this managed instance group.","description_kind":"plain"},"max_items":1},"version":{"nesting_mode":"list","block":{"attributes":{"instance_template":{"type":"string","description":"The full URL to an instance template from which all new instances of this version will be created.","description_kind":"plain","required":true},"name":{"type":"string","description":"Version name.","description_kind":"plain","optional":true}},"block_types":{"target_size":{"nesting_mode":"list","block":{"attributes":{"fixed":{"type":"number","description":"The number of instances which are managed for this version. Conflicts with percent.","description_kind":"plain","optional":true},"percent":{"type":"number","description":"The number of instances (calculated as percentage) which are managed for this version. Conflicts with fixed. Note that when using percent, rounding will be in favor of explicitly set target_size values; a managed instance group with 2 instances and 2 versions, one of which has a target_size.percent of 60 will create 2 instances of that version.","description_kind":"plain","optional":true}},"description":"The number of instances calculated as a fixed number or a percentage depending on the settings.","description_kind":"plain"},"max_items":1}},"description":"Application versions managed by this instance group. Each version deals with a specific instance template, allowing canary release scenarios.","description_kind":"plain"},"min_items":1}},"description_kind":"plain"}},"google_compute_region_network_endpoint_group":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network_endpoint_type":{"type":"string","description":"Type of network endpoints in this network endpoint group. Defaults to SERVERLESS Default value: \"SERVERLESS\" Possible values: [\"SERVERLESS\"]","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"A reference to the region where the Serverless NEGs Reside.","description_kind":"plain","required":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"app_engine":{"nesting_mode":"list","block":{"attributes":{"service":{"type":"string","description":"Optional serving service.\nThe service name must be 1-63 characters long, and comply with RFC1035.\nExample value: \"default\", \"my-service\".","description_kind":"plain","optional":true},"url_mask":{"type":"string","description":"A template to parse service and version fields from a request URL.\nURL mask allows for routing to multiple App Engine services without\nhaving to create multiple Network Endpoint Groups and backend services.\n\nFor example, the request URLs \"foo1-dot-appname.appspot.com/v1\" and\n\"foo1-dot-appname.appspot.com/v2\" can be backed by the same Serverless NEG with\nURL mask \"-dot-appname.appspot.com/\". The URL mask will parse\nthem to { service = \"foo1\", version = \"v1\" } and { service = \"foo1\", version = \"v2\" } respectively.","description_kind":"plain","optional":true},"version":{"type":"string","description":"Optional serving version.\nThe version must be 1-63 characters long, and comply with RFC1035.\nExample value: \"v1\", \"v2\".","description_kind":"plain","optional":true}},"description":"Only valid when networkEndpointType is \"SERVERLESS\".\nOnly one of cloud_run, app_engine or cloud_function may be set.","description_kind":"plain"},"max_items":1},"cloud_function":{"nesting_mode":"list","block":{"attributes":{"function":{"type":"string","description":"A user-defined name of the Cloud Function.\nThe function name is case-sensitive and must be 1-63 characters long.\nExample value: \"func1\".","description_kind":"plain","optional":true},"url_mask":{"type":"string","description":"A template to parse function field from a request URL. URL mask allows\nfor routing to multiple Cloud Functions without having to create\nmultiple Network Endpoint Groups and backend services.\n\nFor example, request URLs \"mydomain.com/function1\" and \"mydomain.com/function2\"\ncan be backed by the same Serverless NEG with URL mask \"/\". The URL mask\nwill parse them to { function = \"function1\" } and { function = \"function2\" } respectively.","description_kind":"plain","optional":true}},"description":"Only valid when networkEndpointType is \"SERVERLESS\".\nOnly one of cloud_run, app_engine or cloud_function may be set.","description_kind":"plain"},"max_items":1},"cloud_run":{"nesting_mode":"list","block":{"attributes":{"service":{"type":"string","description":"Cloud Run service is the main resource of Cloud Run.\nThe service must be 1-63 characters long, and comply with RFC1035.\nExample value: \"run-service\".","description_kind":"plain","optional":true},"tag":{"type":"string","description":"Cloud Run tag represents the \"named-revision\" to provide\nadditional fine-grained traffic routing information.\nThe tag must be 1-63 characters long, and comply with RFC1035.\nExample value: \"revision-0010\".","description_kind":"plain","optional":true},"url_mask":{"type":"string","description":"A template to parse service and tag fields from a request URL.\nURL mask allows for routing to multiple Run services without having\nto create multiple network endpoint groups and backend services.\n\nFor example, request URLs \"foo1.domain.com/bar1\" and \"foo1.domain.com/bar2\"\nan be backed by the same Serverless Network Endpoint Group (NEG) with\nURL mask \".domain.com/\". The URL mask will parse them to { service=\"bar1\", tag=\"foo1\" }\nand { service=\"bar2\", tag=\"foo2\" } respectively.","description_kind":"plain","optional":true}},"description":"Only valid when networkEndpointType is \"SERVERLESS\".\nOnly one of cloud_run, app_engine or cloud_function may be set.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_per_instance_config":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"minimal_action":{"type":"string","description_kind":"plain","optional":true},"most_disruptive_allowed_action":{"type":"string","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name for this per-instance config and its corresponding instance.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where the containing instance group manager is located","description_kind":"plain","optional":true,"computed":true},"region_instance_group_manager":{"type":"string","description":"The region instance group manager this instance config is part of.","description_kind":"plain","required":true},"remove_instance_state_on_destroy":{"type":"bool","description_kind":"plain","optional":true}},"block_types":{"preserved_state":{"nesting_mode":"list","block":{"attributes":{"metadata":{"type":["map","string"],"description":"Preserved metadata defined for this instance. This is a list of key-\u003evalue pairs.","description_kind":"plain","optional":true}},"block_types":{"disk":{"nesting_mode":"set","block":{"attributes":{"delete_rule":{"type":"string","description":"A value that prescribes what should happen to the stateful disk when the VM instance is deleted.\nThe available options are 'NEVER' and 'ON_PERMANENT_INSTANCE_DELETION'.\n'NEVER' - detach the disk when the VM is deleted, but do not delete the disk.\n'ON_PERMANENT_INSTANCE_DELETION' will delete the stateful disk when the VM is permanently\ndeleted from the instance group. Default value: \"NEVER\" Possible values: [\"NEVER\", \"ON_PERMANENT_INSTANCE_DELETION\"]","description_kind":"plain","optional":true},"device_name":{"type":"string","description":"A unique device name that is reflected into the /dev/ tree of a Linux operating system running within the instance.","description_kind":"plain","required":true},"mode":{"type":"string","description":"The mode of the disk. Default value: \"READ_WRITE\" Possible values: [\"READ_ONLY\", \"READ_WRITE\"]","description_kind":"plain","optional":true},"source":{"type":"string","description":"The URI of an existing persistent disk to attach under the specified device-name in the format\n'projects/project-id/zones/zone/disks/disk-name'.","description_kind":"plain","required":true}},"description":"Stateful disks for the instance.","description_kind":"plain"}}},"description":"The preserved state for this instance.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_ssl_certificate":{"version":0,"block":{"attributes":{"certificate":{"type":"string","description":"The certificate in PEM format.\nThe certificate chain must be no greater than 5 certs long.\nThe chain must include at least one intermediate cert.","description_kind":"plain","required":true,"sensitive":true},"certificate_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.\n\n\nThese are in the same namespace as the managed SSL certificates.","description_kind":"plain","optional":true,"computed":true},"name_prefix":{"type":"string","description":"Creates a unique name beginning with the specified prefix. Conflicts with name.","description_kind":"plain","optional":true,"computed":true},"private_key":{"type":"string","description":"The write-only private key in PEM format.","description_kind":"plain","required":true,"sensitive":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The Region in which the created regional ssl certificate should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_target_http_proxy":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"proxy_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"region":{"type":"string","description":"The Region in which the created target https proxy should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"url_map":{"type":"string","description":"A reference to the RegionUrlMap resource that defines the mapping from URL\nto the BackendService.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_target_https_proxy":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"proxy_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"region":{"type":"string","description":"The Region in which the created target https proxy should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"ssl_certificates":{"type":["list","string"],"description":"A list of RegionSslCertificate resources that are used to authenticate\nconnections between users and the load balancer. Currently, exactly\none SSL certificate must be specified.","description_kind":"plain","required":true},"url_map":{"type":"string","description":"A reference to the RegionUrlMap resource that defines the mapping from URL\nto the RegionBackendService.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_region_url_map":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"default_service":{"type":"string","description":"The full or partial URL of the defaultService resource to which traffic is directed if\nnone of the hostRules match. If defaultRouteAction is additionally specified, advanced\nrouting actions like URL Rewrites, etc. take effect prior to sending the request to the\nbackend. However, if defaultService is specified, defaultRouteAction cannot contain any\nweightedBackendServices. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of defaultService,\ndefaultUrlRedirect or defaultRouteAction.weightedBackendService must be set.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. This field is used internally during\nupdates of this resource.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"map_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The Region in which the url map should reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"default_url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained.\n This field is required to ensure an empty block is not set. The normal default value is false.","description_kind":"plain","required":true}},"description":"When none of the specified hostRules match, the request is redirected to a URL specified\nby defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or\ndefaultRouteAction must not be set.","description_kind":"plain"},"max_items":1},"host_rule":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"An optional description of this HostRule. Provide this property\nwhen you create the resource.","description_kind":"plain","optional":true},"hosts":{"type":["set","string"],"description":"The list of host patterns to match. They must be valid\nhostnames, except * will match any string of ([a-z0-9-.]*). In\nthat case, * must be the first character and must be followed in\nthe pattern by either - or ..","description_kind":"plain","required":true},"path_matcher":{"type":"string","description":"The name of the PathMatcher to use to match the path portion of\nthe URL if the hostRule matches the URL's host portion.","description_kind":"plain","required":true}},"description":"The list of HostRules to use against the URL.","description_kind":"plain"}},"path_matcher":{"nesting_mode":"list","block":{"attributes":{"default_service":{"type":"string","description":"A reference to a RegionBackendService resource. This will be used if\nnone of the pathRules defined by this PathMatcher is matched by\nthe URL's path portion.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name to which this PathMatcher is referred by the HostRule.","description_kind":"plain","required":true}},"block_types":{"default_url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained.\n This field is required to ensure an empty block is not set. The normal default value is false.","description_kind":"plain","required":true}},"description":"When none of the specified hostRules match, the request is redirected to a URL specified\nby defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or\ndefaultRouteAction must not be set.","description_kind":"plain"},"max_items":1},"path_rule":{"nesting_mode":"list","block":{"attributes":{"paths":{"type":["set","string"],"description":"The list of path patterns to match. Each must start with / and the only place a\n* is allowed is at the end following a /. The string fed to the path matcher\ndoes not include any text after the first ? or #, and those chars are not\nallowed here.","description_kind":"plain","required":true},"service":{"type":"string","description":"The region backend service resource to which traffic is\ndirected if this rule is matched. If routeAction is additionally specified,\nadvanced routing actions like URL Rewrites, etc. take effect prior to sending\nthe request to the backend. However, if service is specified, routeAction cannot\ncontain any weightedBackendService s. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of urlRedirect,\nservice or routeAction.weightedBackendService must be set.","description_kind":"plain","optional":true}},"block_types":{"route_action":{"nesting_mode":"list","block":{"block_types":{"cors_policy":{"nesting_mode":"list","block":{"attributes":{"allow_credentials":{"type":"bool","description":"In response to a preflight request, setting this to true indicates that the\nactual request can include user credentials. This translates to the Access-\nControl-Allow-Credentials header. Defaults to false.","description_kind":"plain","optional":true},"allow_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Headers header.","description_kind":"plain","optional":true},"allow_methods":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Methods header.","description_kind":"plain","optional":true},"allow_origin_regexes":{"type":["list","string"],"description":"Specifies the regular expression patterns that match allowed origins. For\nregular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"allow_origins":{"type":["list","string"],"description":"Specifies the list of origins that will be allowed to do CORS requests. An\norigin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"If true, specifies the CORS policy is disabled.","description_kind":"plain","required":true},"expose_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Expose-Headers header.","description_kind":"plain","optional":true},"max_age":{"type":"number","description":"Specifies how long the results of a preflight request can be cached. This\ntranslates to the content for the Access-Control-Max-Age header.","description_kind":"plain","optional":true}},"description":"The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing","description_kind":"plain"},"max_items":1},"fault_injection_policy":{"nesting_mode":"list","block":{"block_types":{"abort":{"nesting_mode":"list","block":{"attributes":{"http_status":{"type":"number","description":"The HTTP status code used to abort the request. The value must be between 200\nand 599 inclusive.","description_kind":"plain","required":true},"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) which will be\naborted as part of fault injection. The value must be between 0.0 and 100.0\ninclusive.","description_kind":"plain","required":true}},"description":"The specification for how client requests are aborted as part of fault\ninjection.","description_kind":"plain"},"max_items":1},"delay":{"nesting_mode":"list","block":{"attributes":{"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) on which delay will\nbe introduced as part of fault injection. The value must be between 0.0 and\n100.0 inclusive.","description_kind":"plain","required":true}},"block_types":{"fixed_delay":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the value of the fixed delay interval.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The specification for how client requests are delayed as part of fault\ninjection, before being sent to a backend service.","description_kind":"plain"},"max_items":1}},"description":"The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and retry_policy will be\nignored by clients that are configured with a fault_injection_policy.","description_kind":"plain"},"max_items":1},"request_mirror_policy":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The RegionBackendService resource being mirrored to.","description_kind":"plain","required":true}},"description":"Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.","description_kind":"plain"},"max_items":1},"retry_policy":{"nesting_mode":"list","block":{"attributes":{"num_retries":{"type":"number","description":"Specifies the allowed number retries. This number must be \u003e 0.","description_kind":"plain","optional":true},"retry_conditions":{"type":["list","string"],"description":"Specifies one or more conditions when this retry rule applies. Valid values are:\n\n- 5xx: Loadbalancer will attempt a retry if the backend service responds with\nany 5xx response code, or if the backend service does not respond at all,\nexample: disconnects, reset, read timeout, connection failure, and refused\nstreams.\n- gateway-error: Similar to 5xx, but only applies to response codes\n502, 503 or 504.\n- connect-failure: Loadbalancer will retry on failures\nconnecting to backend services, for example due to connection timeouts.\n- retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\nCurrently the only retriable error supported is 409.\n- refused-stream: Loadbalancer will retry if the backend service resets the stream with a\nREFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n- cancelled: Loadbalancer will retry if the gRPC status code in the response\nheader is set to cancelled\n- deadline-exceeded: Loadbalancer will retry if the\ngRPC status code in the response header is set to deadline-exceeded\n- resource-exhausted: Loadbalancer will retry if the gRPC status code in the response\nheader is set to resource-exhausted\n- unavailable: Loadbalancer will retry if\nthe gRPC status code in the response header is set to unavailable","description_kind":"plain","optional":true}},"block_types":{"per_try_timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies a non-zero timeout per retry attempt.","description_kind":"plain"},"max_items":1}},"description":"Specifies the retry policy associated with this route.","description_kind":"plain"},"max_items":1},"timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.","description_kind":"plain"},"max_items":1},"url_rewrite":{"nesting_mode":"list","block":{"attributes":{"host_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected service, the request's host\nheader is replaced with contents of hostRewrite. The value must be between 1 and\n255 characters.","description_kind":"plain","optional":true},"path_prefix_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected backend service, the matching\nportion of the request's path is replaced by pathPrefixRewrite. The value must\nbe between 1 and 1024 characters.","description_kind":"plain","optional":true}},"description":"The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service","description_kind":"plain"},"max_items":1},"weighted_backend_services":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The default RegionBackendService resource. Before\nforwarding the request to backendService, the loadbalancer applies any relevant\nheaderActions specified as part of this backendServiceWeight.","description_kind":"plain","required":true},"weight":{"type":"number","description":"Specifies the fraction of traffic sent to backendService, computed as weight /\n(sum of all weightedBackendService weights in routeAction) . The selection of a\nbackend service is determined only for new traffic. Once a user's request has\nbeen directed to a backendService, subsequent requests will be sent to the same\nbackendService as determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000","description_kind":"plain","required":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. headerAction specified here take effect before\nheaderAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.","description_kind":"plain"},"max_items":1}},"description":"A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.","description_kind":"plain"}}},"description":"In response to a matching path, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.","description_kind":"plain"},"max_items":1},"url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one\nthat was supplied in the request. The value must be between 1 and 255\ncharacters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https.\nIf set to false, the URL scheme of the redirected request will remain the\nsame as that of the request. This must only be set for UrlMaps used in\nTargetHttpProxys. Setting this true for TargetHttpsProxy is not\npermitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one\nthat was supplied in the request. pathRedirect cannot be supplied\ntogether with prefixRedirect. Supply one alone or neither. If neither is\nsupplied, the path of the original request will be used for the redirect.\nThe value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the\nHttpRouteRuleMatch, retaining the remaining portion of the URL before\nredirecting the request. prefixRedirect cannot be supplied together with\npathRedirect. Supply one alone or neither. If neither is supplied, the\npath of the original request will be used for the redirect. The value\nmust be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is removed\nprior to redirecting the request. If set to false, the query portion of the\noriginal URL is retained.\n This field is required to ensure an empty block is not set. The normal default value is false.","description_kind":"plain","required":true}},"description":"When a path pattern is matched, the request is redirected to a URL specified\nby urlRedirect. If urlRedirect is specified, service or routeAction must not\nbe set.","description_kind":"plain"},"max_items":1}},"description":"The list of path rules. Use this list instead of routeRules when routing based\non simple path matching is all that's required. The order by which path rules\nare specified does not matter. Matches are always done on the longest-path-first\nbasis. For example: a pathRule with a path /a/b/c/* will match before /a/b/*\nirrespective of the order in which those paths appear in this list. Within a\ngiven pathMatcher, only one of pathRules or routeRules must be set.","description_kind":"plain"}},"route_rules":{"nesting_mode":"list","block":{"attributes":{"priority":{"type":"number","description":"For routeRules within a given pathMatcher, priority determines the order\nin which load balancer will interpret routeRules. RouteRules are evaluated\nin order of priority, from the lowest to highest number. The priority of\na rule decreases as its number increases (1, 2, 3, N+1). The first rule\nthat matches the request is applied.\n\nYou cannot configure two or more routeRules with the same priority.\nPriority for each rule must be set to a number between 0 and\n2147483647 inclusive.\n\nPriority numbers can have gaps, which enable you to add or remove rules\nin the future without affecting the rest of the rules. For example,\n1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which\nyou could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the\nfuture without any impact on existing rules.","description_kind":"plain","required":true},"service":{"type":"string","description":"The region backend service resource to which traffic is\ndirected if this rule is matched. If routeAction is additionally specified,\nadvanced routing actions like URL Rewrites, etc. take effect prior to sending\nthe request to the backend. However, if service is specified, routeAction cannot\ncontain any weightedBackendService s. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of urlRedirect,\nservice or routeAction.weightedBackendService must be set.","description_kind":"plain","optional":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. The headerAction specified here are applied before\nthe matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r\nouteAction.weightedBackendService.backendServiceWeightAction[].headerAction","description_kind":"plain"},"max_items":1},"match_rules":{"nesting_mode":"list","block":{"attributes":{"full_path_match":{"type":"string","description":"For satisfying the matchRule condition, the path of the request must exactly\nmatch the value specified in fullPathMatch after removing any query parameters\nand anchor that may be part of the original URL. FullPathMatch must be between 1\nand 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must\nbe specified.","description_kind":"plain","optional":true},"ignore_case":{"type":"bool","description":"Specifies that prefixMatch and fullPathMatch matches are case sensitive.\nDefaults to false.","description_kind":"plain","optional":true},"prefix_match":{"type":"string","description":"For satisfying the matchRule condition, the request's path must begin with the\nspecified prefixMatch. prefixMatch must begin with a /. The value must be\nbetween 1 and 1024 characters. Only one of prefixMatch, fullPathMatch or\nregexMatch must be specified.","description_kind":"plain","optional":true},"regex_match":{"type":"string","description":"For satisfying the matchRule condition, the path of the request must satisfy the\nregular expression specified in regexMatch after removing any query parameters\nand anchor supplied with the original URL. For regular expression grammar please\nsee en.cppreference.com/w/cpp/regex/ecmascript Only one of prefixMatch,\nfullPathMatch or regexMatch must be specified.","description_kind":"plain","optional":true}},"block_types":{"header_matches":{"nesting_mode":"list","block":{"attributes":{"exact_match":{"type":"string","description":"The value should exactly match contents of exactMatch. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.","description_kind":"plain","optional":true},"header_name":{"type":"string","description":"The name of the HTTP header to match. For matching against the HTTP request's\nauthority, use a headerMatch with the header name \":authority\". For matching a\nrequest's method, use the headerName \":method\".","description_kind":"plain","required":true},"invert_match":{"type":"bool","description":"If set to false, the headerMatch is considered a match if the match criteria\nabove are met. If set to true, the headerMatch is considered a match if the\nmatch criteria above are NOT met. Defaults to false.","description_kind":"plain","optional":true},"prefix_match":{"type":"string","description":"The value of the header must start with the contents of prefixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.","description_kind":"plain","optional":true},"present_match":{"type":"bool","description":"A header with the contents of headerName must exist. The match takes place\nwhether or not the request's header has a value or not. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.","description_kind":"plain","optional":true},"regex_match":{"type":"string","description":"The value of the header must match the regular expression specified in\nregexMatch. For regular expression grammar, please see:\nen.cppreference.com/w/cpp/regex/ecmascript For matching against a port\nspecified in the HTTP request, use a headerMatch with headerName set to PORT and\na regular expression that satisfies the RFC2616 Host header's port specifier.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or\nrangeMatch must be set.","description_kind":"plain","optional":true},"suffix_match":{"type":"string","description":"The value of the header must end with the contents of suffixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.","description_kind":"plain","optional":true}},"block_types":{"range_match":{"nesting_mode":"list","block":{"attributes":{"range_end":{"type":"number","description":"The end of the range (exclusive).","description_kind":"plain","required":true},"range_start":{"type":"number","description":"The start of the range (inclusive).","description_kind":"plain","required":true}},"description":"The header value must be an integer and its value must be in the range specified\nin rangeMatch. If the header does not contain an integer, number or is empty,\nthe match fails. For example for a range [-5, 0]\n\n* -3 will match\n* 0 will not match\n* 0.25 will not match\n* -3someString will not match.\n\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or\nrangeMatch must be set.","description_kind":"plain"},"max_items":1}},"description":"Specifies a list of header match criteria, all of which must match corresponding\nheaders in the request.","description_kind":"plain"}},"metadata_filters":{"nesting_mode":"list","block":{"attributes":{"filter_match_criteria":{"type":"string","description":"Specifies how individual filterLabel matches within the list of filterLabels\ncontribute towards the overall metadataFilter match. Supported values are:\n\n* MATCH_ANY: At least one of the filterLabels must have a matching label in the\nprovided metadata.\n* MATCH_ALL: All filterLabels must have matching labels in\nthe provided metadata. Possible values: [\"MATCH_ALL\", \"MATCH_ANY\"]","description_kind":"plain","required":true}},"block_types":{"filter_labels":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of metadata label. The name can have a maximum length of 1024 characters\nand must be at least 1 character long.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the label must match the specified value. value can have a maximum\nlength of 1024 characters.","description_kind":"plain","required":true}},"description":"The list of label value pairs that must match labels in the provided metadata\nbased on filterMatchCriteria This list must not be empty and can have at the\nmost 64 entries.","description_kind":"plain"},"min_items":1,"max_items":64}},"description":"Opaque filter criteria used by Loadbalancer to restrict routing configuration to\na limited set xDS compliant clients. In their xDS requests to Loadbalancer, xDS\nclients present node metadata. If a match takes place, the relevant routing\nconfiguration is made available to those proxies. For each metadataFilter in\nthis list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the\nfilterLabels must match the corresponding label provided in the metadata. If its\nfilterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match\nwith corresponding labels in the provided metadata. metadataFilters specified\nhere can be overrides those specified in ForwardingRule that refers to this\nUrlMap. metadataFilters only applies to Loadbalancers that have their\nloadBalancingScheme set to INTERNAL_SELF_MANAGED.","description_kind":"plain"}},"query_parameter_matches":{"nesting_mode":"list","block":{"attributes":{"exact_match":{"type":"string","description":"The queryParameterMatch matches if the value of the parameter exactly matches\nthe contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch\nmust be set.","description_ki
[2021-03-30T16:04:49.149] [DEBUG] default - nd":"plain","optional":true},"name":{"type":"string","description":"The name of the query parameter to match. The query parameter must exist in the\nrequest, in the absence of which the request match fails.","description_kind":"plain","required":true},"present_match":{"type":"bool","description":"Specifies that the queryParameterMatch matches if the request contains the query\nparameter, irrespective of whether the parameter has a value or not. Only one of\npresentMatch, exactMatch and regexMatch must be set.","description_kind":"plain","optional":true},"regex_match":{"type":"string","description":"The queryParameterMatch matches if the value of the parameter matches the\nregular expression specified by regexMatch. For the regular expression grammar,\nplease see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch,\nexactMatch and regexMatch must be set.","description_kind":"plain","optional":true}},"description":"Specifies a list of query parameter match criteria, all of which must match\ncorresponding query parameters in the request.","description_kind":"plain"}}},"description":"The rules for determining a match.","description_kind":"plain"}},"route_action":{"nesting_mode":"list","block":{"block_types":{"cors_policy":{"nesting_mode":"list","block":{"attributes":{"allow_credentials":{"type":"bool","description":"In response to a preflight request, setting this to true indicates that the\nactual request can include user credentials. This translates to the Access-\nControl-Allow-Credentials header. Defaults to false.","description_kind":"plain","optional":true},"allow_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Headers header.","description_kind":"plain","optional":true},"allow_methods":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Methods header.","description_kind":"plain","optional":true},"allow_origin_regexes":{"type":["list","string"],"description":"Specifies the regular expression patterns that match allowed origins. For\nregular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"allow_origins":{"type":["list","string"],"description":"Specifies the list of origins that will be allowed to do CORS requests. An\norigin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"If true, specifies the CORS policy is disabled.\nwhich indicates that the CORS policy is in effect. Defaults to false.","description_kind":"plain","optional":true},"expose_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Expose-Headers header.","description_kind":"plain","optional":true},"max_age":{"type":"number","description":"Specifies how long the results of a preflight request can be cached. This\ntranslates to the content for the Access-Control-Max-Age header.","description_kind":"plain","optional":true}},"description":"The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing","description_kind":"plain"},"max_items":1},"fault_injection_policy":{"nesting_mode":"list","block":{"block_types":{"abort":{"nesting_mode":"list","block":{"attributes":{"http_status":{"type":"number","description":"The HTTP status code used to abort the request. The value must be between 200\nand 599 inclusive.","description_kind":"plain","optional":true},"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) which will be\naborted as part of fault injection. The value must be between 0.0 and 100.0\ninclusive.","description_kind":"plain","optional":true}},"description":"The specification for how client requests are aborted as part of fault\ninjection.","description_kind":"plain"},"max_items":1},"delay":{"nesting_mode":"list","block":{"attributes":{"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) on which delay will\nbe introduced as part of fault injection. The value must be between 0.0 and\n100.0 inclusive.","description_kind":"plain","optional":true}},"block_types":{"fixed_delay":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the value of the fixed delay interval.","description_kind":"plain"},"max_items":1}},"description":"The specification for how client requests are delayed as part of fault\ninjection, before being sent to a backend service.","description_kind":"plain"},"max_items":1}},"description":"The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and retry_policy will be\nignored by clients that are configured with a fault_injection_policy.","description_kind":"plain"},"max_items":1},"request_mirror_policy":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The RegionBackendService resource being mirrored to.","description_kind":"plain","required":true}},"description":"Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.","description_kind":"plain"},"max_items":1},"retry_policy":{"nesting_mode":"list","block":{"attributes":{"num_retries":{"type":"number","description":"Specifies the allowed number retries. This number must be \u003e 0.","description_kind":"plain","required":true},"retry_conditions":{"type":["list","string"],"description":"Specifies one or more conditions when this retry rule applies. Valid values are:\n\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with\n any 5xx response code, or if the backend service does not respond at all,\n example: disconnects, reset, read timeout, connection failure, and refused\n streams.\n* gateway-error: Similar to 5xx, but only applies to response codes\n 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures\n connecting to backend services, for example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\n Currently the only retriable error supported is 409.\n* refused-stream: Loadbalancer will retry if the backend service resets the stream with a\n REFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response\n header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the\n gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response\n header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in\n the response header is set to unavailable","description_kind":"plain","optional":true}},"block_types":{"per_try_timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies a non-zero timeout per retry attempt.","description_kind":"plain"},"max_items":1}},"description":"Specifies the retry policy associated with this route.","description_kind":"plain"},"max_items":1},"timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.","description_kind":"plain"},"max_items":1},"url_rewrite":{"nesting_mode":"list","block":{"attributes":{"host_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected service, the request's host\nheader is replaced with contents of hostRewrite. The value must be between 1 and\n255 characters.","description_kind":"plain","optional":true},"path_prefix_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected backend service, the matching\nportion of the request's path is replaced by pathPrefixRewrite. The value must\nbe between 1 and 1024 characters.","description_kind":"plain","optional":true}},"description":"The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service","description_kind":"plain"},"max_items":1},"weighted_backend_services":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The default RegionBackendService resource. Before\nforwarding the request to backendService, the loadbalancer applies any relevant\nheaderActions specified as part of this backendServiceWeight.","description_kind":"plain","required":true},"weight":{"type":"number","description":"Specifies the fraction of traffic sent to backendService, computed as weight /\n(sum of all weightedBackendService weights in routeAction) . The selection of a\nbackend service is determined only for new traffic. Once a user's request has\nbeen directed to a backendService, subsequent requests will be sent to the same\nbackendService as determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000","description_kind":"plain","required":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. headerAction specified here take effect before\nheaderAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.","description_kind":"plain"},"max_items":1}},"description":"A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.","description_kind":"plain"}}},"description":"In response to a matching matchRule, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.","description_kind":"plain"},"max_items":1},"url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one\nthat was supplied in the request. The value must be between 1 and 255\ncharacters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https.\nIf set to false, the URL scheme of the redirected request will remain the\nsame as that of the request. This must only be set for UrlMaps used in\nTargetHttpProxys. Setting this true for TargetHttpsProxy is not\npermitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one\nthat was supplied in the request. pathRedirect cannot be supplied\ntogether with prefixRedirect. Supply one alone or neither. If neither is\nsupplied, the path of the original request will be used for the redirect.\nThe value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the\nHttpRouteRuleMatch, retaining the remaining portion of the URL before\nredirecting the request. prefixRedirect cannot be supplied together with\npathRedirect. Supply one alone or neither. If neither is supplied, the\npath of the original request will be used for the redirect. The value\nmust be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is\nremoved prior to redirecting the request. If set to false, the query\nportion of the original URL is retained. The default value is false.","description_kind":"plain","optional":true}},"description":"When this rule is matched, the request is redirected to a URL specified by\nurlRedirect. If urlRedirect is specified, service or routeAction must not be\nset.","description_kind":"plain"},"max_items":1}},"description":"The list of ordered HTTP route rules. Use this list instead of pathRules when\nadvanced route matching and routing actions are desired. The order of specifying\nrouteRules matters: the first rule that matches will cause its specified routing\naction to take effect. Within a given pathMatcher, only one of pathRules or\nrouteRules must be set. routeRules are not supported in UrlMaps intended for\nExternal load balancers.","description_kind":"plain"}}},"description":"The list of named PathMatchers to use against the URL.","description_kind":"plain"}},"test":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of this test case.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host portion of the URL.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path portion of the URL.","description_kind":"plain","required":true},"service":{"type":"string","description":"A reference to expected RegionBackendService resource the given URL should be mapped to.","description_kind":"plain","required":true}},"description":"The list of expected URL mappings. Requests to update this UrlMap will\nsucceed only if all of the test cases pass.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_reservation":{"version":0,"block":{"attributes":{"commitment":{"type":"string","description":"Full or partial URL to a parent commitment. This field displays for\nreservations that are tied to a commitment.","description_kind":"plain","computed":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"specific_reservation_required":{"type":"bool","description":"When set to true, only VMs that target this reservation by name can\nconsume this reservation. Otherwise, it can be consumed by VMs with\naffinity for any reservation. Defaults to false.","description_kind":"plain","optional":true},"status":{"type":"string","description":"The status of the reservation.","description_kind":"plain","computed":true},"zone":{"type":"string","description":"The zone where the reservation is made.","description_kind":"plain","required":true}},"block_types":{"specific_reservation":{"nesting_mode":"list","block":{"attributes":{"count":{"type":"number","description":"The number of resources that are allocated.","description_kind":"plain","required":true},"in_use_count":{"type":"number","description":"How many instances are in use.","description_kind":"plain","computed":true}},"block_types":{"instance_properties":{"nesting_mode":"list","block":{"attributes":{"machine_type":{"type":"string","description":"The name of the machine type to reserve.","description_kind":"plain","required":true},"min_cpu_platform":{"type":"string","description":"The minimum CPU platform for the reservation. For example,\n'\"Intel Skylake\"'. See\nthe CPU platform availability reference](https://cloud.google.com/compute/docs/instances/specify-min-cpu-platform#availablezones)\nfor information on available CPU platforms.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"guest_accelerators":{"nesting_mode":"list","block":{"attributes":{"accelerator_count":{"type":"number","description":"The number of the guest accelerator cards exposed to\nthis instance.","description_kind":"plain","required":true},"accelerator_type":{"type":"string","description":"The full or partial URL of the accelerator type to\nattach to this instance. For example:\n'projects/my-project/zones/us-central1-c/acceleratorTypes/nvidia-tesla-p100'\n\nIf you are creating an instance template, specify only the accelerator name.","description_kind":"plain","required":true}},"description":"Guest accelerator type and count.","description_kind":"plain"}},"local_ssds":{"nesting_mode":"list","block":{"attributes":{"disk_size_gb":{"type":"number","description":"The size of the disk in base-2 GB.","description_kind":"plain","required":true},"interface":{"type":"string","description":"The disk interface to use for attaching this disk. Default value: \"SCSI\" Possible values: [\"SCSI\", \"NVME\"]","description_kind":"plain","optional":true}},"description":"The amount of local ssd to reserve with each instance. This\nreserves disks of type 'local-ssd'.","description_kind":"plain"}}},"description":"The instance properties for the reservation.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Reservation for instances with specific machine shapes.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_resource_policy":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the resource, provided by the client when initially creating\nthe resource. The resource name must be 1-63 characters long, and comply\nwith RFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])'? which means the\nfirst character must be a lowercase letter, and all following characters\nmust be a dash, lowercase letter, or digit, except the last character,\nwhich cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where resource policy resides.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"group_placement_policy":{"nesting_mode":"list","block":{"attributes":{"availability_domain_count":{"type":"number","description":"The number of availability domains instances will be spread across. If two instances are in different\navailability domain, they will not be put in the same low latency network","description_kind":"plain","optional":true},"collocation":{"type":"string","description":"Collocation specifies whether to place VMs inside the same availability domain on the same low-latency network.\nSpecify 'COLLOCATED' to enable collocation. Can only be specified with 'vm_count'. If compute instances are created\nwith a COLLOCATED policy, then exactly 'vm_count' instances must be created at the same time with the resource policy\nattached. Possible values: [\"COLLOCATED\"]","description_kind":"plain","optional":true},"vm_count":{"type":"number","description":"Number of vms in this placement group.","description_kind":"plain","optional":true}},"description":"Resource policy for instances used for placement configuration.","description_kind":"plain"},"max_items":1},"snapshot_schedule_policy":{"nesting_mode":"list","block":{"block_types":{"retention_policy":{"nesting_mode":"list","block":{"attributes":{"max_retention_days":{"type":"number","description":"Maximum age of the snapshot that is allowed to be kept.","description_kind":"plain","required":true},"on_source_disk_delete":{"type":"string","description":"Specifies the behavior to apply to scheduled snapshots when\nthe source disk is deleted. Default value: \"KEEP_AUTO_SNAPSHOTS\" Possible values: [\"KEEP_AUTO_SNAPSHOTS\", \"APPLY_RETENTION_POLICY\"]","description_kind":"plain","optional":true}},"description":"Retention policy applied to snapshots created by this resource policy.","description_kind":"plain"},"max_items":1},"schedule":{"nesting_mode":"list","block":{"block_types":{"daily_schedule":{"nesting_mode":"list","block":{"attributes":{"days_in_cycle":{"type":"number","description":"The number of days between snapshots.","description_kind":"plain","required":true},"start_time":{"type":"string","description":"This must be in UTC format that resolves to one of\n00:00, 04:00, 08:00, 12:00, 16:00, or 20:00. For example,\nboth 13:00-5 and 08:00 are valid.","description_kind":"plain","required":true}},"description":"The policy will execute every nth day at the specified time.","description_kind":"plain"},"max_items":1},"hourly_schedule":{"nesting_mode":"list","block":{"attributes":{"hours_in_cycle":{"type":"number","description":"The number of hours between snapshots.","description_kind":"plain","required":true},"start_time":{"type":"string","description":"Time within the window to start the operations.\nIt must be in an hourly format \"HH:MM\",\nwhere HH : [00-23] and MM : [00] GMT.\neg: 21:00","description_kind":"plain","required":true}},"description":"The policy will execute every nth hour starting at the specified time.","description_kind":"plain"},"max_items":1},"weekly_schedule":{"nesting_mode":"list","block":{"block_types":{"day_of_weeks":{"nesting_mode":"set","block":{"attributes":{"day":{"type":"string","description":"The day of the week to create the snapshot. e.g. MONDAY Possible values: [\"MONDAY\", \"TUESDAY\", \"WEDNESDAY\", \"THURSDAY\", \"FRIDAY\", \"SATURDAY\", \"SUNDAY\"]","description_kind":"plain","required":true},"start_time":{"type":"string","description":"Time within the window to start the operations.\nIt must be in format \"HH:MM\", where HH : [00-23] and MM : [00-00] GMT.","description_kind":"plain","required":true}},"description":"May contain up to seven (one for each day of the week) snapshot times.","description_kind":"plain"},"min_items":1,"max_items":7}},"description":"Allows specifying a snapshot time for each day of the week.","description_kind":"plain"},"max_items":1}},"description":"Contains one of an 'hourlySchedule', 'dailySchedule', or 'weeklySchedule'.","description_kind":"plain"},"min_items":1,"max_items":1},"snapshot_properties":{"nesting_mode":"list","block":{"attributes":{"guest_flush":{"type":"bool","description":"Whether to perform a 'guest aware' snapshot.","description_kind":"plain","optional":true},"labels":{"type":["map","string"],"description":"A set of key-value pairs.","description_kind":"plain","optional":true},"storage_locations":{"type":["set","string"],"description":"Cloud Storage bucket location to store the auto snapshot\n(regional or multi-regional)","description_kind":"plain","optional":true}},"description":"Properties with which the snapshots are created, such as labels.","description_kind":"plain"},"max_items":1}},"description":"Policy for creating snapshots of persistent disks.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_route":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"An optional description of this resource. Provide this property\nwhen you create the resource.","description_kind":"plain","optional":true},"dest_range":{"type":"string","description":"The destination range of outgoing packets that this route applies to.\nOnly IPv4 is supported.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the\nlast character, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The network that this route applies to.","description_kind":"plain","required":true},"next_hop_gateway":{"type":"string","description":"URL to a gateway that should handle matching packets.\nCurrently, you can only specify the internet gateway, using a full or\npartial valid URL:\n* 'https://www.googleapis.com/compute/v1/projects/project/global/gateways/default-internet-gateway'\n* 'projects/project/global/gateways/default-internet-gateway'\n* 'global/gateways/default-internet-gateway'\n* The string 'default-internet-gateway'.","description_kind":"plain","optional":true},"next_hop_ilb":{"type":"string","description":"The URL to a forwarding rule of type loadBalancingScheme=INTERNAL that should handle matching packets.\nYou can only specify the forwarding rule as a partial or full URL. For example, the following are all valid URLs:\nhttps://www.googleapis.com/compute/v1/projects/project/regions/region/forwardingRules/forwardingRule\nregions/region/forwardingRules/forwardingRule\nNote that this can only be used when the destinationRange is a public (non-RFC 1918) IP CIDR range.","description_kind":"plain","optional":true},"next_hop_instance":{"type":"string","description":"URL to an instance that should handle matching packets.\nYou can specify this as a full or partial URL. For example:\n* 'https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance'\n* 'projects/project/zones/zone/instances/instance'\n* 'zones/zone/instances/instance'\n* Just the instance name, with the zone in 'next_hop_instance_zone'.","description_kind":"plain","optional":true},"next_hop_instance_zone":{"type":"string","description":"The zone of the instance specified in next_hop_instance. Omit if next_hop_instance is specified as a URL.","description_kind":"plain","optional":true},"next_hop_ip":{"type":"string","description":"Network IP address of an instance that should handle matching packets.","description_kind":"plain","optional":true,"computed":true},"next_hop_network":{"type":"string","description":"URL to a Network that should handle matching packets.","description_kind":"plain","computed":true},"next_hop_vpn_tunnel":{"type":"string","description":"URL to a VpnTunnel that should handle matching packets.","description_kind":"plain","optional":true},"priority":{"type":"number","description":"The priority of this route. Priority is used to break ties in cases\nwhere there is more than one matching route of equal prefix length.\n\nIn the case of two routes with equal prefix length, the one with the\nlowest-numbered priority value wins.\n\nDefault value is 1000. Valid range is 0 through 65535.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"tags":{"type":["set","string"],"description":"A list of instance tags to which this route applies.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_router":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?'\nwhich means the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"A reference to the network to which this router belongs.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where the router resides.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"bgp":{"nesting_mode":"list","block":{"attributes":{"advertise_mode":{"type":"string","description":"User-specified flag to indicate which mode to use for advertisement. Default value: \"DEFAULT\" Possible values: [\"DEFAULT\", \"CUSTOM\"]","description_kind":"plain","optional":true},"advertised_groups":{"type":["list","string"],"description":"User-specified list of prefix groups to advertise in custom mode.\nThis field can only be populated if advertiseMode is CUSTOM and\nis advertised to all peers of the router. These groups will be\nadvertised in addition to any specified prefixes. Leave this field\nblank to advertise no custom groups.\n\nThis enum field has the one valid value: ALL_SUBNETS","description_kind":"plain","optional":true},"asn":{"type":"number","description":"Local BGP Autonomous System Number (ASN). Must be an RFC6996\nprivate ASN, either 16-bit or 32-bit. The value will be fixed for\nthis router resource. All VPN tunnels that link to this router\nwill have the same local ASN.","description_kind":"plain","required":true}},"block_types":{"advertised_ip_ranges":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"User-specified description for the IP range.","description_kind":"plain","optional":true},"range":{"type":"string","description":"The IP range to advertise. The value must be a\nCIDR-formatted string.","description_kind":"plain","required":true}},"description":"User-specified list of individual IP ranges to advertise in\ncustom mode. This field can only be populated if advertiseMode\nis CUSTOM and is advertised to all peers of the router. These IP\nranges will be advertised in addition to any specified groups.\nLeave this field blank to advertise no custom IP ranges.","description_kind":"plain"}}},"description":"BGP information specific to this router.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_router_interface":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interconnect_attachment":{"type":"string","description":"The name or resource link to the VLAN interconnect for this interface. Changing this forces a new interface to be created. Only one of vpn_tunnel and interconnect_attachment can be specified.","description_kind":"plain","optional":true},"ip_range":{"type":"string","description":"IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. Changing this forces a new interface to be created.","description_kind":"plain","optional":true},"name":{"type":"string","description":"A unique name for the interface, required by GCE. Changing this forces a new interface to be created.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which this interface's router belongs. If it is not provided, the provider project is used. Changing this forces a new interface to be created.","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The region this interface's router sits in. If not specified, the project region will be used. Changing this forces a new interface to be created.","description_kind":"plain","optional":true,"computed":true},"router":{"type":"string","description":"The name of the router this interface will be attached to. Changing this forces a new interface to be created.","description_kind":"plain","required":true},"vpn_tunnel":{"type":"string","description":"The name or resource link to the VPN tunnel this interface will be linked to. Changing this forces a new interface to be created. Only one of vpn_tunnel and interconnect_attachment can be specified.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_router_nat":{"version":0,"block":{"attributes":{"drain_nat_ips":{"type":["set","string"],"description":"A list of URLs of the IP resources to be drained. These IPs must be\nvalid static external IPs that have been assigned to the NAT.","description_kind":"plain","optional":true},"enable_endpoint_independent_mapping":{"type":"bool","description":"Specifies if endpoint independent mapping is enabled. This is enabled by default. For more information\nsee the [official documentation](https://cloud.google.com/nat/docs/overview#specs-rfcs).","description_kind":"plain","optional":true},"icmp_idle_timeout_sec":{"type":"number","description":"Timeout (in seconds) for ICMP connections. Defaults to 30s if not set.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"min_ports_per_vm":{"type":"number","description":"Minimum number of ports allocated to a VM from this NAT.","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the NAT service. The name must be 1-63 characters long and\ncomply with RFC1035.","description_kind":"plain","required":true},"nat_ip_allocate_option":{"type":"string","description":"How external IPs should be allocated for this NAT. Valid values are\n'AUTO_ONLY' for only allowing NAT IPs allocated by Google Cloud\nPlatform, or 'MANUAL_ONLY' for only user-allocated NAT IP addresses. Possible values: [\"MANUAL_ONLY\", \"AUTO_ONLY\"]","description_kind":"plain","required":true},"nat_ips":{"type":["set","string"],"description":"Self-links of NAT IPs. Only valid if natIpAllocateOption\nis set to MANUAL_ONLY.","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where the router and NAT reside.","description_kind":"plain","optional":true,"computed":true},"router":{"type":"string","description":"The name of the Cloud Router in which this NAT will be configured.","description_kind":"plain","required":true},"source_subnetwork_ip_ranges_to_nat":{"type":"string","description":"How NAT should be configured per Subnetwork.\nIf 'ALL_SUBNETWORKS_ALL_IP_RANGES', all of the\nIP ranges in every Subnetwork are allowed to Nat.\nIf 'ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES', all of the primary IP\nranges in every Subnetwork are allowed to Nat.\n'LIST_OF_SUBNETWORKS': A list of Subnetworks are allowed to Nat\n(specified in the field subnetwork below). Note that if this field\ncontains ALL_SUBNETWORKS_ALL_IP_RANGES or\nALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any\nother RouterNat section in any Router for this network in this region. Possible values: [\"ALL_SUBNETWORKS_ALL_IP_RANGES\", \"ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES\", \"LIST_OF_SUBNETWORKS\"]","description_kind":"plain","required":true},"tcp_established_idle_timeout_sec":{"type":"number","description":"Timeout (in seconds) for TCP established connections.\nDefaults to 1200s if not set.","description_kind":"plain","optional":true},"tcp_transitory_idle_timeout_sec":{"type":"number","description":"Timeout (in seconds) for TCP transitory connections.\nDefaults to 30s if not set.","description_kind":"plain","optional":true},"udp_idle_timeout_sec":{"type":"number","description":"Timeout (in seconds) for UDP connections. Defaults to 30s if not set.","description_kind":"plain","optional":true}},"block_types":{"log_config":{"nesting_mode":"list","block":{"attributes":{"enable":{"type":"bool","description":"Indicates whether or not to export logs.","description_kind":"plain","required":true},"filter":{"type":"string","description":"Specifies the desired filtering of logs on this NAT. Possible values: [\"ERRORS_ONLY\", \"TRANSLATIONS_ONLY\", \"ALL\"]","description_kind":"plain","required":true}},"description":"Configuration for logging on NAT","description_kind":"plain"},"max_items":1},"subnetwork":{"nesting_mode":"set","block":{"attributes":{"name":{"type":"string","description":"Self-link of subnetwork to NAT","description_kind":"plain","required":true},"secondary_ip_range_names":{"type":["set","string"],"description":"List of the secondary ranges of the subnetwork that are allowed\nto use NAT. This can be populated only if\n'LIST_OF_SECONDARY_IP_RANGES' is one of the values in\nsourceIpRangesToNat","description_kind":"plain","optional":true},"source_ip_ranges_to_nat":{"type":["set","string"],"description":"List of options for which source IPs in the subnetwork\nshould have NAT enabled. Supported values include:\n'ALL_IP_RANGES', 'LIST_OF_SECONDARY_IP_RANGES',\n'PRIMARY_IP_RANGE'.","description_kind":"plain","required":true}},"description":"One or more subnetwork NAT configurations. Only used if\n'source_subnetwork_ip_ranges_to_nat' is set to 'LIST_OF_SUBNETWORKS'","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_router_peer":{"version":0,"block":{"attributes":{"advertise_mode":{"type":"string","description":"User-specified flag to indicate which mode to use for advertisement.\nValid values of this enum field are: 'DEFAULT', 'CUSTOM' Default value: \"DEFAULT\" Possible values: [\"DEFAULT\", \"CUSTOM\"]","description_kind":"plain","optional":true},"advertised_groups":{"type":["list","string"],"description":"User-specified list of prefix groups to advertise in custom\nmode, which can take one of the following options:\n\n* 'ALL_SUBNETS': Advertises all available subnets, including peer VPC subnets.\n* 'ALL_VPC_SUBNETS': Advertises the router's own VPC subnets.\n* 'ALL_PEER_VPC_SUBNETS': Advertises peer subnets of the router's VPC network.\n\n\nNote that this field can only be populated if advertiseMode is 'CUSTOM'\nand overrides the list defined for the router (in the \"bgp\" message).\nThese groups are advertised in addition to any specified prefixes.\nLeave this field blank to advertise no custom groups.","description_kind":"plain","optional":true},"advertised_route_priority":{"type":"number","description":"The priority of routes advertised to this BGP peer.\nWhere there is more than one matching route of maximum\nlength, the routes with the lowest priority value win.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"interface":{"type":"string","description":"Name of the interface the BGP peer is associated with.","description_kind":"plain","required":true},"ip_address":{"type":"string","description":"IP address of the interface inside Google Cloud Platform.\nOnly IPv4 is supported.","description_kind":"plain","computed":true},"management_type":{"type":"string","description":"The resource that configures and manages this BGP peer.\n\n* 'MANAGED_BY_USER' is the default value and can be managed by\nyou or other users\n* 'MANAGED_BY_ATTACHMENT' is a BGP peer that is configured and\nmanaged by Cloud Interconnect, specifically by an\nInterconnectAttachment of type PARTNER. Google automatically\ncreates, updates, and deletes this type of BGP peer when the\nPARTNER InterconnectAttachment is created, updated,\nor deleted.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of this BGP peer. The name must be 1-63 characters long,\nand comply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which\nmeans the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"peer_asn":{"type":"number","description":"Peer BGP Autonomous System Number (ASN).\nEach BGP interface may use a different value.","description_kind":"plain","required":true},"peer_ip_address":{"type":"string","description":"IP address of the BGP interface outside Google Cloud Platform.\nOnly IPv4 is supported.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Region where the router and BgpPeer reside.\nIf it is not provided, the provider region is used.","description_kind":"plain","optional":true,"computed":true},"router":{"type":"string","description":"The name of the Cloud Router in which this BgpPeer will be configured.","description_kind":"plain","required":true}},"block_types":{"advertised_ip_ranges":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"User-specified description for the IP range.","description_kind":"plain","optional":true},"range":{"type":"string","description":"The IP range to advertise. The value must be a\nCIDR-formatted string.","description_kind":"plain","required":true}},"description":"User-specified list of individual IP ranges to advertise in\ncustom mode. This field can only be populated if advertiseMode\nis 'CUSTOM' and is advertised to all peers of the router. These IP\nranges will be advertised in addition to any specified groups.\nLeave this field blank to advertise no custom IP ranges.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_security_policy":{"version":0,"block":{"attributes":{"description":{"type":"string","description":"An optional description of this security policy. Max size is 2048.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the security policy.","description_kind":"plain","required":true},"project":{"type":"string","description":"The project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true}},"block_types":{"rule":{"nesting_mode":"set","block":{"attributes":{"action":{"type":"string","description":"Action to take when match matches the request. Valid values: \"allow\" : allow access to target, \"deny(status)\" : deny access to target, returns the HTTP response code specified (valid values are 403, 404 and 502)","description_kind":"plain","required":true},"description":{"type":"string","description":"An optional description of this rule. Max size is 64.","description_kind":"plain","optional":true},"preview":{"type":"bool","description":"When set to true, the action specified above is not enforced. Stackdriver logs for requests that trigger a preview action are annotated as such.","description_kind":"plain","optional":true,"computed":true},"priority":{"type":"number","description":"An unique positive integer indicating the priority of evaluation for a rule. Rules are evaluated from highest priority (lowest numerically) to lowest priority (highest numerically) in order.","description_kind":"plain","required":true}},"block_types":{"match":{"nesting_mode":"list","block":{"attributes":{"versioned_expr":{"type":"string","description":"Predefined rule expression. If this field is specified, config must also be specified. Available options: SRC_IPS_V1: Must specify the corresponding src_ip_ranges field in config.","description_kind":"plain","optional":true}},"block_types":{"config":{"nesting_mode":"list","block":{"attributes":{"src_ip_ranges":{"type":["set","string"],"description":"Set of IP addresses or ranges (IPV4 or IPV6) in CIDR notation to match against inbound traffic. There is a limit of 10 IP ranges per rule. A value of '*' matches all IPs (can be used to override the default behavior).","description_kind":"plain","required":true}},"description":"The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified.","description_kind":"plain"},"max_items":1},"expr":{"nesting_mode":"list","block":{"attributes":{"expression":{"type":"string","description":"Textual representation of an expression in Common Expression Language syntax. The application context of the containing message determines which well-known feature set of CEL is supported.","description_kind":"plain","required":true}},"description":"User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.","description_kind":"plain"},"max_items":1}},"description":"A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding action is enforced.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The set of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_shared_vpc_host_project":{"version":0,"block":{"attributes":{"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description":"The ID of the project that will serve as a Shared VPC host project","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_shared_vpc_service_project":{"version":0,"block":{"attributes":{"host_project":{"type":"string","description":"The ID of a host project to associate.","description_kind":"plain","required":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"service_project":{"type":"string","description":"The ID of the project that will serve as a Shared VPC service project.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_snapshot":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"disk_size_gb":{"type":"number","description":"Size of the snapshot, specified in GB.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"label_fingerprint":{"type":"string","description":"The fingerprint used for optimistic locking of this resource. Used\ninternally during updates.","description_kind":"plain","computed":true},"labels":{"type":["map","string"],"description":"Labels to apply to this Snapshot.","description_kind":"plain","optional":true},"licenses":{"type":["list","string"],"description":"A list of public visible licenses that apply to this snapshot. This\ncan be because the original image had licenses attached (such as a\nWindows image). snapshotEncryptionKey nested object Encrypts the\nsnapshot using a customer-supplied encryption key.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the resource; provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"snapshot_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"source_disk":{"type":"string","description":"A reference to the disk used to create this snapshot.","description_kind":"plain","required":true},"source_disk_link":{"type":"string","description_kind":"plain","deprecated":true,"computed":true},"storage_bytes":{"type":"number","description":"A size of the storage used by the snapshot. As snapshots share\nstorage, this number is expected to change with snapshot\ncreation/deletion.","description_kind":"plain","computed":true},"storage_locations":{"type":["list","string"],"description":"Cloud Storage bucket storage location of the snapshot (regional or multi-regional).","description_kind":"plain","optional":true,"computed":true},"zone":{"type":"string","description":"A reference to the zone where the disk is hosted.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"snapshot_encryption_key":{"nesting_mode":"list","block":{"attributes":{"kms_key_self_link":{"type":"string","description":"The name of the encryption key that is stored in Google Cloud KMS.","description_kind":"plain","optional":true},"kms_key_service_account":{"type":"string","description":"The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.","description_kind":"plain","optional":true},"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true,"sensitive":true},"sha256":{"type":"string","description":"The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied\nencryption key that protects this resource.","description_kind":"plain","computed":true}},"description":"The customer-supplied encryption key of the snapshot. Required if the\nsource snapshot is protected by a customer-supplied encryption key.","description_kind":"plain"},"max_items":1},"source_disk_encryption_key":{"nesting_mode":"list","block":{"attributes":{"kms_key_service_account":{"type":"string","description":"The service account used for the encryption request for the given KMS key.\nIf absent, the Compute Engine Service Agent service account is used.","description_kind":"plain","optional":true},"raw_key":{"type":"string","description":"Specifies a 256-bit customer-supplied encryption key, encoded in\nRFC 4648 base64 to either encrypt or decrypt this resource.","description_kind":"plain","optional":true,"sensitive":true}},"description":"The customer-supplied encryption key of the source snapshot. Required\nif the source snapshot is protected by a customer-supplied encryption\nkey.","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_ssl_certificate":{"version":0,"block":{"attributes":{"certificate":{"type":"string","description":"The certificate in PEM format.\nThe certificate chain must be no greater than 5 certs long.\nThe chain must include at least one intermediate cert.","description_kind":"plain","required":true,"sensitive":true},"certificate_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.\n\n\nThese are in the same namespace as the managed SSL certificates.","description_kind":"plain","optional":true,"computed":true},"name_prefix":{"type":"string","description":"Creates a unique name beginning with the specified prefix. Conflicts with name.","description_kind":"plain","optional":true,"computed":true},"private_key":{"type":"string","description":"The write-only private key in PEM format.","description_kind":"plain","required":true,"sensitive":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_ssl_policy":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"custom_features":{"type":["set","string"],"description":"Profile specifies the set of SSL features that can be used by the\nload balancer when negotiating SSL with clients. This can be one of\n'COMPATIBLE', 'MODERN', 'RESTRICTED', or 'CUSTOM'. If using 'CUSTOM',\nthe set of SSL features to enable must be specified in the\n'customFeatures' field.\n\nSee the [official documentation](https://cloud.google.com/compute/docs/load-balancing/ssl-policies#profilefeaturesupport)\nfor which ciphers are available to use. **Note**: this argument\n*must* be present when using the 'CUSTOM' profile. This argument\n*must not* be present when using any other profile.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"enabled_features":{"type":["set","string"],"description":"The list of features enabled in the SSL policy.","description_kind":"plain","computed":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. A hash of the contents stored in this\nobject. This field is used in optimistic locking.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"min_tls_version":{"type":"string","description":"The minimum version of SSL protocol that can be used by the clients\nto establish a connection with the load balancer. Default value: \"TLS_1_0\" Possible values: [\"TLS_1_0\", \"TLS_1_1\", \"TLS_1_2\"]","description_kind":"plain","optional":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"profile":{"type":"string","description":"Profile specifies the set of SSL features that can be used by the\nload balancer when negotiating SSL with clients. If using 'CUSTOM',\nthe set of SSL features to enable must be specified in the\n'customFeatures' field.\n\nSee the [official documentation](https://cloud.google.com/compute/docs/load-balancing/ssl-policies#profilefeaturesupport)\nfor information on what cipher suites each profile provides. If\n'CUSTOM' is used, the 'custom_features' attribute **must be set**. Default value: \"COMPATIBLE\" Possible values: [\"COMPATIBLE\", \"MODERN\", \"RESTRICTED\", \"CUSTOM\"]","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"c
[2021-03-30T16:04:49.150] [DEBUG] default - omputed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_subnetwork":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when\nyou create the resource. This field can be set only at resource\ncreation time.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. This field is used internally during updates of this resource.","description_kind":"plain","deprecated":true,"computed":true},"gateway_address":{"type":"string","description":"The gateway address for default routes to reach destination addresses\noutside this subnetwork.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ip_cidr_range":{"type":"string","description":"The range of internal addresses that are owned by this subnetwork.\nProvide this property when you create the subnetwork. For example,\n10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and\nnon-overlapping within a network. Only IPv4 is supported.","description_kind":"plain","required":true},"name":{"type":"string","description":"The name of the resource, provided by the client when initially\ncreating the resource. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63 characters\nlong and match the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which\nmeans the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The network this subnet belongs to.\nOnly networks that are in the distributed mode can have subnetworks.","description_kind":"plain","required":true},"private_ip_google_access":{"type":"bool","description":"When enabled, VMs in this subnetwork without external IP addresses can\naccess Google APIs and services by using Private Google Access.","description_kind":"plain","optional":true},"private_ipv6_google_access":{"type":"string","description":"The private IPv6 google access type for the VMs in this subnet.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The GCP region for this subnetwork.","description_kind":"plain","optional":true,"computed":true},"secondary_ip_range":{"type":["list",["object",{"ip_cidr_range":"string","range_name":"string"}]],"description":"An array of configurations for secondary IP ranges for VM instances\ncontained in this subnetwork. The primary IP of such VM must belong\nto the primary ipCidrRange of the subnetwork. The alias IPs may belong\nto either primary or secondary ranges.\n\n**Note**: This field uses [attr-as-block mode](https://www.terraform.io/docs/configuration/attr-as-blocks.html) to avoid\nbreaking users during the 0.12 upgrade. To explicitly send a list\nof zero objects you must use the following syntax:\n'example=[]'\nFor more details about this behavior, see [this section](https://www.terraform.io/docs/configuration/attr-as-blocks.html#defining-a-fixed-object-collection-value).","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"log_config":{"nesting_mode":"list","block":{"attributes":{"aggregation_interval":{"type":"string","description":"Can only be specified if VPC flow logging for this subnetwork is enabled.\nToggles the aggregation interval for collecting flow logs. Increasing the\ninterval time will reduce the amount of generated flow logs for long\nlasting connections. Default is an interval of 5 seconds per connection. Default value: \"INTERVAL_5_SEC\" Possible values: [\"INTERVAL_5_SEC\", \"INTERVAL_30_SEC\", \"INTERVAL_1_MIN\", \"INTERVAL_5_MIN\", \"INTERVAL_10_MIN\", \"INTERVAL_15_MIN\"]","description_kind":"plain","optional":true},"filter_expr":{"type":"string","description":"Export filter used to define which VPC flow logs should be logged, as as CEL expression. See\nhttps://cloud.google.com/vpc/docs/flow-logs#filtering for details on how to format this field.\nThe default value is 'true', which evaluates to include everything.","description_kind":"plain","optional":true},"flow_sampling":{"type":"number","description":"Can only be specified if VPC flow logging for this subnetwork is enabled.\nThe value of the field must be in [0, 1]. Set the sampling rate of VPC\nflow logs within the subnetwork where 1.0 means all collected logs are\nreported and 0.0 means no logs are reported. Default is 0.5 which means\nhalf of all collected logs are reported.","description_kind":"plain","optional":true},"metadata":{"type":"string","description":"Can only be specified if VPC flow logging for this subnetwork is enabled.\nConfigures whether metadata fields should be added to the reported VPC\nflow logs. Default value: \"INCLUDE_ALL_METADATA\" Possible values: [\"EXCLUDE_ALL_METADATA\", \"INCLUDE_ALL_METADATA\", \"CUSTOM_METADATA\"]","description_kind":"plain","optional":true},"metadata_fields":{"type":["set","string"],"description":"List of metadata fields that should be added to reported logs.\nCan only be specified if VPC flow logs for this subnetwork is enabled and \"metadata\" is set to CUSTOM_METADATA.","description_kind":"plain","optional":true}},"description":"Denotes the logging options for the subnetwork flow logs. If logging is enabled\nlogs will be exported to Stackdriver. This field cannot be set if the 'purpose' of this\nsubnetwork is 'INTERNAL_HTTPS_LOAD_BALANCER'","description_kind":"plain"},"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_subnetwork_iam_binding":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"members":{"type":["set","string"],"description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"subnetwork":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_subnetwork_iam_member":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"member":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"role":{"type":"string","description_kind":"plain","required":true},"subnetwork":{"type":"string","description_kind":"plain","required":true}},"block_types":{"condition":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description_kind":"plain","optional":true},"expression":{"type":"string","description_kind":"plain","required":true},"title":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"},"max_items":1}},"description_kind":"plain"}},"google_compute_subnetwork_iam_policy":{"version":0,"block":{"attributes":{"etag":{"type":"string","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"policy_data":{"type":"string","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description_kind":"plain","optional":true,"computed":true},"subnetwork":{"type":"string","description_kind":"plain","required":true}},"description_kind":"plain"}},"google_compute_target_grpc_proxy":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. A hash of the contents stored in\nthis object. This field is used in optimistic locking. This field\nwill be ignored when inserting a TargetGrpcProxy. An up-to-date\nfingerprint must be provided in order to patch/update the\nTargetGrpcProxy; otherwise, the request will fail with error\n412 conditionNotMet. To see the latest fingerprint, make a get()\nrequest to retrieve the TargetGrpcProxy. A base64-encoded string.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource\nis created. The name must be 1-63 characters long, and comply\nwith RFC1035. Specifically, the name must be 1-63 characters long\nand match the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which\nmeans the first character must be a lowercase letter, and all\nfollowing characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"self_link_with_id":{"type":"string","description":"Server-defined URL with id for the resource.","description_kind":"plain","computed":true},"url_map":{"type":"string","description":"URL to the UrlMap resource that defines the mapping from URL to\nthe BackendService. The protocol field in the BackendService\nmust be set to GRPC.","description_kind":"plain","optional":true},"validate_for_proxyless":{"type":"bool","description":"If true, indicates that the BackendServices referenced by\nthe urlMap may be accessed by gRPC applications without using\na sidecar proxy. This will enable configuration checks on urlMap\nand its referenced BackendServices to not allow unsupported features.\nA gRPC application must use \"xds:///\" scheme in the target URI\nof the service it is connecting to. If false, indicates that the\nBackendServices referenced by the urlMap will be accessed by gRPC\napplications via a sidecar proxy. In this case, a gRPC application\nmust not use \"xds:///\" scheme in the target URI of the service\nit is connecting to","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_target_http_proxy":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"proxy_bind":{"type":"bool","description":"This field only applies when the forwarding rule that references\nthis target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED.","description_kind":"plain","optional":true,"computed":true},"proxy_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"url_map":{"type":"string","description":"A reference to the UrlMap resource that defines the mapping from URL\nto the BackendService.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_target_https_proxy":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"proxy_bind":{"type":"bool","description":"This field only applies when the forwarding rule that references\nthis target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED.","description_kind":"plain","optional":true,"computed":true},"proxy_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"quic_override":{"type":"string","description":"Specifies the QUIC override policy for this resource. This determines\nwhether the load balancer will attempt to negotiate QUIC with clients\nor not. Can specify one of NONE, ENABLE, or DISABLE. If NONE is\nspecified, uses the QUIC policy with no user overrides, which is\nequivalent to DISABLE. Default value: \"NONE\" Possible values: [\"NONE\", \"ENABLE\", \"DISABLE\"]","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"ssl_certificates":{"type":["list","string"],"description":"A list of SslCertificate resources that are used to authenticate\nconnections between users and the load balancer. At least one SSL\ncertificate must be specified.","description_kind":"plain","required":true},"ssl_policy":{"type":"string","description":"A reference to the SslPolicy resource that will be associated with\nthe TargetHttpsProxy resource. If not set, the TargetHttpsProxy\nresource will not have any SSL policy configured.","description_kind":"plain","optional":true},"url_map":{"type":"string","description":"A reference to the UrlMap resource that defines the mapping from URL\nto the BackendService.","description_kind":"plain","required":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_target_instance":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instance":{"type":"string","description":"The Compute instance VM handling traffic for this target instance.\nAccepts the instance self-link, relative path\n(e.g. 'projects/project/zones/zone/instances/instance') or name. If\nname is given, the zone will default to the given zone or\nthe provider-default zone and the project will default to the\nprovider-level project.","description_kind":"plain","required":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"nat_policy":{"type":"string","description":"NAT option controlling how IPs are NAT'ed to the instance.\nCurrently only NO_NAT (default value) is supported. Default value: \"NO_NAT\" Possible values: [\"NO_NAT\"]","description_kind":"plain","optional":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"zone":{"type":"string","description":"URL of the zone where the target instance resides.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_target_pool":{"version":0,"block":{"attributes":{"backup_pool":{"type":"string","description":"URL to the backup target pool. Must also set failover_ratio.","description_kind":"plain","optional":true},"description":{"type":"string","description":"Textual description field.","description_kind":"plain","optional":true},"failover_ratio":{"type":"number","description":"Ratio (0 to 1) of failed nodes before using the backup pool (which must also be set).","description_kind":"plain","optional":true},"health_checks":{"type":["list","string"],"description":"List of zero or one health check name or self_link. Only legacy google_compute_http_health_check is supported.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"instances":{"type":["set","string"],"description":"List of instances in the pool. They can be given as URLs, or in the form of \"zone/name\". Note that the instances need not exist at the time of target pool creation, so there is no need to use the Terraform interpolators to create a dependency on the instances from the target pool.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"A unique name for the resource, required by GCE. Changing this forces a new resource to be created.","description_kind":"plain","required":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"Where the target pool resides. Defaults to project region.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description":"The URI of the created resource.","description_kind":"plain","computed":true},"session_affinity":{"type":"string","description":"How to distribute load. Options are \"NONE\" (no affinity). \"CLIENT_IP\" (hash of the source/dest addresses / ports), and \"CLIENT_IP_PROTO\" also includes the protocol (default \"NONE\").","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_target_ssl_proxy":{"version":0,"block":{"attributes":{"backend_service":{"type":"string","description":"A reference to the BackendService resource.","description_kind":"plain","required":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to\nthe backend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"proxy_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"ssl_certificates":{"type":["list","string"],"description":"A list of SslCertificate resources that are used to authenticate\nconnections between users and the load balancer. At least one\nSSL certificate must be specified.","description_kind":"plain","required":true},"ssl_policy":{"type":"string","description":"A reference to the SslPolicy resource that will be associated with\nthe TargetSslProxy resource. If not set, the TargetSslProxy\nresource will not have any SSL policy configured.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_target_tcp_proxy":{"version":0,"block":{"attributes":{"backend_service":{"type":"string","description":"A reference to the BackendService resource.","description_kind":"plain","required":true},"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and match\nthe regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means the\nfirst character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"proxy_bind":{"type":"bool","description":"This field only applies when the forwarding rule that references\nthis target proxy has a loadBalancingScheme set to INTERNAL_SELF_MANAGED.","description_kind":"plain","optional":true,"computed":true},"proxy_header":{"type":"string","description":"Specifies the type of proxy header to append before sending data to\nthe backend. Default value: \"NONE\" Possible values: [\"NONE\", \"PROXY_V1\"]","description_kind":"plain","optional":true},"proxy_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_url_map":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"default_service":{"type":"string","description":"The backend service or backend bucket to use when none of the given rules match.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when you create\nthe resource.","description_kind":"plain","optional":true},"fingerprint":{"type":"string","description":"Fingerprint of this resource. A hash of the contents stored in this object. This\nfield is used in optimistic locking.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"map_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is created. The\nname must be 1-63 characters long, and comply with RFC1035. Specifically, the\nname must be 1-63 characters long and match the regular expression\n'[a-z]([-a-z0-9]*[a-z0-9])?' which means the first character must be a lowercase\nletter, and all following characters must be a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"default_route_action":{"nesting_mode":"list","block":{"block_types":{"cors_policy":{"nesting_mode":"list","block":{"attributes":{"allow_credentials":{"type":"bool","description":"In response to a preflight request, setting this to true indicates that the actual request can include user credentials.\nThis translates to the Access-Control-Allow-Credentials header.","description_kind":"plain","optional":true},"allow_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Headers header.","description_kind":"plain","optional":true},"allow_methods":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Methods header.","description_kind":"plain","optional":true},"allow_origin_regexes":{"type":["list","string"],"description":"Specifies the regular expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.","description_kind":"plain","optional":true},"allow_origins":{"type":["list","string"],"description":"Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.","description_kind":"plain","optional":true},"expose_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Expose-Headers header.","description_kind":"plain","optional":true},"max_age":{"type":"number","description":"Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.","description_kind":"plain","optional":true}},"description":"The specification for allowing client side cross-origin requests. Please see\n[W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)","description_kind":"plain"},"max_items":1},"fault_injection_policy":{"nesting_mode":"list","block":{"block_types":{"abort":{"nesting_mode":"list","block":{"attributes":{"http_status":{"type":"number","description":"The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.","description_kind":"plain","optional":true},"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.","description_kind":"plain","optional":true}},"description":"The specification for how client requests are aborted as part of fault injection.","description_kind":"plain"},"max_items":1},"delay":{"nesting_mode":"list","block":{"attributes":{"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.","description_kind":"plain","optional":true}},"block_types":{"fixed_delay":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years","description_kind":"plain","optional":true}},"description":"Specifies the value of the fixed delay interval.","description_kind":"plain"},"max_items":1}},"description":"The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.","description_kind":"plain"},"max_items":1}},"description":"The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure.\nAs part of fault injection, when clients send requests to a backend service, delays can be introduced by Loadbalancer on a\npercentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted\nby the Loadbalancer for a percentage of requests.\n\ntimeout and retryPolicy will be ignored by clients that are configured with a faultInjectionPolicy.","description_kind":"plain"},"max_items":1},"request_mirror_policy":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The full or partial URL to the BackendService resource being mirrored to.","description_kind":"plain","required":true}},"description":"Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service.\nLoadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service,\nthe host / authority header is suffixed with -shadow.","description_kind":"plain"},"max_items":1},"retry_policy":{"nesting_mode":"list","block":{"attributes":{"num_retries":{"type":"number","description":"Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.","description_kind":"plain","optional":true},"retry_conditions":{"type":["list","string"],"description":"Specfies one or more conditions when this retry rule applies. Valid values are:\n\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code,\n or if the backend service does not respond at all, example: disconnects, reset, read timeout,\n* connection failure, and refused streams.\n* gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures connecting to backend services,\n for example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\n Currently the only retriable error supported is 409.\n* refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code.\n This reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable","description_kind":"plain","optional":true}},"block_types":{"per_try_timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years","description_kind":"plain","optional":true}},"description":"Specifies a non-zero timeout per retry attempt.\n\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.","description_kind":"plain"},"max_items":1}},"description":"Specifies the retry policy associated with this route.","description_kind":"plain"},"max_items":1},"timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years","description_kind":"plain","optional":true}},"description":"Specifies the timeout for the selected route. Timeout is computed from the time the request has been\nfully processed (i.e. end-of-stream) up until the response has been completely processed. Timeout includes all retries.\n\nIf not specified, will use the largest timeout among all backend services associated with the route.","description_kind":"plain"},"max_items":1},"url_rewrite":{"nesting_mode":"list","block":{"attributes":{"host_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected service, the request's host header is replaced\nwith contents of hostRewrite.\n\nThe value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"path_prefix_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected backend service, the matching portion of the\nrequest's path is replaced by pathPrefixRewrite.\n\nThe value must be between 1 and 1024 characters.","description_kind":"plain","optional":true}},"description":"The spec to modify the URL of the request, prior to forwarding the request to the matched service.","description_kind":"plain"},"max_items":1},"weighted_backend_services":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The full or partial URL to the default BackendService resource. Before forwarding the\nrequest to backendService, the loadbalancer applies any relevant headerActions\nspecified as part of this backendServiceWeight.","description_kind":"plain","optional":true},"weight":{"type":"number","description":"Specifies the fraction of traffic sent to backendService, computed as\nweight / (sum of all weightedBackendService weights in routeAction) .\n\nThe selection of a backend service is determined only for new traffic. Once a user's request\nhas been directed to a backendService, subsequent requests will be sent to the same backendService\nas determined by the BackendService's session affinity policy.\n\nThe value must be between 0 and 1000","description_kind":"plain","optional":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header to add.","description_kind":"plain","optional":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","optional":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.","description_kind":"plain","optional":true}},"description":"Headers to add to a matching request prior to forwarding the request to the backendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header to add.","description_kind":"plain","optional":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","optional":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.","description_kind":"plain","optional":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService.\n\nheaderAction specified here take effect before headerAction in the enclosing\nHttpRouteRule, PathMatcher and UrlMap.","description_kind":"plain"},"max_items":1}},"description":"A list of weighted backend services to send traffic to when a route match occurs.\nThe weights determine the fraction of traffic that flows to their corresponding backend service.\nIf all traffic needs to go to a single backend service, there must be one weightedBackendService\nwith weight set to a non 0 number.\n\nOnce a backendService is identified and before forwarding the request to the backend service,\nadvanced routing actions like Url rewrites and header transformations are applied depending on\nadditional settings specified in this HttpRouteAction.","description_kind":"plain"}}},"description":"defaultRouteAction takes effect when none of the hostRules match. The load balancer performs advanced routing actions\nlike URL rewrites, header transformations, etc. prior to forwarding the request to the selected backend.\nIf defaultRouteAction specifies any weightedBackendServices, defaultService must not be set. Conversely if defaultService\nis set, defaultRouteAction cannot contain any weightedBackendServices.\n\nOnly one of defaultRouteAction or defaultUrlRedirect must be set.","description_kind":"plain"},"max_items":1},"default_url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained. The default is set to false.\n This field is required to ensure an empty block is not set. The normal default value is false.","description_kind":"plain","required":true}},"description":"When none of the specified hostRules match, the request is redirected to a URL specified\nby defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or\ndefaultRouteAction must not be set.","description_kind":"plain"},"max_items":1},"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. The headerAction specified here take effect after\nheaderAction specified under pathMatcher.","description_kind":"plain"},"max_items":1},"host_rule":{"nesting_mode":"set","block":{"attributes":{"description":{"type":"string","description":"An optional description of this resource. Provide this property when you create\nthe resource.","description_kind":"plain","optional":true},"hosts":{"type":["set","string"],"description":"The list of host patterns to match. They must be valid hostnames, except * will\nmatch any string of ([a-z0-9-.]*). In that case, * must be the first character\nand must be followed in the pattern by either - or ..","description_kind":"plain","required":true},"path_matcher":{"type":"string","description":"The name of the PathMatcher to use to match the path portion of the URL if the\nhostRule matches the URL's host portion.","description_kind":"plain","required":true}},"description":"The list of HostRules to use against the URL.","description_kind":"plain"}},"path_matcher":{"nesting_mode":"list","block":{"attributes":{"default_service":{"type":"string","description":"The backend service or backend bucket to use when none of the given paths match.","description_kind":"plain","optional":true},"description":{"type":"string","description":"An optional description of this resource. Provide this property when you create\nthe resource.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name to which this PathMatcher is referred by the HostRule.","description_kind":"plain","required":true}},"block_types":{"default_route_action":{"nesting_mode":"list","block":{"block_types":{"cors_policy":{"nesting_mode":"list","block":{"attributes":{"allow_credentials":{"type":"bool","description":"In response to a preflight request, setting this to true indicates that the actual request can include user credentials.\nThis translates to the Access-Control-Allow-Credentials header.","description_kind":"plain","optional":true},"allow_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Headers header.","description_kind":"plain","optional":true},"allow_methods":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Methods header.","description_kind":"plain","optional":true},"allow_origin_regexes":{"type":["list","string"],"description":"Specifies the regular expression patterns that match allowed origins. For regular expression grammar\nplease see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.","description_kind":"plain","optional":true},"allow_origins":{"type":["list","string"],"description":"Specifies the list of origins that will be allowed to do CORS requests.\nAn origin is allowed if it matches either an item in allowOrigins or an item in allowOriginRegexes.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"If true, specifies the CORS policy is disabled. The default value is false, which indicates that the CORS policy is in effect.","description_kind":"plain","optional":true},"expose_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Expose-Headers header.","description_kind":"plain","optional":true},"max_age":{"type":"number","description":"Specifies how long results of a preflight request can be cached in seconds.\nThis translates to the Access-Control-Max-Age header.","description_kind":"plain","optional":true}},"description":"The specification for allowing client side cross-origin requests. Please see\n[W3C Recommendation for Cross Origin Resource Sharing](https://www.w3.org/TR/cors/)","description_kind":"plain"},"max_items":1},"fault_injection_policy":{"nesting_mode":"list","block":{"block_types":{"abort":{"nesting_mode":"list","block":{"attributes":{"http_status":{"type":"number","description":"The HTTP status code used to abort the request.\nThe value must be between 200 and 599 inclusive.","description_kind":"plain","optional":true},"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) which will be aborted as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.","description_kind":"plain","optional":true}},"description":"The specification for how client requests are aborted as part of fault injection.","description_kind":"plain"},"max_items":1},"delay":{"nesting_mode":"list","block":{"attributes":{"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) on which delay will be introduced as part of fault injection.\nThe value must be between 0.0 and 100.0 inclusive.","description_kind":"plain","optional":true}},"block_types":{"fixed_delay":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years","description_kind":"plain","optional":true}},"description":"Specifies the value of the fixed delay interval.","description_kind":"plain"},"max_items":1}},"description":"The specification for how client requests are delayed as part of fault injection, before being sent to a backend service.","description_kind":"plain"},"max_items":1}},"description":"The specification for fault injection introduced into traffic to test the resiliency of clients to backend service failure.\nAs part of fault injection, when clients send requests to a backend service, delays can be introduced by Loadbalancer on a\npercentage of requests before sending those request to the backend service. Similarly requests from clients can be aborted\nby the Loadbalancer for a percentage of requests.\n\ntimeout and retryPolicy will be ignored by clients that are configured with a faultInjectionPolicy.","description_kind":"plain"},"max_items":1},"request_mirror_policy":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The full or partial URL to the BackendService resource being mirrored to.","description_kind":"plain","required":true}},"description":"Specifies the policy on how requests intended for the route's backends are shadowed to a separate mirrored backend service.\nLoadbalancer does not wait for responses from the shadow service. Prior to sending traffic to the shadow service,\nthe host / authority header is suffixed with -shadow.","description_kind":"plain"},"max_items":1},"retry_policy":{"nesting_mode":"list","block":{"attributes":{"num_retries":{"type":"number","description":"Specifies the allowed number retries. This number must be \u003e 0. If not specified, defaults to 1.","description_kind":"plain","optional":true},"retry_conditions":{"type":["list","string"],"description":"Specfies one or more conditions when this retry rule applies. Valid values are:\n\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with any 5xx response code,\n or if the backend service does not respond at all, example: disconnects, reset, read timeout,\n* connection failure, and refused streams.\n* gateway-error: Similar to 5xx, but only applies to response codes 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures connecting to backend services,\n for example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\n Currently the only retriable error supported is 409.\n* refused-stream:Loadbalancer will retry if the backend service resets the stream with a REFUSED_STREAM error code.\n This reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in the response header is set to unavailable","description_kind":"plain","optional":true}},"block_types":{"per_try_timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are\nrepresented with a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years","description_kind":"plain","optional":true}},"description":"Specifies a non-zero timeout per retry attempt.\n\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction is not set,\nwill use the largest timeout among all backend services associated with the route.","description_kind":"plain"},"max_items":1}},"description":"Specifies the retry policy associated with this route.","description_kind":"plain"},"max_items":1},"timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations less than one second are represented\nwith a 0 seconds field and a positive nanos field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000 inclusive.\nNote: these bounds are computed from: 60 sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years","description_kind":"plain","optional":true}},"description":"Specifies the timeout for the selected route. Timeout is computed from the time the request has been\nfully processed (i.e. end-of-stream) up until the response has been completely processed. Timeout includes all retries.\n\nIf not specified, will use the largest timeout among all backend services associated with the route.","description_kind":"plain"},"max_items":1},"url_rewrite":{"nesting_mode":"list","block":{"attributes":{"host_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected service, the request's host header is replaced\nwith contents of hostRewrite.\n\nThe value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"path_prefix_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected backend service, the matching portion of the\nrequest's path is replaced by pathPrefixRewrite.\n\nThe value must be between 1 and 1024 characters.","description_kind":"plain","optional":true}},"description":"The spec to modify the URL of the request, prior to forwarding the request to the matched service.","description_kind":"plain"},"max_items":1},"weighted_backend_services":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The full or partial URL to the default BackendService resource. Before forwarding the\nrequest to backendService, the loadbalancer applies any relevant headerActions\nspecified as part of this backendServiceWeight.","description_kind":"plain","optional":true},"weight":{"type":"number","description":"Specifies the fraction of traffic sent to backendService, computed as\nweight / (sum of all weightedBackendService weights in routeAction) .\n\nThe selection of a backend service is determined only for new traffic. Once a user's request\nhas been directed to a backendService, subsequent requests will be sent to the same backendService\nas determined by the BackendService's session affinity policy.\n\nThe value must be between 0 and 1000","description_kind":"plain","optional":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request prior to\nforwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response prior to sending the\nresponse back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header to add.","description_kind":"plain","optional":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","optional":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.","description_kind":"plain","optional":true}},"description":"Headers to add to a matching request prior to forwarding the request to the backendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header to add.","description_kind":"plain","optional":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","optional":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the header.\nIf true, headerValue is set for the header, discarding any values that were set for that header.","description_kind":"plain","optional":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService.\n\nheaderAction specified here take effect before headerAction in the enclosing\nHttpRouteRule, PathMatcher and UrlMap.","description_kind":"plain"},"max_items":1}},"description":"A list of weighted backend services to send traffic to when a route match occurs.\nThe weights determine the fraction of traffic that flows to their corresponding backend service.\nIf all traffic needs to go to a single backend service, there must be one weightedBackendService\nwith weight set to a non 0 number.\n\nOnce a backendService is identified and before forwarding the request to the backend service,\nadvanced routing actions like Url rewrites and header transformations are applied depending on\nadditional settings specified in this HttpRouteAction.","description_kind":"plain"}}},"description":"defaultRouteAction takes effect when none of the pathRules or routeRules match. The load balancer performs\nadvanced routing actions like URL rewrites, header transformations, etc. prior to forwarding the request\nto the selected backend. If defaultRouteAction specifies any weightedBackendServices, defaultService must not be set.\nConversely if defaultService is set, defaultRouteAction cannot contain any weightedBackendServices.\n\nOnly one of defaultRouteAction or defaultUrlRedirect must be set.","description_kind":"plain"},"max_items":1},"default_url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https. If set to\nfalse, the URL scheme of the redirected request will remain the same as that of the\nrequest. This must only be set for UrlMaps used in TargetHttpProxys. Setting this\ntrue for TargetHttpsProxy is not permitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one that was\nsupplied in the request. pathRedirect cannot be supplied together with\nprefixRedirect. Supply one alone or neither. If neither is supplied, the path of the\noriginal request will be used for the redirect. The value must be between 1 and 1024\ncharacters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.\nprefixRedirect cannot be supplied together with pathRedirect. Supply one alone or\nneither. If neither is supplied, the path of the original request will be used for\nthe redirect. The value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which
[2021-03-30T16:04:49.150] [DEBUG] default -  corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is removed prior\nto redirecting the request. If set to false, the query portion of the original URL is\nretained.\n This field is required to ensure an empty block is not set. The normal default value is false.","description_kind":"plain","required":true}},"description":"When none of the specified hostRules match, the request is redirected to a URL specified\nby defaultUrlRedirect. If defaultUrlRedirect is specified, defaultService or\ndefaultRouteAction must not be set.","description_kind":"plain"},"max_items":1},"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. HeaderAction specified here are applied after the\nmatching HttpRouteRule HeaderAction and before the HeaderAction in the UrlMap","description_kind":"plain"},"max_items":1},"path_rule":{"nesting_mode":"list","block":{"attributes":{"paths":{"type":["set","string"],"description":"The list of path patterns to match. Each must start with / and the only place a\n* is allowed is at the end following a /. The string fed to the path matcher\ndoes not include any text after the first ? or #, and those chars are not\nallowed here.","description_kind":"plain","required":true},"service":{"type":"string","description":"The backend service or backend bucket to use if any of the given paths match.","description_kind":"plain","optional":true}},"block_types":{"route_action":{"nesting_mode":"list","block":{"block_types":{"cors_policy":{"nesting_mode":"list","block":{"attributes":{"allow_credentials":{"type":"bool","description":"In response to a preflight request, setting this to true indicates that the\nactual request can include user credentials. This translates to the Access-\nControl-Allow-Credentials header. Defaults to false.","description_kind":"plain","optional":true},"allow_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Headers header.","description_kind":"plain","optional":true},"allow_methods":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Methods header.","description_kind":"plain","optional":true},"allow_origin_regexes":{"type":["list","string"],"description":"Specifies the regular expression patterns that match allowed origins. For\nregular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"allow_origins":{"type":["list","string"],"description":"Specifies the list of origins that will be allowed to do CORS requests. An\norigin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"If true, specifies the CORS policy is disabled.","description_kind":"plain","required":true},"expose_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Expose-Headers header.","description_kind":"plain","optional":true},"max_age":{"type":"number","description":"Specifies how long the results of a preflight request can be cached. This\ntranslates to the content for the Access-Control-Max-Age header.","description_kind":"plain","optional":true}},"description":"The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing","description_kind":"plain"},"max_items":1},"fault_injection_policy":{"nesting_mode":"list","block":{"block_types":{"abort":{"nesting_mode":"list","block":{"attributes":{"http_status":{"type":"number","description":"The HTTP status code used to abort the request. The value must be between 200\nand 599 inclusive.","description_kind":"plain","required":true},"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) which will be\naborted as part of fault injection. The value must be between 0.0 and 100.0\ninclusive.","description_kind":"plain","required":true}},"description":"The specification for how client requests are aborted as part of fault\ninjection.","description_kind":"plain"},"max_items":1},"delay":{"nesting_mode":"list","block":{"attributes":{"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) on which delay will\nbe introduced as part of fault injection. The value must be between 0.0 and\n100.0 inclusive.","description_kind":"plain","required":true}},"block_types":{"fixed_delay":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the value of the fixed delay interval.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"The specification for how client requests are delayed as part of fault\ninjection, before being sent to a backend service.","description_kind":"plain"},"max_items":1}},"description":"The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and retry_policy will be\nignored by clients that are configured with a fault_injection_policy.","description_kind":"plain"},"max_items":1},"request_mirror_policy":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The BackendService resource being mirrored to.","description_kind":"plain","required":true}},"description":"Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.","description_kind":"plain"},"max_items":1},"retry_policy":{"nesting_mode":"list","block":{"attributes":{"num_retries":{"type":"number","description":"Specifies the allowed number retries. This number must be \u003e 0.","description_kind":"plain","optional":true},"retry_conditions":{"type":["list","string"],"description":"Specifies one or more conditions when this retry rule applies. Valid values are:\n\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with\nany 5xx response code, or if the backend service does not respond at all,\nexample: disconnects, reset, read timeout, connection failure, and refused\nstreams.\n* gateway-error: Similar to 5xx, but only applies to response codes\n502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures\nconnecting to backend services, for example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\nCurrently the only retriable error supported is 409.\n* refused-stream: Loadbalancer will retry if the backend service resets the stream with a\nREFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response\nheader is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the\ngRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response\nheader is set to resource-exhausted\n* unavailable: Loadbalancer will retry if\nthe gRPC status code in the response header is set to unavailable","description_kind":"plain","optional":true}},"block_types":{"per_try_timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies a non-zero timeout per retry attempt.","description_kind":"plain"},"max_items":1}},"description":"Specifies the retry policy associated with this route.","description_kind":"plain"},"max_items":1},"timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.","description_kind":"plain"},"max_items":1},"url_rewrite":{"nesting_mode":"list","block":{"attributes":{"host_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected service, the request's host\nheader is replaced with contents of hostRewrite. The value must be between 1 and\n255 characters.","description_kind":"plain","optional":true},"path_prefix_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected backend service, the matching\nportion of the request's path is replaced by pathPrefixRewrite. The value must\nbe between 1 and 1024 characters.","description_kind":"plain","optional":true}},"description":"The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service","description_kind":"plain"},"max_items":1},"weighted_backend_services":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The default BackendService resource. Before\nforwarding the request to backendService, the loadbalancer applies any relevant\nheaderActions specified as part of this backendServiceWeight.","description_kind":"plain","required":true},"weight":{"type":"number","description":"Specifies the fraction of traffic sent to backendService, computed as weight /\n(sum of all weightedBackendService weights in routeAction) . The selection of a\nbackend service is determined only for new traffic. Once a user's request has\nbeen directed to a backendService, subsequent requests will be sent to the same\nbackendService as determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000","description_kind":"plain","required":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. headerAction specified here take effect before\nheaderAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.","description_kind":"plain"},"max_items":1}},"description":"A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.","description_kind":"plain"}}},"description":"In response to a matching path, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.","description_kind":"plain"},"max_items":1},"url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one\nthat was supplied in the request. The value must be between 1 and 255\ncharacters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https.\nIf set to false, the URL scheme of the redirected request will remain the\nsame as that of the request. This must only be set for UrlMaps used in\nTargetHttpProxys. Setting this true for TargetHttpsProxy is not\npermitted. The default is set to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one\nthat was supplied in the request. pathRedirect cannot be supplied\ntogether with prefixRedirect. Supply one alone or neither. If neither is\nsupplied, the path of the original request will be used for the redirect.\nThe value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the\nHttpRouteRuleMatch, retaining the remaining portion of the URL before\nredirecting the request. prefixRedirect cannot be supplied together with\npathRedirect. Supply one alone or neither. If neither is supplied, the\npath of the original request will be used for the redirect. The value\nmust be between 1 and 1024 characters.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method\nwill be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case,\nthe request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is\nremoved prior to redirecting the request. If set to false, the query\nportion of the original URL is retained.\n This field is required to ensure an empty block is not set. The normal default value is false.","description_kind":"plain","required":true}},"description":"When a path pattern is matched, the request is redirected to a URL specified\nby urlRedirect. If urlRedirect is specified, service or routeAction must not\nbe set.","description_kind":"plain"},"max_items":1}},"description":"The list of path rules. Use this list instead of routeRules when routing based\non simple path matching is all that's required. The order by which path rules\nare specified does not matter. Matches are always done on the longest-path-first\nbasis. For example: a pathRule with a path /a/b/c/* will match before /a/b/*\nirrespective of the order in which those paths appear in this list. Within a\ngiven pathMatcher, only one of pathRules or routeRules must be set.","description_kind":"plain"}},"route_rules":{"nesting_mode":"list","block":{"attributes":{"priority":{"type":"number","description":"For routeRules within a given pathMatcher, priority determines the order\nin which load balancer will interpret routeRules. RouteRules are evaluated\nin order of priority, from the lowest to highest number. The priority of\na rule decreases as its number increases (1, 2, 3, N+1). The first rule\nthat matches the request is applied.\n\nYou cannot configure two or more routeRules with the same priority.\nPriority for each rule must be set to a number between 0 and\n2147483647 inclusive.\n\nPriority numbers can have gaps, which enable you to add or remove rules\nin the future without affecting the rest of the rules. For example,\n1, 2, 3, 4, 5, 9, 12, 16 is a valid series of priority numbers to which\nyou could add rules numbered from 6 to 8, 10 to 11, and 13 to 15 in the\nfuture without any impact on existing rules.","description_kind":"plain","required":true},"service":{"type":"string","description":"The backend service resource to which traffic is\ndirected if this rule is matched. If routeAction is additionally specified,\nadvanced routing actions like URL Rewrites, etc. take effect prior to sending\nthe request to the backend. However, if service is specified, routeAction cannot\ncontain any weightedBackendService s. Conversely, if routeAction specifies any\nweightedBackendServices, service must not be specified. Only one of urlRedirect,\nservice or routeAction.weightedBackendService must be set.","description_kind":"plain","optional":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. The headerAction specified here are applied before\nthe matching pathMatchers[].headerAction and after pathMatchers[].routeRules[].r\nouteAction.weightedBackendService.backendServiceWeightAction[].headerAction","description_kind":"plain"},"max_items":1},"match_rules":{"nesting_mode":"list","block":{"attributes":{"full_path_match":{"type":"string","description":"For satisfying the matchRule condition, the path of the request must exactly\nmatch the value specified in fullPathMatch after removing any query parameters\nand anchor that may be part of the original URL. FullPathMatch must be between 1\nand 1024 characters. Only one of prefixMatch, fullPathMatch or regexMatch must\nbe specified.","description_kind":"plain","optional":true},"ignore_case":{"type":"bool","description":"Specifies that prefixMatch and fullPathMatch matches are case sensitive.\nDefaults to false.","description_kind":"plain","optional":true},"prefix_match":{"type":"string","description":"For satisfying the matchRule condition, the request's path must begin with the\nspecified prefixMatch. prefixMatch must begin with a /. The value must be\nbetween 1 and 1024 characters. Only one of prefixMatch, fullPathMatch or\nregexMatch must be specified.","description_kind":"plain","optional":true},"regex_match":{"type":"string","description":"For satisfying the matchRule condition, the path of the request must satisfy the\nregular expression specified in regexMatch after removing any query parameters\nand anchor supplied with the original URL. For regular expression grammar please\nsee en.cppreference.com/w/cpp/regex/ecmascript Only one of prefixMatch,\nfullPathMatch or regexMatch must be specified.","description_kind":"plain","optional":true}},"block_types":{"header_matches":{"nesting_mode":"list","block":{"attributes":{"exact_match":{"type":"string","description":"The value should exactly match contents of exactMatch. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.","description_kind":"plain","optional":true},"header_name":{"type":"string","description":"The name of the HTTP header to match. For matching against the HTTP request's\nauthority, use a headerMatch with the header name \":authority\". For matching a\nrequest's method, use the headerName \":method\".","description_kind":"plain","required":true},"invert_match":{"type":"bool","description":"If set to false, the headerMatch is considered a match if the match criteria\nabove are met. If set to true, the headerMatch is considered a match if the\nmatch criteria above are NOT met. Defaults to false.","description_kind":"plain","optional":true},"prefix_match":{"type":"string","description":"The value of the header must start with the contents of prefixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.","description_kind":"plain","optional":true},"present_match":{"type":"bool","description":"A header with the contents of headerName must exist. The match takes place\nwhether or not the request's header has a value or not. Only one of exactMatch,\nprefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch must be set.","description_kind":"plain","optional":true},"regex_match":{"type":"string","description":"The value of the header must match the regular expression specified in\nregexMatch. For regular expression grammar, please see:\nen.cppreference.com/w/cpp/regex/ecmascript For matching against a port\nspecified in the HTTP request, use a headerMatch with headerName set to PORT and\na regular expression that satisfies the RFC2616 Host header's port specifier.\nOnly one of exactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or\nrangeMatch must be set.","description_kind":"plain","optional":true},"suffix_match":{"type":"string","description":"The value of the header must end with the contents of suffixMatch. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.","description_kind":"plain","optional":true}},"block_types":{"range_match":{"nesting_mode":"list","block":{"attributes":{"range_end":{"type":"number","description":"The end of the range (exclusive).","description_kind":"plain","required":true},"range_start":{"type":"number","description":"The start of the range (inclusive).","description_kind":"plain","required":true}},"description":"The header value must be an integer and its value must be in the range specified\nin rangeMatch. If the header does not contain an integer, number or is empty,\nthe match fails. For example for a range [-5, 0] - -3 will match. - 0 will\nnot match. - 0.25 will not match. - -3someString will not match. Only one of\nexactMatch, prefixMatch, suffixMatch, regexMatch, presentMatch or rangeMatch\nmust be set.","description_kind":"plain"},"max_items":1}},"description":"Specifies a list of header match criteria, all of which must match corresponding\nheaders in the request.","description_kind":"plain"}},"metadata_filters":{"nesting_mode":"list","block":{"attributes":{"filter_match_criteria":{"type":"string","description":"Specifies how individual filterLabel matches within the list of filterLabels\ncontribute towards the overall metadataFilter match. Supported values are:\n - MATCH_ANY: At least one of the filterLabels must have a matching label in the\nprovided metadata.\n - MATCH_ALL: All filterLabels must have matching labels in\nthe provided metadata. Possible values: [\"MATCH_ALL\", \"MATCH_ANY\"]","description_kind":"plain","required":true}},"block_types":{"filter_labels":{"nesting_mode":"list","block":{"attributes":{"name":{"type":"string","description":"Name of metadata label. The name can have a maximum length of 1024 characters\nand must be at least 1 character long.","description_kind":"plain","required":true},"value":{"type":"string","description":"The value of the label must match the specified value. value can have a maximum\nlength of 1024 characters.","description_kind":"plain","required":true}},"description":"The list of label value pairs that must match labels in the provided metadata\nbased on filterMatchCriteria This list must not be empty and can have at the\nmost 64 entries.","description_kind":"plain"},"min_items":1,"max_items":64}},"description":"Opaque filter criteria used by Loadbalancer to restrict routing configuration to\na limited set xDS compliant clients. In their xDS requests to Loadbalancer, xDS\nclients present node metadata. If a match takes place, the relevant routing\nconfiguration is made available to those proxies. For each metadataFilter in\nthis list, if its filterMatchCriteria is set to MATCH_ANY, at least one of the\nfilterLabels must match the corresponding label provided in the metadata. If its\nfilterMatchCriteria is set to MATCH_ALL, then all of its filterLabels must match\nwith corresponding labels in the provided metadata. metadataFilters specified\nhere can be overrides those specified in ForwardingRule that refers to this\nUrlMap. metadataFilters only applies to Loadbalancers that have their\nloadBalancingScheme set to INTERNAL_SELF_MANAGED.","description_kind":"plain"}},"query_parameter_matches":{"nesting_mode":"list","block":{"attributes":{"exact_match":{"type":"string","description":"The queryParameterMatch matches if the value of the parameter exactly matches\nthe contents of exactMatch. Only one of presentMatch, exactMatch and regexMatch\nmust be set.","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the query parameter to match. The query parameter must exist in the\nrequest, in the absence of which the request match fails.","description_kind":"plain","required":true},"present_match":{"type":"bool","description":"Specifies that the queryParameterMatch matches if the request contains the query\nparameter, irrespective of whether the parameter has a value or not. Only one of\npresentMatch, exactMatch and regexMatch must be set.","description_kind":"plain","optional":true},"regex_match":{"type":"string","description":"The queryParameterMatch matches if the value of the parameter matches the\nregular expression specified by regexMatch. For the regular expression grammar,\nplease see en.cppreference.com/w/cpp/regex/ecmascript Only one of presentMatch,\nexactMatch and regexMatch must be set.","description_kind":"plain","optional":true}},"description":"Specifies a list of query parameter match criteria, all of which must match\ncorresponding query parameters in the request.","description_kind":"plain"}}},"description":"The rules for determining a match.","description_kind":"plain"}},"route_action":{"nesting_mode":"list","block":{"block_types":{"cors_policy":{"nesting_mode":"list","block":{"attributes":{"allow_credentials":{"type":"bool","description":"In response to a preflight request, setting this to true indicates that the\nactual request can include user credentials. This translates to the Access-\nControl-Allow-Credentials header. Defaults to false.","description_kind":"plain","optional":true},"allow_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Headers header.","description_kind":"plain","optional":true},"allow_methods":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Allow-Methods header.","description_kind":"plain","optional":true},"allow_origin_regexes":{"type":["list","string"],"description":"Specifies the regular expression patterns that match allowed origins. For\nregular expression grammar please see en.cppreference.com/w/cpp/regex/ecmascript\nAn origin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"allow_origins":{"type":["list","string"],"description":"Specifies the list of origins that will be allowed to do CORS requests. An\norigin is allowed if it matches either allow_origins or allow_origin_regex.","description_kind":"plain","optional":true},"disabled":{"type":"bool","description":"If true, specifies the CORS policy is disabled.\nwhich indicates that the CORS policy is in effect. Defaults to false.","description_kind":"plain","optional":true},"expose_headers":{"type":["list","string"],"description":"Specifies the content for the Access-Control-Expose-Headers header.","description_kind":"plain","optional":true},"max_age":{"type":"number","description":"Specifies how long the results of a preflight request can be cached. This\ntranslates to the content for the Access-Control-Max-Age header.","description_kind":"plain","optional":true}},"description":"The specification for allowing client side cross-origin requests. Please see W3C\nRecommendation for Cross Origin Resource Sharing","description_kind":"plain"},"max_items":1},"fault_injection_policy":{"nesting_mode":"list","block":{"block_types":{"abort":{"nesting_mode":"list","block":{"attributes":{"http_status":{"type":"number","description":"The HTTP status code used to abort the request. The value must be between 200\nand 599 inclusive.","description_kind":"plain","optional":true},"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) which will be\naborted as part of fault injection. The value must be between 0.0 and 100.0\ninclusive.","description_kind":"plain","optional":true}},"description":"The specification for how client requests are aborted as part of fault\ninjection.","description_kind":"plain"},"max_items":1},"delay":{"nesting_mode":"list","block":{"attributes":{"percentage":{"type":"number","description":"The percentage of traffic (connections/operations/requests) on which delay will\nbe introduced as part of fault injection. The value must be between 0.0 and\n100.0 inclusive.","description_kind":"plain","optional":true}},"block_types":{"fixed_delay":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the value of the fixed delay interval.","description_kind":"plain"},"max_items":1}},"description":"The specification for how client requests are delayed as part of fault\ninjection, before being sent to a backend service.","description_kind":"plain"},"max_items":1}},"description":"The specification for fault injection introduced into traffic to test the\nresiliency of clients to backend service failure. As part of fault injection,\nwhen clients send requests to a backend service, delays can be introduced by\nLoadbalancer on a percentage of requests before sending those request to the\nbackend service. Similarly requests from clients can be aborted by the\nLoadbalancer for a percentage of requests. timeout and retry_policy will be\nignored by clients that are configured with a fault_injection_policy.","description_kind":"plain"},"max_items":1},"request_mirror_policy":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The BackendService resource being mirrored to.","description_kind":"plain","required":true}},"description":"Specifies the policy on how requests intended for the route's backends are\nshadowed to a separate mirrored backend service. Loadbalancer does not wait for\nresponses from the shadow service. Prior to sending traffic to the shadow\nservice, the host / authority header is suffixed with -shadow.","description_kind":"plain"},"max_items":1},"retry_policy":{"nesting_mode":"list","block":{"attributes":{"num_retries":{"type":"number","description":"Specifies the allowed number retries. This number must be \u003e 0.","description_kind":"plain","required":true},"retry_conditions":{"type":["list","string"],"description":"Specfies one or more conditions when this retry rule applies. Valid values are:\n\n* 5xx: Loadbalancer will attempt a retry if the backend service responds with\n any 5xx response code, or if the backend service does not respond at all,\n example: disconnects, reset, read timeout, connection failure, and refused\n streams.\n* gateway-error: Similar to 5xx, but only applies to response codes\n 502, 503 or 504.\n* connect-failure: Loadbalancer will retry on failures\n connecting to backend services, for example due to connection timeouts.\n* retriable-4xx: Loadbalancer will retry for retriable 4xx response codes.\n Currently the only retriable error supported is 409.\n* refused-stream: Loadbalancer will retry if the backend service resets the stream with a\n REFUSED_STREAM error code. This reset type indicates that it is safe to retry.\n* cancelled: Loadbalancer will retry if the gRPC status code in the response\n header is set to cancelled\n* deadline-exceeded: Loadbalancer will retry if the\n gRPC status code in the response header is set to deadline-exceeded\n* resource-exhausted: Loadbalancer will retry if the gRPC status code in the response\n header is set to resource-exhausted\n* unavailable: Loadbalancer will retry if the gRPC status code in\n the response header is set to unavailable","description_kind":"plain","optional":true}},"block_types":{"per_try_timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies a non-zero timeout per retry attempt.\nIf not specified, will use the timeout set in HttpRouteAction. If timeout in HttpRouteAction\nis not set, will use the largest timeout among all backend services associated with the route.","description_kind":"plain"},"max_items":1}},"description":"Specifies the retry policy associated with this route.","description_kind":"plain"},"max_items":1},"timeout":{"nesting_mode":"list","block":{"attributes":{"nanos":{"type":"number","description":"Span of time that's a fraction of a second at nanosecond resolution. Durations\nless than one second are represented with a 0 'seconds' field and a positive\n'nanos' field. Must be from 0 to 999,999,999 inclusive.","description_kind":"plain","optional":true},"seconds":{"type":"string","description":"Span of time at a resolution of a second. Must be from 0 to 315,576,000,000\ninclusive.","description_kind":"plain","required":true}},"description":"Specifies the timeout for the selected route. Timeout is computed from the time\nthe request is has been fully processed (i.e. end-of-stream) up until the\nresponse has been completely processed. Timeout includes all retries. If not\nspecified, the default value is 15 seconds.","description_kind":"plain"},"max_items":1},"url_rewrite":{"nesting_mode":"list","block":{"attributes":{"host_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected service, the request's host\nheader is replaced with contents of hostRewrite. The value must be between 1 and\n255 characters.","description_kind":"plain","optional":true},"path_prefix_rewrite":{"type":"string","description":"Prior to forwarding the request to the selected backend service, the matching\nportion of the request's path is replaced by pathPrefixRewrite. The value must\nbe between 1 and 1024 characters.","description_kind":"plain","optional":true}},"description":"The spec to modify the URL of the request, prior to forwarding the request to\nthe matched service","description_kind":"plain"},"max_items":1},"weighted_backend_services":{"nesting_mode":"list","block":{"attributes":{"backend_service":{"type":"string","description":"The default BackendService resource. Before\nforwarding the request to backendService, the loadbalancer applies any relevant\nheaderActions specified as part of this backendServiceWeight.","description_kind":"plain","required":true},"weight":{"type":"number","description":"Specifies the fraction of traffic sent to backendService, computed as weight /\n(sum of all weightedBackendService weights in routeAction) . The selection of a\nbackend service is determined only for new traffic. Once a user's request has\nbeen directed to a backendService, subsequent requests will be sent to the same\nbackendService as determined by the BackendService's session affinity policy.\nThe value must be between 0 and 1000","description_kind":"plain","required":true}},"block_types":{"header_action":{"nesting_mode":"list","block":{"attributes":{"request_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the request\nprior to forwarding the request to the backendService.","description_kind":"plain","optional":true},"response_headers_to_remove":{"type":["list","string"],"description":"A list of header names for headers that need to be removed from the response\nprior to sending the response back to the client.","description_kind":"plain","optional":true}},"block_types":{"request_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add to a matching request prior to forwarding the request to the\nbackendService.","description_kind":"plain"}},"response_headers_to_add":{"nesting_mode":"list","block":{"attributes":{"header_name":{"type":"string","description":"The name of the header.","description_kind":"plain","required":true},"header_value":{"type":"string","description":"The value of the header to add.","description_kind":"plain","required":true},"replace":{"type":"bool","description":"If false, headerValue is appended to any values that already exist for the\nheader. If true, headerValue is set for the header, discarding any values that\nwere set for that header.","description_kind":"plain","required":true}},"description":"Headers to add the response prior to sending the response back to the client.","description_kind":"plain"}}},"description":"Specifies changes to request and response headers that need to take effect for\nthe selected backendService. headerAction specified here take effect before\nheaderAction in the enclosing HttpRouteRule, PathMatcher and UrlMap.","description_kind":"plain"},"max_items":1}},"description":"A list of weighted backend services to send traffic to when a route match\noccurs. The weights determine the fraction of traffic that flows to their\ncorresponding backend service. If all traffic needs to go to a single backend\nservice, there must be one weightedBackendService with weight set to a non 0\nnumber. Once a backendService is identified and before forwarding the request to\nthe backend service, advanced routing actions like Url rewrites and header\ntransformations are applied depending on additional settings specified in this\nHttpRouteAction.","description_kind":"plain"}}},"description":"In response to a matching matchRule, the load balancer performs advanced routing\nactions like URL rewrites, header transformations, etc. prior to forwarding the\nrequest to the selected backend. If routeAction specifies any\nweightedBackendServices, service must not be set. Conversely if service is set,\nrouteAction cannot contain any weightedBackendServices. Only one of routeAction\nor urlRedirect must be set.","description_kind":"plain"},"max_items":1},"url_redirect":{"nesting_mode":"list","block":{"attributes":{"host_redirect":{"type":"string","description":"The host that will be used in the redirect response instead of the one that was\nsupplied in the request. The value must be between 1 and 255 characters.","description_kind":"plain","optional":true},"https_redirect":{"type":"bool","description":"If set to true, the URL scheme in the redirected request is set to https. If set\nto false, the URL scheme of the redirected request will remain the same as that\nof the request. This must only be set for UrlMaps used in TargetHttpProxys.\nSetting this true for TargetHttpsProxy is not permitted. Defaults to false.","description_kind":"plain","optional":true},"path_redirect":{"type":"string","description":"The path that will be used in the redirect response instead of the one that was\nsupplied in the request. Only one of pathRedirect or prefixRedirect must be\nspecified. The value must be between 1 and 1024 characters.","description_kind":"plain","optional":true},"prefix_redirect":{"type":"string","description":"The prefix that replaces the prefixMatch specified in the HttpRouteRuleMatch,\nretaining the remaining portion of the URL before redirecting the request.","description_kind":"plain","optional":true},"redirect_response_code":{"type":"string","description":"The HTTP Status code to use for this RedirectAction. Supported values are:\n\n* MOVED_PERMANENTLY_DEFAULT, which is the default value and corresponds to 301.\n\n* FOUND, which corresponds to 302.\n\n* SEE_OTHER which corresponds to 303.\n\n* TEMPORARY_REDIRECT, which corresponds to 307. In this case, the request method will be retained.\n\n* PERMANENT_REDIRECT, which corresponds to 308. In this case, the request method will be retained. Possible values: [\"FOUND\", \"MOVED_PERMANENTLY_DEFAULT\", \"PERMANENT_REDIRECT\", \"SEE_OTHER\", \"TEMPORARY_REDIRECT\"]","description_kind":"plain","optional":true},"strip_query":{"type":"bool","description":"If set to true, any accompanying query portion of the original URL is removed\nprior to redirecting the request. If set to false, the query portion of the\noriginal URL is retained. Defaults to false.","description_kind":"plain","optional":true}},"description":"When this rule is matched, the request is redirected to a URL specified by\nurlRedirect. If urlRedirect is specified, service or routeAction must not be\nset.","description_kind":"plain"},"max_items":1}},"description":"The list of ordered HTTP route rules. Use this list instead of pathRules when\nadvanced route matching and routing actions are desired. The order of specifying\nrouteRules matters: the first rule that matches will cause its specified routing\naction to take effect. Within a given pathMatcher, only one of pathRules or\nrouteRules must be set. routeRules are not supported in UrlMaps intended for\nExternal load balancers.","description_kind":"plain"}}},"description":"The list of named PathMatchers to use against the URL.","description_kind":"plain"}},"test":{"nesting_mode":"list","block":{"attributes":{"description":{"type":"string","description":"Description of this test case.","description_kind":"plain","optional":true},"host":{"type":"string","description":"Host portion of the URL.","description_kind":"plain","required":true},"path":{"type":"string","description":"Path portion of the URL.","description_kind":"plain","required":true},"service":{"type":"string","description":"The backend service or backend bucket link that should be matched by this test.","description_kind":"plain","required":true}},"description":"The list of expected URL mapping tests. Request to update this UrlMap will\nsucceed only if all of the test cases pass. You can specify a maximum of 100\ntests per UrlMap.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_vpn_gateway":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"gateway_id":{"type":"number","description":"The unique identifier for the resource.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. Provided by the client when the resource is\ncreated. The name must be 1-63 characters long, and comply with\nRFC1035. Specifically, the name must be 1-63 characters long and\nmatch the regular expression '[a-z]([-a-z0-9]*[a-z0-9])?' which means\nthe first character must be a lowercase letter, and all following\ncharacters must be a dash, lowercase letter, or digit, except the last\ncharacter, which cannot be a dash.","description_kind":"plain","required":true},"network":{"type":"string","description":"The network this VPN gateway is accepting traffic for.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The region this gateway should sit in.","description_kind":"plain","optional":true,"computed":true},"self_link":{"type":"string","description_kind":"plain","computed":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_compute_vpn_tunnel":{"version":0,"block":{"attributes":{"creation_timestamp":{"type":"string","description":"Creation timestamp in RFC3339 text format.","description_kind":"plain","computed":true},"description":{"type":"string","description":"An optional description of this resource.","description_kind":"plain","optional":true},"detailed_status":{"type":"string","description":"Detailed status message for the VPN tunnel.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"ike_version":{"type":"number","description":"IKE protocol version to use when establishing the VPN tunnel with\npeer VPN gateway.\nAcceptable IKE versions are 1 or 2. Default version is 2.","description_kind":"plain","optional":true},"local_traffic_selector":{"type":["set","string"],"description":"Local traffic selector to use when establishing the VPN tunnel with\npeer VPN gateway. The value should be a CIDR formatted string,\nfor example '192.168.0.0/16'. The ranges should be disjoint.\nOnly IPv4 is supported.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"Name of the resource. The name must be 1-63 characters long, and\ncomply with RFC1035. Specifically, the name must be 1-63\ncharacters long and match the regular expression\n'[a-z]([-a-z0-9]*[a-z0-9])?' which means the first character\nmust be a lowercase letter, and all following characters must\nbe a dash, lowercase letter, or digit,\nexcept the last character, which cannot be a dash.","description_kind":"plain","required":true},"peer_external_gateway":{"type":"string","description":"URL of the peer side external VPN gateway to which this VPN tunnel is connected.","description_kind":"plain","optional":true},"peer_external_gateway_interface":{"type":"number","description":"The interface ID of the external VPN gateway to which this VPN tunnel is connected.","description_kind":"plain","optional":true},"peer_gcp_gateway":{"type":"string","description":"URL of the peer side HA GCP VPN gateway to which this VPN tunnel is connected.\nIf provided, the VPN tunnel will automatically use the same vpn_gateway_interface\nID in the peer GCP VPN gateway.\nThis field must reference a 'google_compute_ha_vpn_gateway' resource.","description_kind":"plain","optional":true},"peer_ip":{"type":"string","description":"IP address of the peer VPN gateway. Only IPv4 is supported.","description_kind":"plain","optional":true,"computed":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"region":{"type":"string","description":"The region where the tunnel is located. If unset, is set to the region of 'target_vpn_gateway'.","description_kind":"plain","optional":true,"computed":true},"remote_traffic_selector":{"type":["set","string"],"description":"Remote traffic selector to use when establishing the VPN tunnel with\npeer VPN gateway. The value should be a CIDR formatted string,\nfor example '192.168.0.0/16'. The ranges should be disjoint.\nOnly IPv4 is supported.","description_kind":"plain","optional":true,"computed":true},"router":{"type":"string","description":"URL of router resource to be used for dynamic routing.","description_kind":"plain","optional":true},"self_link":{"type":"string","description_kind":"plain","computed":true},"shared_secret":{"type":"string","description":"Shared secret used to set the secure session between the Cloud VPN\ngateway and the peer VPN gateway.","description_kind":"plain","required":true,"sensitive":true},"shared_secret_hash":{"type":"string","description":"Hash of the shared secret.","description_kind":"plain","computed":true},"target_vpn_gateway":{"type":"string","description":"URL of the Target VPN gateway with which this VPN tunnel is\nassociated.","description_kind":"plain","optional":true},"tunnel_id":{"type":"string","description":"The unique identifier for the resource. This identifier is defined by the server.","description_kind":"plain","computed":true},"vpn_gateway":{"type":"string","description":"URL of the VPN gateway with which this VPN tunnel is associated.\nThis must be used if a High Availability VPN gateway resource is created.\nThis field must reference a 'google_compute_ha_vpn_gateway' resource.","description_kind":"plain","optional":true},"vpn_gateway_interface":{"type":"number","description":"The interface ID of the VPN gateway with which this VPN tunnel is associated.","description_kind":"plain","optional":true}},"block_types":{"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_container_analysis_note":{"version":0,"block":{"attributes":{"create_time":{"type":"string","description":"The time this note was created.","description_kind":"plain","computed":true},"expiration_time":{"type":"string","description":"Time of expiration for this note. Leave empty if note does not expire.","description_kind":"plain","optional":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kind":{"type":"string","description":"The type of analysis this note describes","description_kind":"plain","computed":true},"long_description":{"type":"string","description":"A detailed description of the note","description_kind":"plain","optional":true},"name":{"type":"string","description":"The name of the note.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"related_note_names":{"type":["set","string"],"description":"Names of other notes related to this note.","description_kind":"plain","optional":true},"short_description":{"type":"string","description":"A one sentence description of the note.","description_kind":"plain","optional":true},"update_time":{"type":"string","description":"The time this note was last updated.","description_kind":"plain","computed":true}},"block_types":{"attestation_authority":{"nesting_mode":"list","block":{"block_types":{"hint":{"nesting_mode":"list","block":{"attributes":{"human_readable_name":{"type":"string","description":"The human readable name of this Attestation Authority, for\nexample \"qa\".","description_kind":"plain","required":true}},"description":"This submessage provides human-readable hints about the purpose of\nthe AttestationAuthority. Because the name of a Note acts as its\nresource reference, it is important to disambiguate the canonical\nname of the Note (which might be a UUID for security purposes)\nfrom \"readable\" names more suitable for debug output. Note that\nthese hints should NOT be used to look up AttestationAuthorities\nin security sensitive contexts, such as when looking up\nAttestations to verify.","description_kind":"plain"},"min_items":1,"max_items":1}},"description":"Note kind that represents a logical attestation \"role\" or \"authority\".\nFor example, an organization might have one AttestationAuthority for\n\"QA\" and one for \"build\". This Note is intended to act strictly as a\ngrouping mechanism for the attached Occurrences (Attestations). This\ngrouping mechanism also provides a security boundary, since IAM ACLs\ngate the ability for a principle to attach an Occurrence to a given\nNote. It also provides a single point of lookup to find all attached\nAttestation Occurrences, even if they don't all live in the same\nproject.","description_kind":"plain"},"min_items":1,"max_items":1},"related_url":{"nesting_mode":"set","block":{"attributes":{"label":{"type":"string","description":"Label to describe usage of the URL","description_kind":"plain","optional":true},"url":{"type":"string","description":"Specific URL associated with the resource.","description_kind":"plain","required":true}},"description":"URLs associated with this note and related metadata.","description_kind":"plain"}},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_container_analysis_occurrence":{"version":0,"block":{"attributes":{"create_time":{"type":"string","description":"The time when the repository was created.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"kind":{"type":"string","description":"The note kind which explicitly denotes which of the occurrence\ndetails are specified. This field can be used as a filter in list\nrequests.","description_kind":"plain","computed":true},"name":{"type":"string","description":"The name of the occurrence.","description_kind":"plain","computed":true},"note_name":{"type":"string","description":"The analysis note associated with this occurrence, in the form of\nprojects/[PROJECT]/notes/[NOTE_ID]. This field can be used as a\nfilter in list requests.","description_kind":"plain","required":true},"project":{"type":"string","description_kind":"plain","optional":true,"computed":true},"remediation":{"type":"string","description":"A description of actions that can be taken to remedy the note.","description_kind":"plain","optional":true},"resource_uri":{"type":"string","description":"Required. Immutable. A URI that represents the resource for which\nthe occurrence applies. For example,\nhttps://gcr.io/project/image@sha256:123abc for a Docker image.","description_kind":"plain","required":true},"update_time":{"type":"string","description":"The time when the repository was last updated.","description_kind":"plain","computed":true}},"block_types":{"attestation":{"nesting_mode":"list","block":{"attributes":{"serialized_payload":{"type":"string","description":"The serialized payload that is verified by one or\nmore signatures. A base64-encoded string.","description_kind":"plain","required":true}},"block_types":{"signatures":{"nesting_mode":"set","block":{"attributes":{"public_key_id":{"type":"string","description":"The identifier for the public key that verifies this\nsignature. MUST be an RFC3986 conformant\nURI. * When possible, the key id should be an\nimmutable reference, such as a cryptographic digest.\nExamples of valid values:\n\n* OpenPGP V4 public key fingerprint. See https://www.iana.org/assignments/uri-schemes/prov/openpgp4fpr\n for more details on this scheme.\n * 'openpgp4fpr:74FAF3B861BDA0870C7B6DEF607E48D2A663AEEA'\n* RFC6920 digest-named SubjectPublicKeyInfo (digest of the DER serialization):\n * \"ni:///sha-256;cD9o9Cq6LG3jD0iKXqEi_vdjJGecm_iXkbqVoScViaU\"","description_kind":"plain","required":true},"signature":{"type":"string","description":"The content of the signature, an opaque bytestring.\nThe payload that this signature verifies MUST be\nunambiguously provided with the Signature during\nverification. A wrapper message might provide the\npayload explicitly. Alternatively, a message might\nhave a canonical serialization that can always be\nunambiguously computed to derive the payload.","description_kind":"plain","optional":true}},"description":"One or more signatures over serializedPayload.\nVerifier implementations should consider this attestation\nmessage verified if at least one signature verifies\nserializedPayload. See Signature in common.proto for more\ndetails on signature structure and verification.","description_kind":"plain"},"min_items":1}},"description":"Occurrence that represents a single \"attestation\". The authenticity\nof an attestation can be verified using the attached signature.\nIf the verifier trusts the public key of the signer, then verifying\nthe signature is sufficient to establish trust. In this circumstance,\nthe authority to which this attestation is attached is primarily\nuseful for lookup (how to find this attestation if you already\nknow the authority and artifact to be verified) and intent (for\nwhich authority this attestation was intended to sign.","description_kind":"plain"},"min_items":1,"max_items":1},"timeouts":{"nesting_mode":"single","block":{"attributes":{"create":{"type":"string","description_kind":"plain","optional":true},"delete":{"type":"string","description_kind":"plain","optional":true},"update":{"type":"string","description_kind":"plain","optional":true}},"description_kind":"plain"}}},"description_kind":"plain"}},"google_container_cluster":{"version":1,"block":{"attributes":{"cluster_ipv4_cidr":{"type":"string","description":"The IP address range of the Kubernetes pods in this cluster in CIDR notation (e.g. 10.96.0.0/14)
[2021-03-30T16:04:49.150] [DEBUG] default - . Leave blank to have one automatically chosen or specify a /14 block in 10.0.0.0/8. This field will only work for routes-based clusters, where ip_allocation_policy is not defined.","description_kind":"plain","optional":true,"computed":true},"datapath_provider":{"type":"string","description":"The desired datapath provider for this cluster. By default, uses the IPTables-based kube-proxy implementation.","description_kind":"plain","optional":true,"computed":true},"default_max_pods_per_node":{"type":"number","description":"The default maximum number of pods per node in this cluster. This doesn't work on \"routes-based\" clusters, clusters that don't have IP Aliasing enabled.","description_kind":"plain","optional":true,"computed":true},"description":{"type":"string","description":" Description of the cluster.","description_kind":"plain","optional":true},"enable_binary_authorization":{"type":"bool","description":"Enable Binary Authorization for this cluster. If enabled, all container images will be validated by Google Binary Authorization.","description_kind":"plain","optional":true},"enable_intranode_visibility":{"type":"bool","description":"Whether Intra-node visibility is enabled for this cluster. This makes same node pod to pod traffic visible for VPC network.","description_kind":"plain","optional":true},"enable_kubernetes_alpha":{"type":"bool","description":"Whether to enable Kubernetes Alpha features for this cluster. Note that when this option is enabled, the cluster cannot be upgraded and will be automatically deleted after 30 days.","description_kind":"plain","optional":true},"enable_legacy_abac":{"type":"bool","description":"Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM. Defaults to false.","description_kind":"plain","optional":true},"enable_shielded_nodes":{"type":"bool","description":"Enable Shielded Nodes features on all nodes in this cluster. Defaults to false.","description_kind":"plain","optional":true},"enable_tpu":{"type":"bool","description":"Whether to enable Cloud TPU resources in this cluster.","description_kind":"plain","optional":true},"endpoint":{"type":"string","description":"The IP address of this cluster's Kubernetes master.","description_kind":"plain","computed":true},"id":{"type":"string","description_kind":"plain","optional":true,"computed":true},"initial_node_count":{"type":"number","description":"The number of nodes to create in this cluster's default node pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Must be set if node_pool is not set. If you're using google_container_node_pool objects with no default node pool, you'll need to set this to a value of at least 1, alongside setting remove_default_node_pool to true.","description_kind":"plain","optional":true},"instance_group_urls":{"type":["list","string"],"description":"List of instance group URLs which have been assigned to the cluster.","description_kind":"plain","computed":true},"label_fingerprint":{"type":"string","description":"The fingerprint of the set of labels for this cluster.","description_kind":"plain","computed":true},"location":{"type":"string","description":"The location (region or zone) in which the cluster master will be created, as well as the default node location. If you specify a zone (such as us-central1-a), the cluster will be a zonal cluster with a single cluster master. If you specify a region (such as us-west1), the cluster will be a regional cluster with multiple masters spread across zones in the region, and with default node locations in those zones as well.","description_kind":"plain","optional":true,"computed":true},"logging_service":{"type":"string","description":"The logging service that the cluster should write logs to. Available options include logging.googleapis.com(Legacy Stackdriver), logging.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Logging), and none. Defaults to logging.googleapis.com/kubernetes.","description_kind":"plain","optional":true,"computed":true},"master_version":{"type":"string","description":"The current version of the master in the cluster. This may be different than the min_master_version set in the config if the master has been updated by GKE.","description_kind":"plain","computed":true},"min_master_version":{"type":"string","description":"The minimum version of the master. GKE will auto-update the master to new versions, so this does not guarantee the current master version--use the read-only master_version field to obtain that. If unset, the cluster's version will be set by GKE to the version of the most recent official release (which is not necessarily the latest version).","description_kind":"plain","optional":true},"monitoring_service":{"type":"string","description":"The monitoring service that the cluster should write metrics to. Automatically send metrics from pods in the cluster to the Google Cloud Monitoring API. VM metrics will be collected by Google Compute Engine regardless of this setting Available options include monitoring.googleapis.com(Legacy Stackdriver), monitoring.googleapis.com/kubernetes(Stackdriver Kubernetes Engine Monitoring), and none. Defaults to monitoring.googleapis.com/kubernetes.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the cluster, unique within the project and location.","description_kind":"plain","required":true},"network":{"type":"string","description":"The name or self_link of the Google Compute Engine network to which the cluster is connected. For Shared VPC, set this to the self link of the shared network.","description_kind":"plain","optional":true},"node_locations":{"type":["set","string"],"description":"The list of zones in which the cluster's nodes are located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. If this is specified for a zonal cluster, omit the cluster's zone.","description_kind":"plain","optional":true,"computed":true},"node_version":{"type":"string","description":"The Kubernetes version on the nodes. Must either be unset or set to the same value as min_master_version on create. Defaults to the default version set by GKE which is not necessarily the latest version. This only affects nodes in the default node pool. While a fuzzy version can be specified, it's recommended that you specify explicit versions as Terraform will see spurious diffs when fuzzy versions are used. See the google_container_engine_versions data source's version_prefix field to approximate fuzzy versions in a Terraform-compatible way. To update nodes in other node pools, use the version attribute on the node pool.","description_kind":"plain","optional":true,"computed":true},"operation":{"type":"string","description_kind":"plain","computed":true},"project":{"type":"string","description":"The ID of the project in which the resource belongs. If it is not provided, the provider project is used.","description_kind":"plain","optional":true,"computed":true},"remove_default_node_pool":{"type":"bool","description":"If true, deletes the default node pool upon cluster creation. If you're using google_container_node_pool resources with no default node pool, this should be set to true, alongside setting initial_node_count to at least 1.","description_kind":"plain","optional":true},"resource_labels":{"type":["map","string"],"description":"The GCE resource labels (a map of key/value pairs) to be applied to the cluster.","description_kind":"plain","optional":true},"self_link":{"type":"string","description":"Server-defined URL for the resource.","description_kind":"plain","computed":true},"services_ipv4_cidr":{"type":"string","description":"The IP address range of the Kubernetes services in this cluster, in CIDR notation (e.g. 1.2.3.4/29). Service addresses are typically put in the last /16 from the container CIDR.","description_kind":"plain","computed":true},"subnetwork":{"type":"string","description":"The name or self_link of the Google Compute Engine subnetwork in which the cluster's instances are launched.","description_kind":"plain","optional":true,"computed":true},"tpu_ipv4_cidr_block":{"type":"string","description":"The IP address range of the Cloud TPUs in this cluster, in CIDR notation (e.g. 1.2.3.4/29).","description_kind":"plain","computed":true}},"block_types":{"addons_config":{"nesting_mode":"list","block":{"block_types":{"cloudrun_config":{"nesting_mode":"list","block":{"attributes":{"disabled":{"type":"bool","description_kind":"plain","required":true},"load_balancer_type":{"type":"string","description_kind":"plain","optional":true}},"description":"The status of the CloudRun addon. It is disabled by default. Set disabled = false to enable.","description_kind":"plain"},"max_items":1},"horizontal_pod_autoscaling":{"nesting_mode":"list","block":{"attributes":{"disabled":{"type":"bool","description_kind":"plain","required":true}},"description":"The status of the Horizontal Pod Autoscaling addon, which increases or decreases the number of replica pods a replication controller has based on the resource usage of the existing pods. It ensures that a Heapster pod is running in the cluster, which is also used by the Cloud Monitoring service. It is enabled by default; set disabled = true to disable.","description_kind":"plain"},"max_items":1},"http_load_balancing":{"nesting_mode":"list","block":{"attributes":{"disabled":{"type":"bool","description_kind":"plain","required":true}},"description":"The status of the HTTP (L7) load balancing controller addon, which makes it easy to set up HTTP load balancers for services in a cluster. It is enabled by default; set disabled = true to disable.","description_kind":"plain"},"max_items":1},"network_policy_config":{"nesting_mode":"list","block":{"attributes":{"disabled":{"type":"bool","description_kind":"plain","required":true}},"description":"Whether we should enable the network policy addon for the master. This must be enabled in order to enable network policy for the nodes. To enable this, you must also define a network_policy block, otherwise nothing will happen. It can only be disabled if the nodes already do not have network policies enabled. Defaults to disabled; set disabled = false to enable.","description_kind":"plain"},"max_items":1}},"description":"The configuration for addons supported by GKE.","description_kind":"plain"},"max_items":1},"authenticator_groups_config":{"nesting_mode":"list","block":{"attributes":{"security_group":{"type":"string","description":"The name of the RBAC security group for use with Google security groups in Kubernetes RBAC. Group name must be in format gke-security-groups@yourdomain.com.","description_kind":"plain","required":true}},"description":"Configuration for the Google Groups for GKE feature.","description_kind":"plain"},"max_items":1},"cluster_autoscaling":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether node auto-provisioning is enabled. Resource limits for cpu and memory must be defined to enable node auto-provisioning.","description_kind":"plain","required":true}},"block_types":{"auto_provisioning_defaults":{"nesting_mode":"list","block":{"attributes":{"oauth_scopes":{"type":["list","string"],"description":"Scopes that are used by NAP when creating node pools.","description_kind":"plain","optional":true,"computed":true},"service_account":{"type":"string","description":"The Google Cloud Platform Service Account to be used by the node VMs.","description_kind":"plain","optional":true}},"description":"Contains defaults for a node pool created by NAP.","description_kind":"plain"},"max_items":1},"resource_limits":{"nesting_mode":"list","block":{"attributes":{"maximum":{"type":"number","description":"Maximum amount of the resource in the cluster.","description_kind":"plain","optional":true},"minimum":{"type":"number","description":"Minimum amount of the resource in the cluster.","description_kind":"plain","optional":true},"resource_type":{"type":"string","description":"The type of the resource. For example, cpu and memory. See the guide to using Node Auto-Provisioning for a list of types.","description_kind":"plain","required":true}},"description":"Global constraints for machine resources in the cluster. Configuring the cpu and memory types is required if node auto-provisioning is enabled. These limits will apply to node pool autoscaling in addition to node auto-provisioning.","description_kind":"plain"}}},"description":"Per-cluster configuration of Node Auto-Provisioning with Cluster Autoscaler to automatically adjust the size of the cluster and create/delete node pools based on the current needs of the cluster's workload. See the guide to using Node Auto-Provisioning for more details.","description_kind":"plain"},"max_items":1},"database_encryption":{"nesting_mode":"list","block":{"attributes":{"key_name":{"type":"string","description":"The key to use to encrypt/decrypt secrets.","description_kind":"plain","optional":true},"state":{"type":"string","description":"ENCRYPTED or DECRYPTED.","description_kind":"plain","required":true}},"description":"Application-layer Secrets Encryption settings. The object format is {state = string, key_name = string}. Valid values of state are: \"ENCRYPTED\"; \"DECRYPTED\". key_name is the name of a CloudKMS key.","description_kind":"plain"},"max_items":1},"default_snat_status":{"nesting_mode":"list","block":{"attributes":{"disabled":{"type":"bool","description":"When disabled is set to false, default IP masquerade rules will be applied to the nodes to prevent sNAT on cluster internal traffic.","description_kind":"plain","required":true}},"description":"Whether the cluster disables default in-node sNAT rules. In-node sNAT rules will be disabled when defaultSnatStatus is disabled.","description_kind":"plain"},"max_items":1},"ip_allocation_policy":{"nesting_mode":"list","block":{"attributes":{"cluster_ipv4_cidr_block":{"type":"string","description":"The IP address range for the cluster pod IPs. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.","description_kind":"plain","optional":true,"computed":true},"cluster_secondary_range_name":{"type":"string","description":"The name of the existing secondary range in the cluster's subnetwork to use for pod IP addresses. Alternatively, cluster_ipv4_cidr_block can be used to automatically create a GKE-managed one.","description_kind":"plain","optional":true,"computed":true},"services_ipv4_cidr_block":{"type":"string","description":"The IP address range of the services IPs in this cluster. Set to blank to have a range chosen with the default size. Set to /netmask (e.g. /14) to have a range chosen with a specific netmask. Set to a CIDR notation (e.g. 10.96.0.0/14) from the RFC-1918 private networks (e.g. 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) to pick a specific range to use.","description_kind":"plain","optional":true,"computed":true},"services_secondary_range_name":{"type":"string","description":"The name of the existing secondary range in the cluster's subnetwork to use for service ClusterIPs. Alternatively, services_ipv4_cidr_block can be used to automatically create a GKE-managed one.","description_kind":"plain","optional":true,"computed":true}},"description":"Configuration of cluster IP allocation for VPC-native clusters. Adding this block enables IP aliasing, making the cluster VPC-native instead of routes-based.","description_kind":"plain"},"max_items":1},"maintenance_policy":{"nesting_mode":"list","block":{"block_types":{"daily_maintenance_window":{"nesting_mode":"list","block":{"attributes":{"duration":{"type":"string","description_kind":"plain","computed":true},"start_time":{"type":"string","description_kind":"plain","required":true}},"description":"Time window specified for daily maintenance operations. Specify start_time in RFC3339 format \"HH:MM”, where HH : [00-23] and MM : [00-59] GMT.","description_kind":"plain"},"max_items":1},"maintenance_exclusion":{"nesting_mode":"set","block":{"attributes":{"end_time":{"type":"string","description_kind":"plain","required":true},"exclusion_name":{"type":"string","description_kind":"plain","required":true},"start_time":{"type":"string","description_kind":"plain","required":true}},"description":"Exceptions to maintenance window. Non-emergency maintenance should not occur in these windows.","description_kind":"plain"},"max_items":3},"recurring_window":{"nesting_mode":"list","block":{"attributes":{"end_time":{"type":"string","description_kind":"plain","required":true},"recurrence":{"type":"string","description_kind":"plain","required":true},"start_time":{"type":"string","description_kind":"plain","required":true}},"description":"Time window for recurring maintenance operations.","description_kind":"plain"},"max_items":1}},"description":"The maintenance policy to use for the cluster.","description_kind":"plain"},"max_items":1},"master_auth":{"nesting_mode":"list","block":{"attributes":{"client_certificate":{"type":"string","description":"Base64 encoded public certificate used by clients to authenticate to the cluster endpoint.","description_kind":"plain","computed":true},"client_key":{"type":"string","description":"Base64 encoded private key used by clients to authenticate to the cluster endpoint.","description_kind":"plain","computed":true,"sensitive":true},"cluster_ca_certificate":{"type":"string","description":"Base64 encoded public certificate that is the root of trust for the cluster.","description_kind":"plain","computed":true},"password":{"type":"string","description":"The password to use for HTTP basic authentication when accessing the Kubernetes master endpoint.","description_kind":"plain","optional":true,"sensitive":true},"username":{"type":"string","description":"The username to use for HTTP basic authentication when accessing the Kubernetes master endpoint. If not present basic auth will be disabled.","description_kind":"plain","optional":true}},"block_types":{"client_certificate_config":{"nesting_mode":"list","block":{"attributes":{"issue_client_certificate":{"type":"bool","description":"Whether client certificate authorization is enabled for this cluster.","description_kind":"plain","required":true}},"description":"Whether client certificate authorization is enabled for this cluster.","description_kind":"plain"},"max_items":1}},"description":"The authentication information for accessing the Kubernetes master. Some values in this block are only returned by the API if your service account has permission to get credentials for your GKE cluster. If you see an unexpected diff removing a username/password or unsetting your client cert, ensure you have the container.clusters.getCredentials permission.","description_kind":"plain"},"max_items":1},"master_authorized_networks_config":{"nesting_mode":"list","block":{"block_types":{"cidr_blocks":{"nesting_mode":"set","block":{"attributes":{"cidr_block":{"type":"string","description":"External network that can access Kubernetes master through HTTPS. Must be specified in CIDR notation.","description_kind":"plain","required":true},"display_name":{"type":"string","description":"Field for users to identify CIDR blocks.","description_kind":"plain","optional":true}},"description":"External networks that can access the Kubernetes cluster master through HTTPS.","description_kind":"plain"}}},"description":"The desired configuration options for master authorized networks. Omit the nested cidr_blocks attribute to disallow external access (except the cluster node IPs, which GKE automatically whitelists).","description_kind":"plain"},"max_items":1},"network_policy":{"nesting_mode":"list","block":{"attributes":{"enabled":{"type":"bool","description":"Whether network policy is enabled on the cluster.","description_kind":"plain","required":true},"provider":{"type":"string","description":"The selected network policy provider. Defaults to PROVIDER_UNSPECIFIED.","description_kind":"plain","optional":true}},"description":"Configuration options for the NetworkPolicy feature.","description_kind":"plain"},"max_items":1},"node_config":{"nesting_mode":"list","block":{"attributes":{"disk_size_gb":{"type":"number","description":"Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.","description_kind":"plain","optional":true,"computed":true},"disk_type":{"type":"string","description":"Type of the disk attached to each node.","description_kind":"plain","optional":true,"computed":true},"guest_accelerator":{"type":["list",["object",{"count":"number","type":"string"}]],"description":"List of the type and count of accelerator cards attached to the instance.","description_kind":"plain","optional":true,"computed":true},"image_type":{"type":"string","description":"The image type to use for this node. Note that for a given image type, the latest version of it will be used.","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.","description_kind":"plain","optional":true,"computed":true},"local_ssd_count":{"type":"number","description":"The number of local SSD disks to be attached to the node.","description_kind":"plain","optional":true,"computed":true},"machine_type":{"type":"string","description":"The name of a Google Compute Engine machine type.","description_kind":"plain","optional":true,"computed":true},"metadata":{"type":["map","string"],"description":"The metadata key/value pairs assigned to instances in the cluster.","description_kind":"plain","optional":true,"computed":true},"min_cpu_platform":{"type":"string","description":"Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.","description_kind":"plain","optional":true},"oauth_scopes":{"type":["set","string"],"description":"The set of Google API scopes to be made available on all of the node VMs.","description_kind":"plain","optional":true,"computed":true},"preemptible":{"type":"bool","description":"Whether the nodes are created as preemptible VM instances.","description_kind":"plain","optional":true},"service_account":{"type":"string","description":"The Google Cloud Platform Service Account to be used by the node VMs.","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["list","string"],"description":"The list of instance tags applied to all nodes.","description_kind":"plain","optional":true},"taint":{"type":["list",["object",{"effect":"string","key":"string","value":"string"}]],"description":"List of Kubernetes taints to be applied to each node.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description":"Defines whether the instance has integrity monitoring enabled.","description_kind":"plain","optional":true},"enable_secure_boot":{"type":"bool","description":"Defines whether the instance has Secure Boot enabled.","description_kind":"plain","optional":true}},"description":"Shielded Instance options.","description_kind":"plain"},"max_items":1},"workload_metadata_config":{"nesting_mode":"list","block":{"attributes":{"node_metadata":{"type":"string","description":"NodeMetadata is the configuration for how to expose metadata to the workloads running on the node.","description_kind":"plain","required":true}},"description":"The workload metadata configuration for this node.","description_kind":"plain"},"max_items":1}},"description":"The configuration of the nodepool","description_kind":"plain"},"max_items":1},"node_pool":{"nesting_mode":"list","block":{"attributes":{"initial_node_count":{"type":"number","description":"The initial number of nodes for the pool. In regional or multi-zonal clusters, this is the number of nodes per zone. Changing this will force recreation of the resource.","description_kind":"plain","optional":true,"computed":true},"instance_group_urls":{"type":["list","string"],"description":"The resource URLs of the managed instance groups associated with this node pool.","description_kind":"plain","computed":true},"max_pods_per_node":{"type":"number","description":"The maximum number of pods per node in this node pool. Note that this does not work on node pools which are \"route-based\" - that is, node pools belonging to clusters that do not have IP Aliasing enabled.","description_kind":"plain","optional":true,"computed":true},"name":{"type":"string","description":"The name of the node pool. If left blank, Terraform will auto-generate a unique name.","description_kind":"plain","optional":true,"computed":true},"name_prefix":{"type":"string","description":"Creates a unique name for the node pool beginning with the specified prefix. Conflicts with name.","description_kind":"plain","optional":true,"computed":true},"node_count":{"type":"number","description":"The number of nodes per instance group. This field can be used to update the number of nodes per instance group but should not be used alongside autoscaling.","description_kind":"plain","optional":true,"computed":true},"node_locations":{"type":["set","string"],"description":"The list of zones in which the node pool's nodes should be located. Nodes must be in the region of their regional cluster or in the same region as their cluster's zone for zonal clusters. If unspecified, the cluster-level node_locations will be used.","description_kind":"plain","optional":true,"computed":true},"version":{"type":"string","description":"The Kubernetes version for the nodes in this pool. Note that if this field and auto_upgrade are both specified, they will fight each other for what the node version should be, so setting both is highly discouraged. While a fuzzy version can be specified, it's recommended that you specify explicit versions as Terraform will see spurious diffs when fuzzy versions are used. See the google_container_engine_versions data source's version_prefix field to approximate fuzzy versions in a Terraform-compatible way.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"autoscaling":{"nesting_mode":"list","block":{"attributes":{"max_node_count":{"type":"number","description":"Maximum number of nodes in the NodePool. Must be \u003e= min_node_count.","description_kind":"plain","required":true},"min_node_count":{"type":"number","description":"Minimum number of nodes in the NodePool. Must be \u003e=0 and \u003c= max_node_count.","description_kind":"plain","required":true}},"description":"Configuration required by cluster autoscaler to adjust the size of the node pool to the current cluster usage.","description_kind":"plain"},"max_items":1},"management":{"nesting_mode":"list","block":{"attributes":{"auto_repair":{"type":"bool","description":"Whether the nodes will be automatically repaired.","description_kind":"plain","optional":true},"auto_upgrade":{"type":"bool","description":"Whether the nodes will be automatically upgraded.","description_kind":"plain","optional":true}},"description":"Node management configuration, wherein auto-repair and auto-upgrade is configured.","description_kind":"plain"},"max_items":1},"node_config":{"nesting_mode":"list","block":{"attributes":{"disk_size_gb":{"type":"number","description":"Size of the disk attached to each node, specified in GB. The smallest allowed disk size is 10GB.","description_kind":"plain","optional":true,"computed":true},"disk_type":{"type":"string","description":"Type of the disk attached to each node.","description_kind":"plain","optional":true,"computed":true},"guest_accelerator":{"type":["list",["object",{"count":"number","type":"string"}]],"description":"List of the type and count of accelerator cards attached to the instance.","description_kind":"plain","optional":true,"computed":true},"image_type":{"type":"string","description":"The image type to use for this node. Note that for a given image type, the latest version of it will be used.","description_kind":"plain","optional":true,"computed":true},"labels":{"type":["map","string"],"description":"The map of Kubernetes labels (key/value pairs) to be applied to each node. These will added in addition to any default label(s) that Kubernetes may apply to the node.","description_kind":"plain","optional":true,"computed":true},"local_ssd_count":{"type":"number","description":"The number of local SSD disks to be attached to the node.","description_kind":"plain","optional":true,"computed":true},"machine_type":{"type":"string","description":"The name of a Google Compute Engine machine type.","description_kind":"plain","optional":true,"computed":true},"metadata":{"type":["map","string"],"description":"The metadata key/value pairs assigned to instances in the cluster.","description_kind":"plain","optional":true,"computed":true},"min_cpu_platform":{"type":"string","description":"Minimum CPU platform to be used by this instance. The instance may be scheduled on the specified or newer CPU platform.","description_kind":"plain","optional":true},"oauth_scopes":{"type":["set","string"],"description":"The set of Google API scopes to be made available on all of the node VMs.","description_kind":"plain","optional":true,"computed":true},"preemptible":{"type":"bool","description":"Whether the nodes are created as preemptible VM instances.","description_kind":"plain","optional":true},"service_account":{"type":"string","description":"The Google Cloud Platform Service Account to be used by the node VMs.","description_kind":"plain","optional":true,"computed":true},"tags":{"type":["list","string"],"description":"The list of instance tags applied to all nodes.","description_kind":"plain","optional":true},"taint":{"type":["list",["object",{"effect":"string","key":"string","value":"string"}]],"description":"List of Kubernetes taints to be applied to each node.","description_kind":"plain","optional":true,"computed":true}},"block_types":{"shielded_instance_config":{"nesting_mode":"list","block":{"attributes":{"enable_integrity_monitoring":{"type":"bool","description":"Defines whether the instance has integrity monitoring enabled.","description_kind":"plain","optional":true},"enable_secure_boot":{"type":"bool","descriptio
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment