pulumi-gcp 7.24.0a1716510380__py3-none-any.whl → 7.25.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (467) hide show
  1. pulumi_gcp/__init__.py +104 -0
  2. pulumi_gcp/accesscontextmanager/access_policy_iam_binding.py +12 -12
  3. pulumi_gcp/accesscontextmanager/access_policy_iam_member.py +12 -12
  4. pulumi_gcp/accesscontextmanager/access_policy_iam_policy.py +12 -12
  5. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +0 -64
  6. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +0 -70
  7. pulumi_gcp/alloydb/backup.py +50 -42
  8. pulumi_gcp/alloydb/cluster.py +56 -48
  9. pulumi_gcp/alloydb/instance.py +50 -42
  10. pulumi_gcp/alloydb/user.py +32 -24
  11. pulumi_gcp/apigateway/api_config.py +0 -114
  12. pulumi_gcp/apigateway/api_config_iam_binding.py +8 -8
  13. pulumi_gcp/apigateway/api_config_iam_member.py +8 -8
  14. pulumi_gcp/apigateway/api_config_iam_policy.py +8 -8
  15. pulumi_gcp/apigateway/api_iam_binding.py +8 -8
  16. pulumi_gcp/apigateway/api_iam_member.py +8 -8
  17. pulumi_gcp/apigateway/api_iam_policy.py +8 -8
  18. pulumi_gcp/apigateway/gateway.py +0 -44
  19. pulumi_gcp/apigateway/gateway_iam_binding.py +8 -8
  20. pulumi_gcp/apigateway/gateway_iam_member.py +8 -8
  21. pulumi_gcp/apigateway/gateway_iam_policy.py +8 -8
  22. pulumi_gcp/apigee/addons_config.py +14 -4
  23. pulumi_gcp/apigee/endpoint_attachment.py +4 -2
  24. pulumi_gcp/apigee/env_group.py +4 -2
  25. pulumi_gcp/apigee/environment.py +4 -2
  26. pulumi_gcp/apigee/environment_iam_binding.py +12 -12
  27. pulumi_gcp/apigee/environment_iam_member.py +12 -12
  28. pulumi_gcp/apigee/environment_iam_policy.py +12 -12
  29. pulumi_gcp/apigee/instance.py +22 -8
  30. pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +26 -10
  31. pulumi_gcp/apigee/nat_address.py +10 -2
  32. pulumi_gcp/apigee/organization.py +18 -6
  33. pulumi_gcp/apigee/sync_authorization.py +8 -4
  34. pulumi_gcp/apigee/target_server.py +26 -10
  35. pulumi_gcp/appengine/_inputs.py +18 -0
  36. pulumi_gcp/appengine/domain_mapping.py +1 -1
  37. pulumi_gcp/appengine/outputs.py +16 -0
  38. pulumi_gcp/apphub/service.py +40 -20
  39. pulumi_gcp/apphub/service_project_attachment.py +16 -8
  40. pulumi_gcp/apphub/workload.py +0 -418
  41. pulumi_gcp/applicationintegration/auth_config.py +4 -2
  42. pulumi_gcp/artifactregistry/repository.py +14 -12
  43. pulumi_gcp/artifactregistry/repository_iam_binding.py +12 -12
  44. pulumi_gcp/artifactregistry/repository_iam_member.py +12 -12
  45. pulumi_gcp/artifactregistry/repository_iam_policy.py +12 -12
  46. pulumi_gcp/backupdisasterrecovery/management_server.py +4 -2
  47. pulumi_gcp/bigquery/_inputs.py +286 -2
  48. pulumi_gcp/bigquery/connection.py +126 -0
  49. pulumi_gcp/bigquery/connection_iam_binding.py +12 -12
  50. pulumi_gcp/bigquery/connection_iam_member.py +12 -12
  51. pulumi_gcp/bigquery/connection_iam_policy.py +12 -12
  52. pulumi_gcp/bigquery/data_transfer_config.py +8 -4
  53. pulumi_gcp/bigquery/dataset_iam_binding.py +12 -12
  54. pulumi_gcp/bigquery/dataset_iam_member.py +12 -12
  55. pulumi_gcp/bigquery/dataset_iam_policy.py +12 -12
  56. pulumi_gcp/bigquery/iam_binding.py +12 -12
  57. pulumi_gcp/bigquery/iam_member.py +12 -12
  58. pulumi_gcp/bigquery/iam_policy.py +12 -12
  59. pulumi_gcp/bigquery/job.py +22 -16
  60. pulumi_gcp/bigquery/outputs.py +289 -2
  61. pulumi_gcp/bigquery/routine.py +2 -2
  62. pulumi_gcp/bigquery/table.py +77 -35
  63. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +12 -12
  64. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +12 -12
  65. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +12 -12
  66. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +12 -12
  67. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +12 -12
  68. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +12 -12
  69. pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +12 -12
  70. pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +12 -12
  71. pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +12 -12
  72. pulumi_gcp/bigtable/instance_iam_binding.py +12 -12
  73. pulumi_gcp/bigtable/instance_iam_member.py +12 -12
  74. pulumi_gcp/bigtable/instance_iam_policy.py +12 -12
  75. pulumi_gcp/bigtable/table_iam_binding.py +12 -12
  76. pulumi_gcp/bigtable/table_iam_member.py +12 -12
  77. pulumi_gcp/bigtable/table_iam_policy.py +12 -12
  78. pulumi_gcp/billing/account_iam_binding.py +12 -12
  79. pulumi_gcp/billing/account_iam_member.py +12 -12
  80. pulumi_gcp/billing/account_iam_policy.py +12 -12
  81. pulumi_gcp/billing/project_info.py +4 -4
  82. pulumi_gcp/binaryauthorization/attestor_iam_binding.py +12 -12
  83. pulumi_gcp/binaryauthorization/attestor_iam_member.py +12 -12
  84. pulumi_gcp/binaryauthorization/attestor_iam_policy.py +12 -12
  85. pulumi_gcp/certificateauthority/authority.py +10 -2
  86. pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +12 -12
  87. pulumi_gcp/certificateauthority/ca_pool_iam_member.py +12 -12
  88. pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +12 -12
  89. pulumi_gcp/certificateauthority/certificate.py +8 -4
  90. pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +12 -12
  91. pulumi_gcp/certificateauthority/certificate_template_iam_member.py +12 -12
  92. pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +12 -12
  93. pulumi_gcp/certificatemanager/certificate.py +84 -80
  94. pulumi_gcp/certificatemanager/certificate_issuance_config.py +32 -30
  95. pulumi_gcp/cloudasset/__init__.py +1 -0
  96. pulumi_gcp/cloudasset/get_search_all_resources.py +197 -0
  97. pulumi_gcp/cloudasset/outputs.py +184 -0
  98. pulumi_gcp/cloudbuild/bitbucket_server_config.py +12 -6
  99. pulumi_gcp/cloudbuild/trigger.py +22 -14
  100. pulumi_gcp/cloudbuild/worker_pool.py +12 -6
  101. pulumi_gcp/cloudbuildv2/connection.py +10 -2
  102. pulumi_gcp/cloudbuildv2/connection_iam_binding.py +12 -12
  103. pulumi_gcp/cloudbuildv2/connection_iam_member.py +12 -12
  104. pulumi_gcp/cloudbuildv2/connection_iam_policy.py +12 -12
  105. pulumi_gcp/cloudbuildv2/repository.py +10 -2
  106. pulumi_gcp/cloudfunctions/function_iam_binding.py +12 -12
  107. pulumi_gcp/cloudfunctions/function_iam_member.py +12 -12
  108. pulumi_gcp/cloudfunctions/function_iam_policy.py +12 -12
  109. pulumi_gcp/cloudfunctionsv2/function.py +110 -66
  110. pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +12 -12
  111. pulumi_gcp/cloudfunctionsv2/function_iam_member.py +12 -12
  112. pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +12 -12
  113. pulumi_gcp/cloudids/endpoint.py +4 -2
  114. pulumi_gcp/cloudrun/_inputs.py +80 -4
  115. pulumi_gcp/cloudrun/iam_binding.py +12 -12
  116. pulumi_gcp/cloudrun/iam_member.py +12 -12
  117. pulumi_gcp/cloudrun/iam_policy.py +12 -12
  118. pulumi_gcp/cloudrun/outputs.py +137 -4
  119. pulumi_gcp/cloudrunv2/job.py +32 -20
  120. pulumi_gcp/cloudrunv2/job_iam_binding.py +12 -12
  121. pulumi_gcp/cloudrunv2/job_iam_member.py +12 -12
  122. pulumi_gcp/cloudrunv2/job_iam_policy.py +12 -12
  123. pulumi_gcp/cloudrunv2/service.py +28 -20
  124. pulumi_gcp/cloudrunv2/service_iam_binding.py +12 -12
  125. pulumi_gcp/cloudrunv2/service_iam_member.py +12 -12
  126. pulumi_gcp/cloudrunv2/service_iam_policy.py +12 -12
  127. pulumi_gcp/cloudtasks/queue_iam_binding.py +12 -12
  128. pulumi_gcp/cloudtasks/queue_iam_member.py +12 -12
  129. pulumi_gcp/cloudtasks/queue_iam_policy.py +12 -12
  130. pulumi_gcp/composer/user_workloads_secret.py +4 -4
  131. pulumi_gcp/compute/__init__.py +2 -0
  132. pulumi_gcp/compute/_inputs.py +805 -182
  133. pulumi_gcp/compute/disk_iam_binding.py +12 -12
  134. pulumi_gcp/compute/disk_iam_member.py +12 -12
  135. pulumi_gcp/compute/disk_iam_policy.py +12 -12
  136. pulumi_gcp/compute/forwarding_rule.py +231 -823
  137. pulumi_gcp/compute/get_network_endpoint_group.py +2 -2
  138. pulumi_gcp/compute/get_region_network_endpoint_group.py +2 -2
  139. pulumi_gcp/compute/get_router_nat.py +11 -1
  140. pulumi_gcp/compute/get_snapshot.py +2 -0
  141. pulumi_gcp/compute/get_subnetworks.py +157 -0
  142. pulumi_gcp/compute/global_forwarding_rule.py +0 -766
  143. pulumi_gcp/compute/image_iam_binding.py +12 -12
  144. pulumi_gcp/compute/image_iam_member.py +12 -12
  145. pulumi_gcp/compute/image_iam_policy.py +12 -12
  146. pulumi_gcp/compute/instance_group.py +0 -100
  147. pulumi_gcp/compute/instance_group_membership.py +2 -2
  148. pulumi_gcp/compute/instance_iam_binding.py +12 -12
  149. pulumi_gcp/compute/instance_iam_member.py +12 -12
  150. pulumi_gcp/compute/instance_iam_policy.py +12 -12
  151. pulumi_gcp/compute/interconnect.py +1683 -0
  152. pulumi_gcp/compute/interconnect_attachment.py +82 -0
  153. pulumi_gcp/compute/machine_image_iam_binding.py +8 -8
  154. pulumi_gcp/compute/machine_image_iam_member.py +8 -8
  155. pulumi_gcp/compute/machine_image_iam_policy.py +8 -8
  156. pulumi_gcp/compute/network_endpoint.py +2 -2
  157. pulumi_gcp/compute/network_endpoint_list.py +2 -2
  158. pulumi_gcp/compute/outputs.py +1022 -161
  159. pulumi_gcp/compute/packet_mirroring.py +4 -2
  160. pulumi_gcp/compute/region_disk_iam_binding.py +12 -12
  161. pulumi_gcp/compute/region_disk_iam_member.py +12 -12
  162. pulumi_gcp/compute/region_disk_iam_policy.py +12 -12
  163. pulumi_gcp/compute/region_security_policy_rule.py +4 -2
  164. pulumi_gcp/compute/region_ssl_certificate.py +0 -188
  165. pulumi_gcp/compute/region_ssl_policy.py +39 -40
  166. pulumi_gcp/compute/route.py +10 -2
  167. pulumi_gcp/compute/router_nat.py +68 -0
  168. pulumi_gcp/compute/security_policy_rule.py +55 -1
  169. pulumi_gcp/compute/snapshot_iam_binding.py +12 -12
  170. pulumi_gcp/compute/snapshot_iam_member.py +12 -12
  171. pulumi_gcp/compute/snapshot_iam_policy.py +12 -12
  172. pulumi_gcp/compute/ssl_certificate.py +0 -166
  173. pulumi_gcp/compute/subnetwork_iam_binding.py +12 -12
  174. pulumi_gcp/compute/subnetwork_iam_member.py +12 -12
  175. pulumi_gcp/compute/subnetwork_iam_policy.py +12 -12
  176. pulumi_gcp/compute/target_instance.py +8 -6
  177. pulumi_gcp/compute/target_pool.py +21 -21
  178. pulumi_gcp/compute/vpn_gateway.py +12 -2
  179. pulumi_gcp/compute/vpn_tunnel.py +26 -16
  180. pulumi_gcp/container/_inputs.py +562 -2
  181. pulumi_gcp/container/outputs.py +1110 -55
  182. pulumi_gcp/containeranalysis/note_iam_binding.py +12 -12
  183. pulumi_gcp/containeranalysis/note_iam_member.py +12 -12
  184. pulumi_gcp/containeranalysis/note_iam_policy.py +12 -12
  185. pulumi_gcp/databasemigrationservice/connection_profile.py +38 -22
  186. pulumi_gcp/datacatalog/entry_group_iam_binding.py +12 -12
  187. pulumi_gcp/datacatalog/entry_group_iam_member.py +12 -12
  188. pulumi_gcp/datacatalog/entry_group_iam_policy.py +12 -12
  189. pulumi_gcp/datacatalog/policy_tag.py +4 -2
  190. pulumi_gcp/datacatalog/policy_tag_iam_binding.py +12 -12
  191. pulumi_gcp/datacatalog/policy_tag_iam_member.py +12 -12
  192. pulumi_gcp/datacatalog/policy_tag_iam_policy.py +12 -12
  193. pulumi_gcp/datacatalog/tag_template_iam_binding.py +12 -12
  194. pulumi_gcp/datacatalog/tag_template_iam_member.py +12 -12
  195. pulumi_gcp/datacatalog/tag_template_iam_policy.py +12 -12
  196. pulumi_gcp/datacatalog/taxonomy_iam_binding.py +12 -12
  197. pulumi_gcp/datacatalog/taxonomy_iam_member.py +12 -12
  198. pulumi_gcp/datacatalog/taxonomy_iam_policy.py +12 -12
  199. pulumi_gcp/datafusion/instance.py +14 -12
  200. pulumi_gcp/dataloss/_inputs.py +420 -13
  201. pulumi_gcp/dataloss/outputs.py +439 -13
  202. pulumi_gcp/dataplex/__init__.py +10 -0
  203. pulumi_gcp/dataplex/_inputs.py +160 -0
  204. pulumi_gcp/dataplex/aspect_type.py +1077 -0
  205. pulumi_gcp/dataplex/aspect_type_iam_binding.py +765 -0
  206. pulumi_gcp/dataplex/aspect_type_iam_member.py +765 -0
  207. pulumi_gcp/dataplex/aspect_type_iam_policy.py +604 -0
  208. pulumi_gcp/dataplex/asset.py +4 -2
  209. pulumi_gcp/dataplex/asset_iam_binding.py +12 -12
  210. pulumi_gcp/dataplex/asset_iam_member.py +12 -12
  211. pulumi_gcp/dataplex/asset_iam_policy.py +12 -12
  212. pulumi_gcp/dataplex/datascan.py +16 -14
  213. pulumi_gcp/dataplex/datascan_iam_binding.py +12 -12
  214. pulumi_gcp/dataplex/datascan_iam_member.py +12 -12
  215. pulumi_gcp/dataplex/datascan_iam_policy.py +12 -12
  216. pulumi_gcp/dataplex/entry_group.py +722 -0
  217. pulumi_gcp/dataplex/entry_group_iam_binding.py +765 -0
  218. pulumi_gcp/dataplex/entry_group_iam_member.py +765 -0
  219. pulumi_gcp/dataplex/entry_group_iam_policy.py +604 -0
  220. pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +164 -0
  221. pulumi_gcp/dataplex/get_entry_group_iam_policy.py +164 -0
  222. pulumi_gcp/dataplex/lake_iam_binding.py +12 -12
  223. pulumi_gcp/dataplex/lake_iam_member.py +12 -12
  224. pulumi_gcp/dataplex/lake_iam_policy.py +12 -12
  225. pulumi_gcp/dataplex/outputs.py +112 -0
  226. pulumi_gcp/dataplex/task.py +16 -16
  227. pulumi_gcp/dataplex/task_iam_binding.py +12 -12
  228. pulumi_gcp/dataplex/task_iam_member.py +12 -12
  229. pulumi_gcp/dataplex/task_iam_policy.py +12 -12
  230. pulumi_gcp/dataplex/zone_iam_binding.py +12 -12
  231. pulumi_gcp/dataplex/zone_iam_member.py +12 -12
  232. pulumi_gcp/dataplex/zone_iam_policy.py +12 -12
  233. pulumi_gcp/dataproc/_inputs.py +70 -0
  234. pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +12 -12
  235. pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +12 -12
  236. pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +12 -12
  237. pulumi_gcp/dataproc/cluster_iam_binding.py +12 -12
  238. pulumi_gcp/dataproc/cluster_iam_member.py +12 -12
  239. pulumi_gcp/dataproc/cluster_iam_policy.py +12 -12
  240. pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +26 -2
  241. pulumi_gcp/dataproc/job_iam_binding.py +12 -12
  242. pulumi_gcp/dataproc/job_iam_member.py +12 -12
  243. pulumi_gcp/dataproc/job_iam_policy.py +12 -12
  244. pulumi_gcp/dataproc/metastore_federation.py +4 -0
  245. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +208 -0
  246. pulumi_gcp/dataproc/metastore_federation_iam_member.py +208 -0
  247. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +208 -0
  248. pulumi_gcp/dataproc/metastore_service_iam_binding.py +12 -12
  249. pulumi_gcp/dataproc/metastore_service_iam_member.py +12 -12
  250. pulumi_gcp/dataproc/metastore_service_iam_policy.py +12 -12
  251. pulumi_gcp/dataproc/outputs.py +62 -0
  252. pulumi_gcp/datastore/data_store_index.py +4 -2
  253. pulumi_gcp/datastream/_inputs.py +1789 -820
  254. pulumi_gcp/datastream/connection_profile.py +210 -3
  255. pulumi_gcp/datastream/outputs.py +864 -5
  256. pulumi_gcp/datastream/private_connection.py +47 -0
  257. pulumi_gcp/datastream/stream.py +231 -4
  258. pulumi_gcp/diagflow/cx_test_case.py +4 -4
  259. pulumi_gcp/diagflow/entity_type.py +4 -2
  260. pulumi_gcp/diagflow/fulfillment.py +4 -2
  261. pulumi_gcp/diagflow/intent.py +8 -4
  262. pulumi_gcp/dns/dns_managed_zone_iam_binding.py +12 -12
  263. pulumi_gcp/dns/dns_managed_zone_iam_member.py +12 -12
  264. pulumi_gcp/dns/dns_managed_zone_iam_policy.py +12 -12
  265. pulumi_gcp/dns/get_managed_zone.py +3 -3
  266. pulumi_gcp/dns/managed_zone.py +7 -7
  267. pulumi_gcp/dns/outputs.py +2 -2
  268. pulumi_gcp/edgecontainer/node_pool.py +4 -2
  269. pulumi_gcp/edgecontainer/vpn_connection.py +4 -2
  270. pulumi_gcp/endpoints/service_iam_binding.py +12 -12
  271. pulumi_gcp/endpoints/service_iam_member.py +12 -12
  272. pulumi_gcp/endpoints/service_iam_policy.py +12 -12
  273. pulumi_gcp/eventarc/channel.py +4 -2
  274. pulumi_gcp/eventarc/google_channel_config.py +4 -2
  275. pulumi_gcp/firebase/app_check_app_attest_config.py +16 -8
  276. pulumi_gcp/firebase/app_check_debug_token.py +8 -4
  277. pulumi_gcp/firebase/app_check_device_check_config.py +8 -4
  278. pulumi_gcp/firebase/app_check_play_integrity_config.py +16 -8
  279. pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +8 -4
  280. pulumi_gcp/firebase/app_check_recaptcha_v3_config.py +8 -4
  281. pulumi_gcp/firebase/app_check_service_config.py +12 -6
  282. pulumi_gcp/firebase/database_instance.py +4 -2
  283. pulumi_gcp/firebaserules/release.py +0 -98
  284. pulumi_gcp/firestore/database.py +24 -20
  285. pulumi_gcp/firestore/document.py +24 -12
  286. pulumi_gcp/firestore/field.py +4 -4
  287. pulumi_gcp/folder/access_approval_settings.py +4 -2
  288. pulumi_gcp/folder/iam_audit_config.py +23 -23
  289. pulumi_gcp/folder/iam_member.py +16 -16
  290. pulumi_gcp/folder/iam_policy.py +16 -16
  291. pulumi_gcp/gkebackup/backup_plan_iam_binding.py +12 -12
  292. pulumi_gcp/gkebackup/backup_plan_iam_member.py +12 -12
  293. pulumi_gcp/gkebackup/backup_plan_iam_policy.py +12 -12
  294. pulumi_gcp/gkehub/feature_iam_binding.py +12 -12
  295. pulumi_gcp/gkehub/feature_iam_member.py +12 -12
  296. pulumi_gcp/gkehub/feature_iam_policy.py +12 -12
  297. pulumi_gcp/gkehub/membership_binding.py +20 -10
  298. pulumi_gcp/gkehub/membership_iam_binding.py +12 -12
  299. pulumi_gcp/gkehub/membership_iam_member.py +12 -12
  300. pulumi_gcp/gkehub/membership_iam_policy.py +12 -12
  301. pulumi_gcp/gkehub/membership_rbac_role_binding.py +12 -8
  302. pulumi_gcp/gkehub/namespace.py +8 -6
  303. pulumi_gcp/gkehub/scope_iam_binding.py +12 -12
  304. pulumi_gcp/gkehub/scope_iam_member.py +12 -12
  305. pulumi_gcp/gkehub/scope_iam_policy.py +12 -12
  306. pulumi_gcp/gkehub/scope_rbac_role_binding.py +8 -6
  307. pulumi_gcp/healthcare/consent_store_iam_binding.py +12 -12
  308. pulumi_gcp/healthcare/consent_store_iam_member.py +12 -12
  309. pulumi_gcp/healthcare/consent_store_iam_policy.py +12 -12
  310. pulumi_gcp/healthcare/dataset_iam_binding.py +12 -12
  311. pulumi_gcp/healthcare/dataset_iam_member.py +12 -12
  312. pulumi_gcp/healthcare/dataset_iam_policy.py +12 -12
  313. pulumi_gcp/healthcare/dicom_store_iam_binding.py +12 -12
  314. pulumi_gcp/healthcare/dicom_store_iam_member.py +12 -12
  315. pulumi_gcp/healthcare/dicom_store_iam_policy.py +12 -12
  316. pulumi_gcp/healthcare/fhir_store_iam_binding.py +12 -12
  317. pulumi_gcp/healthcare/fhir_store_iam_member.py +12 -12
  318. pulumi_gcp/healthcare/fhir_store_iam_policy.py +12 -12
  319. pulumi_gcp/healthcare/hl7_store_iam_binding.py +12 -12
  320. pulumi_gcp/healthcare/hl7_store_iam_member.py +12 -12
  321. pulumi_gcp/healthcare/hl7_store_iam_policy.py +12 -12
  322. pulumi_gcp/iap/app_engine_service_iam_binding.py +12 -12
  323. pulumi_gcp/iap/app_engine_service_iam_member.py +12 -12
  324. pulumi_gcp/iap/app_engine_service_iam_policy.py +12 -12
  325. pulumi_gcp/iap/app_engine_version_iam_binding.py +12 -12
  326. pulumi_gcp/iap/app_engine_version_iam_member.py +12 -12
  327. pulumi_gcp/iap/app_engine_version_iam_policy.py +12 -12
  328. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  329. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +12 -12
  330. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +12 -12
  331. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +12 -12
  332. pulumi_gcp/iap/tunnel_iam_binding.py +12 -12
  333. pulumi_gcp/iap/tunnel_iam_member.py +12 -12
  334. pulumi_gcp/iap/tunnel_iam_policy.py +12 -12
  335. pulumi_gcp/iap/tunnel_instance_iam_binding.py +12 -12
  336. pulumi_gcp/iap/tunnel_instance_iam_member.py +12 -12
  337. pulumi_gcp/iap/tunnel_instance_iam_policy.py +12 -12
  338. pulumi_gcp/iap/web_backend_service_iam_binding.py +12 -12
  339. pulumi_gcp/iap/web_backend_service_iam_member.py +12 -12
  340. pulumi_gcp/iap/web_backend_service_iam_policy.py +12 -12
  341. pulumi_gcp/iap/web_iam_binding.py +12 -12
  342. pulumi_gcp/iap/web_iam_member.py +12 -12
  343. pulumi_gcp/iap/web_iam_policy.py +12 -12
  344. pulumi_gcp/iap/web_region_backend_service_iam_binding.py +12 -12
  345. pulumi_gcp/iap/web_region_backend_service_iam_member.py +12 -12
  346. pulumi_gcp/iap/web_region_backend_service_iam_policy.py +12 -12
  347. pulumi_gcp/iap/web_type_app_enging_iam_binding.py +12 -12
  348. pulumi_gcp/iap/web_type_app_enging_iam_member.py +12 -12
  349. pulumi_gcp/iap/web_type_app_enging_iam_policy.py +12 -12
  350. pulumi_gcp/iap/web_type_compute_iam_binding.py +12 -12
  351. pulumi_gcp/iap/web_type_compute_iam_member.py +12 -12
  352. pulumi_gcp/iap/web_type_compute_iam_policy.py +12 -12
  353. pulumi_gcp/integrationconnectors/connection.py +4 -2
  354. pulumi_gcp/integrationconnectors/managed_zone.py +26 -14
  355. pulumi_gcp/kms/__init__.py +2 -0
  356. pulumi_gcp/kms/autokey_config.py +366 -0
  357. pulumi_gcp/kms/key_handle.py +548 -0
  358. pulumi_gcp/kms/key_ring_iam_binding.py +12 -12
  359. pulumi_gcp/kms/key_ring_iam_member.py +12 -12
  360. pulumi_gcp/kms/key_ring_iam_policy.py +12 -12
  361. pulumi_gcp/logging/folder_settings.py +12 -10
  362. pulumi_gcp/logging/linked_dataset.py +4 -2
  363. pulumi_gcp/logging/organization_settings.py +12 -10
  364. pulumi_gcp/logging/project_bucket_config.py +4 -2
  365. pulumi_gcp/looker/instance.py +12 -10
  366. pulumi_gcp/netapp/storage_pool.py +7 -7
  367. pulumi_gcp/netapp/volume.py +4 -4
  368. pulumi_gcp/netapp/volume_replication.py +4 -2
  369. pulumi_gcp/netapp/volume_snapshot.py +4 -2
  370. pulumi_gcp/networkconnectivity/internal_range.py +14 -12
  371. pulumi_gcp/networksecurity/gateway_security_policy.py +20 -8
  372. pulumi_gcp/networksecurity/tls_inspection_policy.py +437 -5
  373. pulumi_gcp/networkservices/__init__.py +2 -0
  374. pulumi_gcp/networkservices/_inputs.py +454 -0
  375. pulumi_gcp/networkservices/gateway.py +12 -6
  376. pulumi_gcp/networkservices/lb_route_extension.py +663 -0
  377. pulumi_gcp/networkservices/lb_traffic_extension.py +669 -0
  378. pulumi_gcp/networkservices/outputs.py +478 -0
  379. pulumi_gcp/notebooks/instance_iam_binding.py +12 -12
  380. pulumi_gcp/notebooks/instance_iam_member.py +12 -12
  381. pulumi_gcp/notebooks/instance_iam_policy.py +12 -12
  382. pulumi_gcp/notebooks/runtime_iam_binding.py +12 -12
  383. pulumi_gcp/notebooks/runtime_iam_member.py +12 -12
  384. pulumi_gcp/notebooks/runtime_iam_policy.py +12 -12
  385. pulumi_gcp/organizations/access_approval_settings.py +4 -2
  386. pulumi_gcp/organizations/iam_member.py +16 -16
  387. pulumi_gcp/organizations/iam_policy.py +16 -16
  388. pulumi_gcp/orgpolicy/policy.py +2 -2
  389. pulumi_gcp/parallelstore/instance.py +20 -18
  390. pulumi_gcp/projects/access_approval_settings.py +4 -2
  391. pulumi_gcp/projects/iam_audit_config.py +23 -23
  392. pulumi_gcp/projects/iam_binding.py +23 -23
  393. pulumi_gcp/projects/iam_member.py +23 -23
  394. pulumi_gcp/projects/iam_policy.py +16 -16
  395. pulumi_gcp/projects/service.py +2 -43
  396. pulumi_gcp/pubsub/_inputs.py +16 -0
  397. pulumi_gcp/pubsub/outputs.py +25 -0
  398. pulumi_gcp/pubsub/schema.py +4 -2
  399. pulumi_gcp/pubsub/schema_iam_binding.py +12 -12
  400. pulumi_gcp/pubsub/schema_iam_member.py +12 -12
  401. pulumi_gcp/pubsub/schema_iam_policy.py +12 -12
  402. pulumi_gcp/pubsub/subscription.py +102 -66
  403. pulumi_gcp/pubsub/subscription_iam_binding.py +12 -12
  404. pulumi_gcp/pubsub/subscription_iam_member.py +12 -12
  405. pulumi_gcp/pubsub/subscription_iam_policy.py +12 -12
  406. pulumi_gcp/pubsub/topic.py +4 -2
  407. pulumi_gcp/pubsub/topic_iam_binding.py +12 -12
  408. pulumi_gcp/pubsub/topic_iam_member.py +12 -12
  409. pulumi_gcp/pubsub/topic_iam_policy.py +12 -12
  410. pulumi_gcp/pulumi-plugin.json +1 -1
  411. pulumi_gcp/redis/cluster.py +30 -28
  412. pulumi_gcp/redis/instance.py +4 -2
  413. pulumi_gcp/secretmanager/secret.py +4 -2
  414. pulumi_gcp/secretmanager/secret_iam_binding.py +12 -12
  415. pulumi_gcp/secretmanager/secret_iam_member.py +12 -12
  416. pulumi_gcp/secretmanager/secret_iam_policy.py +12 -12
  417. pulumi_gcp/securesourcemanager/instance.py +20 -8
  418. pulumi_gcp/securitycenter/instance_iam_binding.py +14 -12
  419. pulumi_gcp/securitycenter/instance_iam_member.py +14 -12
  420. pulumi_gcp/securitycenter/instance_iam_policy.py +14 -12
  421. pulumi_gcp/serviceaccount/key.py +2 -2
  422. pulumi_gcp/servicedirectory/namespace_iam_binding.py +8 -8
  423. pulumi_gcp/servicedirectory/namespace_iam_member.py +8 -8
  424. pulumi_gcp/servicedirectory/namespace_iam_policy.py +8 -8
  425. pulumi_gcp/servicedirectory/service_iam_binding.py +8 -8
  426. pulumi_gcp/servicedirectory/service_iam_member.py +8 -8
  427. pulumi_gcp/servicedirectory/service_iam_policy.py +8 -8
  428. pulumi_gcp/sourcerepo/repository_iam_binding.py +12 -12
  429. pulumi_gcp/sourcerepo/repository_iam_member.py +12 -12
  430. pulumi_gcp/sourcerepo/repository_iam_policy.py +12 -12
  431. pulumi_gcp/spanner/database_iam_binding.py +12 -12
  432. pulumi_gcp/spanner/database_iam_member.py +12 -12
  433. pulumi_gcp/spanner/database_iam_policy.py +12 -12
  434. pulumi_gcp/spanner/instance_iam_binding.py +12 -12
  435. pulumi_gcp/spanner/instance_iam_member.py +12 -12
  436. pulumi_gcp/spanner/instance_iam_policy.py +12 -12
  437. pulumi_gcp/sql/database_instance.py +4 -2
  438. pulumi_gcp/sql/user.py +4 -4
  439. pulumi_gcp/storage/_inputs.py +12 -10
  440. pulumi_gcp/storage/bucket.py +44 -0
  441. pulumi_gcp/storage/bucket_iam_binding.py +12 -12
  442. pulumi_gcp/storage/bucket_iam_member.py +12 -12
  443. pulumi_gcp/storage/bucket_iam_policy.py +12 -12
  444. pulumi_gcp/storage/get_project_service_account.py +4 -2
  445. pulumi_gcp/storage/insights_report_config.py +12 -10
  446. pulumi_gcp/storage/notification.py +18 -16
  447. pulumi_gcp/storage/outputs.py +12 -10
  448. pulumi_gcp/storage/transfer_agent_pool.py +4 -2
  449. pulumi_gcp/storage/transfer_job.py +14 -4
  450. pulumi_gcp/tags/tag_key_iam_binding.py +12 -12
  451. pulumi_gcp/tags/tag_key_iam_member.py +12 -12
  452. pulumi_gcp/tags/tag_key_iam_policy.py +12 -12
  453. pulumi_gcp/tags/tag_value_iam_binding.py +12 -12
  454. pulumi_gcp/tags/tag_value_iam_member.py +12 -12
  455. pulumi_gcp/tags/tag_value_iam_policy.py +12 -12
  456. pulumi_gcp/tpu/_inputs.py +2 -2
  457. pulumi_gcp/tpu/outputs.py +2 -2
  458. pulumi_gcp/tpu/v2_vm.py +10 -6
  459. pulumi_gcp/vertex/ai_endpoint.py +24 -22
  460. pulumi_gcp/vertex/ai_index_endpoint.py +20 -18
  461. pulumi_gcp/vertex/ai_tensorboard.py +14 -12
  462. pulumi_gcp/vmwareengine/external_address.py +4 -2
  463. pulumi_gcp/vmwareengine/network.py +8 -4
  464. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.25.0.dist-info}/METADATA +1 -1
  465. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.25.0.dist-info}/RECORD +467 -450
  466. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.25.0.dist-info}/WHEEL +0 -0
  467. {pulumi_gcp-7.24.0a1716510380.dist-info → pulumi_gcp-7.25.0.dist-info}/top_level.txt +0 -0
@@ -100,6 +100,7 @@ __all__ = [
100
100
  'InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs',
101
101
  'InstanceFromMachineImageSchedulingMaxRunDurationArgs',
102
102
  'InstanceFromMachineImageSchedulingNodeAffinityArgs',
103
+ 'InstanceFromMachineImageSchedulingOnInstanceStopActionArgs',
103
104
  'InstanceFromMachineImageScratchDiskArgs',
104
105
  'InstanceFromMachineImageServiceAccountArgs',
105
106
  'InstanceFromMachineImageShieldedInstanceConfigArgs',
@@ -121,6 +122,7 @@ __all__ = [
121
122
  'InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
122
123
  'InstanceFromTemplateSchedulingMaxRunDurationArgs',
123
124
  'InstanceFromTemplateSchedulingNodeAffinityArgs',
125
+ 'InstanceFromTemplateSchedulingOnInstanceStopActionArgs',
124
126
  'InstanceFromTemplateScratchDiskArgs',
125
127
  'InstanceFromTemplateServiceAccountArgs',
126
128
  'InstanceFromTemplateShieldedInstanceConfigArgs',
@@ -156,6 +158,7 @@ __all__ = [
156
158
  'InstanceSchedulingLocalSsdRecoveryTimeoutArgs',
157
159
  'InstanceSchedulingMaxRunDurationArgs',
158
160
  'InstanceSchedulingNodeAffinityArgs',
161
+ 'InstanceSchedulingOnInstanceStopActionArgs',
159
162
  'InstanceScratchDiskArgs',
160
163
  'InstanceServiceAccountArgs',
161
164
  'InstanceSettingsMetadataArgs',
@@ -178,9 +181,14 @@ __all__ = [
178
181
  'InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
179
182
  'InstanceTemplateSchedulingMaxRunDurationArgs',
180
183
  'InstanceTemplateSchedulingNodeAffinityArgs',
184
+ 'InstanceTemplateSchedulingOnInstanceStopActionArgs',
181
185
  'InstanceTemplateServiceAccountArgs',
182
186
  'InstanceTemplateShieldedInstanceConfigArgs',
183
187
  'InterconnectAttachmentPrivateInterconnectInfoArgs',
188
+ 'InterconnectCircuitInfoArgs',
189
+ 'InterconnectExpectedOutageArgs',
190
+ 'InterconnectMacsecArgs',
191
+ 'InterconnectMacsecPreSharedKeyArgs',
184
192
  'MachineImageIamBindingConditionArgs',
185
193
  'MachineImageIamMemberConditionArgs',
186
194
  'MachineImageMachineImageEncryptionKeyArgs',
@@ -290,6 +298,7 @@ __all__ = [
290
298
  'RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
291
299
  'RegionInstanceTemplateSchedulingMaxRunDurationArgs',
292
300
  'RegionInstanceTemplateSchedulingNodeAffinityArgs',
301
+ 'RegionInstanceTemplateSchedulingOnInstanceStopActionArgs',
293
302
  'RegionInstanceTemplateServiceAccountArgs',
294
303
  'RegionInstanceTemplateShieldedInstanceConfigArgs',
295
304
  'RegionNetworkEndpointGroupAppEngineArgs',
@@ -309,6 +318,7 @@ __all__ = [
309
318
  'RegionSecurityPolicyDdosProtectionConfigArgs',
310
319
  'RegionSecurityPolicyRuleMatchArgs',
311
320
  'RegionSecurityPolicyRuleMatchConfigArgs',
321
+ 'RegionSecurityPolicyRuleMatchExprArgs',
312
322
  'RegionSecurityPolicyRuleNetworkMatchArgs',
313
323
  'RegionSecurityPolicyRuleNetworkMatchUserDefinedFieldArgs',
314
324
  'RegionSecurityPolicyRulePreconfiguredWafConfigArgs',
@@ -7437,6 +7447,7 @@ class InstanceFromMachineImageSchedulingArgs:
7437
7447
  min_node_cpus: Optional[pulumi.Input[int]] = None,
7438
7448
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceFromMachineImageSchedulingNodeAffinityArgs']]]] = None,
7439
7449
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
7450
+ on_instance_stop_action: Optional[pulumi.Input['InstanceFromMachineImageSchedulingOnInstanceStopActionArgs']] = None,
7440
7451
  preemptible: Optional[pulumi.Input[bool]] = None,
7441
7452
  provisioning_model: Optional[pulumi.Input[str]] = None):
7442
7453
  """
@@ -7450,6 +7461,7 @@ class InstanceFromMachineImageSchedulingArgs:
7450
7461
  :param pulumi.Input['InstanceFromMachineImageSchedulingMaxRunDurationArgs'] max_run_duration: The timeout for new network connections to hosts.
7451
7462
  :param pulumi.Input[Sequence[pulumi.Input['InstanceFromMachineImageSchedulingNodeAffinityArgs']]] node_affinities: Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.
7452
7463
  :param pulumi.Input[str] on_host_maintenance: Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,
7464
+ :param pulumi.Input['InstanceFromMachineImageSchedulingOnInstanceStopActionArgs'] on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
7453
7465
  :param pulumi.Input[bool] preemptible: Whether the instance is preemptible.
7454
7466
  :param pulumi.Input[str] provisioning_model: Whether the instance is spot. If this is set as SPOT.
7455
7467
  """
@@ -7469,6 +7481,8 @@ class InstanceFromMachineImageSchedulingArgs:
7469
7481
  pulumi.set(__self__, "node_affinities", node_affinities)
7470
7482
  if on_host_maintenance is not None:
7471
7483
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
7484
+ if on_instance_stop_action is not None:
7485
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
7472
7486
  if preemptible is not None:
7473
7487
  pulumi.set(__self__, "preemptible", preemptible)
7474
7488
  if provisioning_model is not None:
@@ -7570,6 +7584,18 @@ class InstanceFromMachineImageSchedulingArgs:
7570
7584
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
7571
7585
  pulumi.set(self, "on_host_maintenance", value)
7572
7586
 
7587
+ @property
7588
+ @pulumi.getter(name="onInstanceStopAction")
7589
+ def on_instance_stop_action(self) -> Optional[pulumi.Input['InstanceFromMachineImageSchedulingOnInstanceStopActionArgs']]:
7590
+ """
7591
+ Defines the behaviour for instances with the instance_termination_action.
7592
+ """
7593
+ return pulumi.get(self, "on_instance_stop_action")
7594
+
7595
+ @on_instance_stop_action.setter
7596
+ def on_instance_stop_action(self, value: Optional[pulumi.Input['InstanceFromMachineImageSchedulingOnInstanceStopActionArgs']]):
7597
+ pulumi.set(self, "on_instance_stop_action", value)
7598
+
7573
7599
  @property
7574
7600
  @pulumi.getter
7575
7601
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -7725,6 +7751,29 @@ class InstanceFromMachineImageSchedulingNodeAffinityArgs:
7725
7751
  pulumi.set(self, "values", value)
7726
7752
 
7727
7753
 
7754
+ @pulumi.input_type
7755
+ class InstanceFromMachineImageSchedulingOnInstanceStopActionArgs:
7756
+ def __init__(__self__, *,
7757
+ discard_local_ssd: Optional[pulumi.Input[bool]] = None):
7758
+ """
7759
+ :param pulumi.Input[bool] discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
7760
+ """
7761
+ if discard_local_ssd is not None:
7762
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
7763
+
7764
+ @property
7765
+ @pulumi.getter(name="discardLocalSsd")
7766
+ def discard_local_ssd(self) -> Optional[pulumi.Input[bool]]:
7767
+ """
7768
+ If true, the contents of any attached Local SSD disks will be discarded.
7769
+ """
7770
+ return pulumi.get(self, "discard_local_ssd")
7771
+
7772
+ @discard_local_ssd.setter
7773
+ def discard_local_ssd(self, value: Optional[pulumi.Input[bool]]):
7774
+ pulumi.set(self, "discard_local_ssd", value)
7775
+
7776
+
7728
7777
  @pulumi.input_type
7729
7778
  class InstanceFromMachineImageScratchDiskArgs:
7730
7779
  def __init__(__self__, *,
@@ -8988,6 +9037,7 @@ class InstanceFromTemplateSchedulingArgs:
8988
9037
  min_node_cpus: Optional[pulumi.Input[int]] = None,
8989
9038
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceFromTemplateSchedulingNodeAffinityArgs']]]] = None,
8990
9039
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
9040
+ on_instance_stop_action: Optional[pulumi.Input['InstanceFromTemplateSchedulingOnInstanceStopActionArgs']] = None,
8991
9041
  preemptible: Optional[pulumi.Input[bool]] = None,
8992
9042
  provisioning_model: Optional[pulumi.Input[str]] = None):
8993
9043
  """
@@ -9001,6 +9051,7 @@ class InstanceFromTemplateSchedulingArgs:
9001
9051
  :param pulumi.Input['InstanceFromTemplateSchedulingMaxRunDurationArgs'] max_run_duration: The timeout for new network connections to hosts.
9002
9052
  :param pulumi.Input[Sequence[pulumi.Input['InstanceFromTemplateSchedulingNodeAffinityArgs']]] node_affinities: Specifies node affinities or anti-affinities to determine which sole-tenant nodes your instances and managed instance groups will use as host systems.
9003
9053
  :param pulumi.Input[str] on_host_maintenance: Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,
9054
+ :param pulumi.Input['InstanceFromTemplateSchedulingOnInstanceStopActionArgs'] on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
9004
9055
  :param pulumi.Input[bool] preemptible: Whether the instance is preemptible.
9005
9056
  :param pulumi.Input[str] provisioning_model: Whether the instance is spot. If this is set as SPOT.
9006
9057
  """
@@ -9020,6 +9071,8 @@ class InstanceFromTemplateSchedulingArgs:
9020
9071
  pulumi.set(__self__, "node_affinities", node_affinities)
9021
9072
  if on_host_maintenance is not None:
9022
9073
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
9074
+ if on_instance_stop_action is not None:
9075
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
9023
9076
  if preemptible is not None:
9024
9077
  pulumi.set(__self__, "preemptible", preemptible)
9025
9078
  if provisioning_model is not None:
@@ -9121,6 +9174,18 @@ class InstanceFromTemplateSchedulingArgs:
9121
9174
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
9122
9175
  pulumi.set(self, "on_host_maintenance", value)
9123
9176
 
9177
+ @property
9178
+ @pulumi.getter(name="onInstanceStopAction")
9179
+ def on_instance_stop_action(self) -> Optional[pulumi.Input['InstanceFromTemplateSchedulingOnInstanceStopActionArgs']]:
9180
+ """
9181
+ Defines the behaviour for instances with the instance_termination_action.
9182
+ """
9183
+ return pulumi.get(self, "on_instance_stop_action")
9184
+
9185
+ @on_instance_stop_action.setter
9186
+ def on_instance_stop_action(self, value: Optional[pulumi.Input['InstanceFromTemplateSchedulingOnInstanceStopActionArgs']]):
9187
+ pulumi.set(self, "on_instance_stop_action", value)
9188
+
9124
9189
  @property
9125
9190
  @pulumi.getter
9126
9191
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -9276,6 +9341,29 @@ class InstanceFromTemplateSchedulingNodeAffinityArgs:
9276
9341
  pulumi.set(self, "values", value)
9277
9342
 
9278
9343
 
9344
+ @pulumi.input_type
9345
+ class InstanceFromTemplateSchedulingOnInstanceStopActionArgs:
9346
+ def __init__(__self__, *,
9347
+ discard_local_ssd: Optional[pulumi.Input[bool]] = None):
9348
+ """
9349
+ :param pulumi.Input[bool] discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
9350
+ """
9351
+ if discard_local_ssd is not None:
9352
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
9353
+
9354
+ @property
9355
+ @pulumi.getter(name="discardLocalSsd")
9356
+ def discard_local_ssd(self) -> Optional[pulumi.Input[bool]]:
9357
+ """
9358
+ If true, the contents of any attached Local SSD disks will be discarded.
9359
+ """
9360
+ return pulumi.get(self, "discard_local_ssd")
9361
+
9362
+ @discard_local_ssd.setter
9363
+ def discard_local_ssd(self, value: Optional[pulumi.Input[bool]]):
9364
+ pulumi.set(self, "discard_local_ssd", value)
9365
+
9366
+
9279
9367
  @pulumi.input_type
9280
9368
  class InstanceFromTemplateScratchDiskArgs:
9281
9369
  def __init__(__self__, *,
@@ -11036,6 +11124,7 @@ class InstanceSchedulingArgs:
11036
11124
  min_node_cpus: Optional[pulumi.Input[int]] = None,
11037
11125
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceSchedulingNodeAffinityArgs']]]] = None,
11038
11126
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
11127
+ on_instance_stop_action: Optional[pulumi.Input['InstanceSchedulingOnInstanceStopActionArgs']] = None,
11039
11128
  preemptible: Optional[pulumi.Input[bool]] = None,
11040
11129
  provisioning_model: Optional[pulumi.Input[str]] = None):
11041
11130
  """
@@ -11048,8 +11137,7 @@ class InstanceSchedulingArgs:
11048
11137
  between 0 and 168 hours with hour granularity and the default value being 1
11049
11138
  hour.
11050
11139
  :param pulumi.Input[str] maintenance_interval: Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.
11051
- :param pulumi.Input['InstanceSchedulingMaxRunDurationArgs'] max_run_duration: The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Only support `DELETE` `instance_termination_action` at this point. Structure is documented below.
11052
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
11140
+ :param pulumi.Input['InstanceSchedulingMaxRunDurationArgs'] max_run_duration: The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Structure is documented below.
11053
11141
  :param pulumi.Input[int] min_node_cpus: The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node.
11054
11142
  :param pulumi.Input[Sequence[pulumi.Input['InstanceSchedulingNodeAffinityArgs']]] node_affinities: Specifies node affinities or anti-affinities
11055
11143
  to determine which sole-tenant nodes your instances and managed instance
@@ -11059,6 +11147,7 @@ class InstanceSchedulingArgs:
11059
11147
  :param pulumi.Input[str] on_host_maintenance: Describes maintenance behavior for the
11060
11148
  instance. Can be MIGRATE or TERMINATE, for more info, read
11061
11149
  [here](https://cloud.google.com/compute/docs/instances/setting-instance-scheduling-options).
11150
+ :param pulumi.Input['InstanceSchedulingOnInstanceStopActionArgs'] on_instance_stop_action: Specifies the action to be performed when the instance is terminated using `max_run_duration` and `STOP` `instance_termination_action`. Only support `true` `discard_local_ssd` at this point. Structure is documented below.
11062
11151
  :param pulumi.Input[bool] preemptible: Specifies if the instance is preemptible.
11063
11152
  If this field is set to true, then `automatic_restart` must be
11064
11153
  set to false. Defaults to false.
@@ -11083,6 +11172,8 @@ class InstanceSchedulingArgs:
11083
11172
  pulumi.set(__self__, "node_affinities", node_affinities)
11084
11173
  if on_host_maintenance is not None:
11085
11174
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
11175
+ if on_instance_stop_action is not None:
11176
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
11086
11177
  if preemptible is not None:
11087
11178
  pulumi.set(__self__, "preemptible", preemptible)
11088
11179
  if provisioning_model is not None:
@@ -11145,8 +11236,7 @@ class InstanceSchedulingArgs:
11145
11236
  @pulumi.getter(name="maxRunDuration")
11146
11237
  def max_run_duration(self) -> Optional[pulumi.Input['InstanceSchedulingMaxRunDurationArgs']]:
11147
11238
  """
11148
- The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Only support `DELETE` `instance_termination_action` at this point. Structure is documented below.
11149
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
11239
+ The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Structure is documented below.
11150
11240
  """
11151
11241
  return pulumi.get(self, "max_run_duration")
11152
11242
 
@@ -11196,6 +11286,18 @@ class InstanceSchedulingArgs:
11196
11286
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
11197
11287
  pulumi.set(self, "on_host_maintenance", value)
11198
11288
 
11289
+ @property
11290
+ @pulumi.getter(name="onInstanceStopAction")
11291
+ def on_instance_stop_action(self) -> Optional[pulumi.Input['InstanceSchedulingOnInstanceStopActionArgs']]:
11292
+ """
11293
+ Specifies the action to be performed when the instance is terminated using `max_run_duration` and `STOP` `instance_termination_action`. Only support `true` `discard_local_ssd` at this point. Structure is documented below.
11294
+ """
11295
+ return pulumi.get(self, "on_instance_stop_action")
11296
+
11297
+ @on_instance_stop_action.setter
11298
+ def on_instance_stop_action(self, value: Optional[pulumi.Input['InstanceSchedulingOnInstanceStopActionArgs']]):
11299
+ pulumi.set(self, "on_instance_stop_action", value)
11300
+
11199
11301
  @property
11200
11302
  @pulumi.getter
11201
11303
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -11278,12 +11380,13 @@ class InstanceSchedulingMaxRunDurationArgs:
11278
11380
  seconds: pulumi.Input[int],
11279
11381
  nanos: Optional[pulumi.Input[int]] = None):
11280
11382
  """
11281
- :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
11282
- Must be from 0 to 315,576,000,000 inclusive.
11383
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second. Must be from 0 to
11384
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
11385
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
11283
11386
  :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
11284
- resolution. Durations less than one second are represented
11285
- with a 0 seconds field and a positive nanos field. Must
11286
- be from 0 to 999,999,999 inclusive.
11387
+ resolution. Durations less than one second are represented with a 0
11388
+ `seconds` field and a positive `nanos` field. Must be from 0 to
11389
+ 999,999,999 inclusive.
11287
11390
  """
11288
11391
  pulumi.set(__self__, "seconds", seconds)
11289
11392
  if nanos is not None:
@@ -11293,8 +11396,9 @@ class InstanceSchedulingMaxRunDurationArgs:
11293
11396
  @pulumi.getter
11294
11397
  def seconds(self) -> pulumi.Input[int]:
11295
11398
  """
11296
- Span of time at a resolution of a second.
11297
- Must be from 0 to 315,576,000,000 inclusive.
11399
+ Span of time at a resolution of a second. Must be from 0 to
11400
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
11401
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
11298
11402
  """
11299
11403
  return pulumi.get(self, "seconds")
11300
11404
 
@@ -11307,9 +11411,9 @@ class InstanceSchedulingMaxRunDurationArgs:
11307
11411
  def nanos(self) -> Optional[pulumi.Input[int]]:
11308
11412
  """
11309
11413
  Span of time that's a fraction of a second at nanosecond
11310
- resolution. Durations less than one second are represented
11311
- with a 0 seconds field and a positive nanos field. Must
11312
- be from 0 to 999,999,999 inclusive.
11414
+ resolution. Durations less than one second are represented with a 0
11415
+ `seconds` field and a positive `nanos` field. Must be from 0 to
11416
+ 999,999,999 inclusive.
11313
11417
  """
11314
11418
  return pulumi.get(self, "nanos")
11315
11419
 
@@ -11372,6 +11476,29 @@ class InstanceSchedulingNodeAffinityArgs:
11372
11476
  pulumi.set(self, "values", value)
11373
11477
 
11374
11478
 
11479
+ @pulumi.input_type
11480
+ class InstanceSchedulingOnInstanceStopActionArgs:
11481
+ def __init__(__self__, *,
11482
+ discard_local_ssd: Optional[pulumi.Input[bool]] = None):
11483
+ """
11484
+ :param pulumi.Input[bool] discard_local_ssd: Whether to discard local SSDs attached to the VM while terminating using `max_run_duration`. Only supports `true` at this point.
11485
+ """
11486
+ if discard_local_ssd is not None:
11487
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
11488
+
11489
+ @property
11490
+ @pulumi.getter(name="discardLocalSsd")
11491
+ def discard_local_ssd(self) -> Optional[pulumi.Input[bool]]:
11492
+ """
11493
+ Whether to discard local SSDs attached to the VM while terminating using `max_run_duration`. Only supports `true` at this point.
11494
+ """
11495
+ return pulumi.get(self, "discard_local_ssd")
11496
+
11497
+ @discard_local_ssd.setter
11498
+ def discard_local_ssd(self, value: Optional[pulumi.Input[bool]]):
11499
+ pulumi.set(self, "discard_local_ssd", value)
11500
+
11501
+
11375
11502
  @pulumi.input_type
11376
11503
  class InstanceScratchDiskArgs:
11377
11504
  def __init__(__self__, *,
@@ -12780,6 +12907,7 @@ class InstanceTemplateSchedulingArgs:
12780
12907
  min_node_cpus: Optional[pulumi.Input[int]] = None,
12781
12908
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingNodeAffinityArgs']]]] = None,
12782
12909
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
12910
+ on_instance_stop_action: Optional[pulumi.Input['InstanceTemplateSchedulingOnInstanceStopActionArgs']] = None,
12783
12911
  preemptible: Optional[pulumi.Input[bool]] = None,
12784
12912
  provisioning_model: Optional[pulumi.Input[str]] = None):
12785
12913
  """
@@ -12792,8 +12920,7 @@ class InstanceTemplateSchedulingArgs:
12792
12920
  between 0 and 168 hours with hour granularity and the default value being 1
12793
12921
  hour.
12794
12922
  :param pulumi.Input[str] maintenance_interval: Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.
12795
- :param pulumi.Input['InstanceTemplateSchedulingMaxRunDurationArgs'] max_run_duration: The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Only support `DELETE` `instance_termination_action` at this point. Structure is documented below.
12796
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
12923
+ :param pulumi.Input['InstanceTemplateSchedulingMaxRunDurationArgs'] max_run_duration: The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Structure is documented below.
12797
12924
  :param pulumi.Input[int] min_node_cpus: Minimum number of cpus for the instance.
12798
12925
  :param pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingNodeAffinityArgs']]] node_affinities: Specifies node affinities or anti-affinities
12799
12926
  to determine which sole-tenant nodes your instances and managed instance
@@ -12802,6 +12929,7 @@ class InstanceTemplateSchedulingArgs:
12802
12929
  Structure documented below.
12803
12930
  :param pulumi.Input[str] on_host_maintenance: Defines the maintenance behavior for this
12804
12931
  instance.
12932
+ :param pulumi.Input['InstanceTemplateSchedulingOnInstanceStopActionArgs'] on_instance_stop_action: Specifies the action to be performed when the instance is terminated using `max_run_duration` and `STOP` `instance_termination_action`. Only support `true` `discard_local_ssd` at this point. Structure is documented below.
12805
12933
  :param pulumi.Input[bool] preemptible: Allows instance to be preempted. This defaults to
12806
12934
  false. Read more on this
12807
12935
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -12826,6 +12954,8 @@ class InstanceTemplateSchedulingArgs:
12826
12954
  pulumi.set(__self__, "node_affinities", node_affinities)
12827
12955
  if on_host_maintenance is not None:
12828
12956
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
12957
+ if on_instance_stop_action is not None:
12958
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
12829
12959
  if preemptible is not None:
12830
12960
  pulumi.set(__self__, "preemptible", preemptible)
12831
12961
  if provisioning_model is not None:
@@ -12888,8 +13018,7 @@ class InstanceTemplateSchedulingArgs:
12888
13018
  @pulumi.getter(name="maxRunDuration")
12889
13019
  def max_run_duration(self) -> Optional[pulumi.Input['InstanceTemplateSchedulingMaxRunDurationArgs']]:
12890
13020
  """
12891
- The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Only support `DELETE` `instance_termination_action` at this point. Structure is documented below.
12892
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
13021
+ The duration of the instance. Instance will run and be terminated after then, the termination action could be defined in `instance_termination_action`. Structure is documented below.
12893
13022
  """
12894
13023
  return pulumi.get(self, "max_run_duration")
12895
13024
 
@@ -12938,6 +13067,18 @@ class InstanceTemplateSchedulingArgs:
12938
13067
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
12939
13068
  pulumi.set(self, "on_host_maintenance", value)
12940
13069
 
13070
+ @property
13071
+ @pulumi.getter(name="onInstanceStopAction")
13072
+ def on_instance_stop_action(self) -> Optional[pulumi.Input['InstanceTemplateSchedulingOnInstanceStopActionArgs']]:
13073
+ """
13074
+ Specifies the action to be performed when the instance is terminated using `max_run_duration` and `STOP` `instance_termination_action`. Only support `true` `discard_local_ssd` at this point. Structure is documented below.
13075
+ """
13076
+ return pulumi.get(self, "on_instance_stop_action")
13077
+
13078
+ @on_instance_stop_action.setter
13079
+ def on_instance_stop_action(self, value: Optional[pulumi.Input['InstanceTemplateSchedulingOnInstanceStopActionArgs']]):
13080
+ pulumi.set(self, "on_instance_stop_action", value)
13081
+
12941
13082
  @property
12942
13083
  @pulumi.getter
12943
13084
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -13020,12 +13161,13 @@ class InstanceTemplateSchedulingMaxRunDurationArgs:
13020
13161
  seconds: pulumi.Input[int],
13021
13162
  nanos: Optional[pulumi.Input[int]] = None):
13022
13163
  """
13023
- :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
13024
- Must be from 0 to 315,576,000,000 inclusive.
13164
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second. Must be from 0 to
13165
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
13166
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
13025
13167
  :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
13026
- resolution. Durations less than one second are represented
13027
- with a 0 seconds field and a positive nanos field. Must
13028
- be from 0 to 999,999,999 inclusive.
13168
+ resolution. Durations less than one second are represented with a 0
13169
+ `seconds` field and a positive `nanos` field. Must be from 0 to
13170
+ 999,999,999 inclusive.
13029
13171
  """
13030
13172
  pulumi.set(__self__, "seconds", seconds)
13031
13173
  if nanos is not None:
@@ -13035,8 +13177,9 @@ class InstanceTemplateSchedulingMaxRunDurationArgs:
13035
13177
  @pulumi.getter
13036
13178
  def seconds(self) -> pulumi.Input[int]:
13037
13179
  """
13038
- Span of time at a resolution of a second.
13039
- Must be from 0 to 315,576,000,000 inclusive.
13180
+ Span of time at a resolution of a second. Must be from 0 to
13181
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
13182
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
13040
13183
  """
13041
13184
  return pulumi.get(self, "seconds")
13042
13185
 
@@ -13049,9 +13192,9 @@ class InstanceTemplateSchedulingMaxRunDurationArgs:
13049
13192
  def nanos(self) -> Optional[pulumi.Input[int]]:
13050
13193
  """
13051
13194
  Span of time that's a fraction of a second at nanosecond
13052
- resolution. Durations less than one second are represented
13053
- with a 0 seconds field and a positive nanos field. Must
13054
- be from 0 to 999,999,999 inclusive.
13195
+ resolution. Durations less than one second are represented with a 0
13196
+ `seconds` field and a positive `nanos` field. Must be from 0 to
13197
+ 999,999,999 inclusive.
13055
13198
  """
13056
13199
  return pulumi.get(self, "nanos")
13057
13200
 
@@ -13110,6 +13253,29 @@ class InstanceTemplateSchedulingNodeAffinityArgs:
13110
13253
  pulumi.set(self, "values", value)
13111
13254
 
13112
13255
 
13256
+ @pulumi.input_type
13257
+ class InstanceTemplateSchedulingOnInstanceStopActionArgs:
13258
+ def __init__(__self__, *,
13259
+ discard_local_ssd: Optional[pulumi.Input[bool]] = None):
13260
+ """
13261
+ :param pulumi.Input[bool] discard_local_ssd: Whether to discard local SSDs attached to the VM while terminating using `max_run_duration`. Only supports `true` at this point.
13262
+ """
13263
+ if discard_local_ssd is not None:
13264
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
13265
+
13266
+ @property
13267
+ @pulumi.getter(name="discardLocalSsd")
13268
+ def discard_local_ssd(self) -> Optional[pulumi.Input[bool]]:
13269
+ """
13270
+ Whether to discard local SSDs attached to the VM while terminating using `max_run_duration`. Only supports `true` at this point.
13271
+ """
13272
+ return pulumi.get(self, "discard_local_ssd")
13273
+
13274
+ @discard_local_ssd.setter
13275
+ def discard_local_ssd(self, value: Optional[pulumi.Input[bool]]):
13276
+ pulumi.set(self, "discard_local_ssd", value)
13277
+
13278
+
13113
13279
  @pulumi.input_type
13114
13280
  class InstanceTemplateServiceAccountArgs:
13115
13281
  def __init__(__self__, *,
@@ -13250,6 +13416,362 @@ class InterconnectAttachmentPrivateInterconnectInfoArgs:
13250
13416
  pulumi.set(self, "tag8021q", value)
13251
13417
 
13252
13418
 
13419
+ @pulumi.input_type
13420
+ class InterconnectCircuitInfoArgs:
13421
+ def __init__(__self__, *,
13422
+ customer_demarc_id: Optional[pulumi.Input[str]] = None,
13423
+ google_circuit_id: Optional[pulumi.Input[str]] = None,
13424
+ google_demarc_id: Optional[pulumi.Input[str]] = None):
13425
+ """
13426
+ :param pulumi.Input[str] customer_demarc_id: (Output)
13427
+ Customer-side demarc ID for this circuit.
13428
+ :param pulumi.Input[str] google_circuit_id: (Output)
13429
+ Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
13430
+ :param pulumi.Input[str] google_demarc_id: (Output)
13431
+ Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by
13432
+ Google to the customer in the LOA.
13433
+ """
13434
+ if customer_demarc_id is not None:
13435
+ pulumi.set(__self__, "customer_demarc_id", customer_demarc_id)
13436
+ if google_circuit_id is not None:
13437
+ pulumi.set(__self__, "google_circuit_id", google_circuit_id)
13438
+ if google_demarc_id is not None:
13439
+ pulumi.set(__self__, "google_demarc_id", google_demarc_id)
13440
+
13441
+ @property
13442
+ @pulumi.getter(name="customerDemarcId")
13443
+ def customer_demarc_id(self) -> Optional[pulumi.Input[str]]:
13444
+ """
13445
+ (Output)
13446
+ Customer-side demarc ID for this circuit.
13447
+ """
13448
+ return pulumi.get(self, "customer_demarc_id")
13449
+
13450
+ @customer_demarc_id.setter
13451
+ def customer_demarc_id(self, value: Optional[pulumi.Input[str]]):
13452
+ pulumi.set(self, "customer_demarc_id", value)
13453
+
13454
+ @property
13455
+ @pulumi.getter(name="googleCircuitId")
13456
+ def google_circuit_id(self) -> Optional[pulumi.Input[str]]:
13457
+ """
13458
+ (Output)
13459
+ Google-assigned unique ID for this circuit. Assigned at circuit turn-up.
13460
+ """
13461
+ return pulumi.get(self, "google_circuit_id")
13462
+
13463
+ @google_circuit_id.setter
13464
+ def google_circuit_id(self, value: Optional[pulumi.Input[str]]):
13465
+ pulumi.set(self, "google_circuit_id", value)
13466
+
13467
+ @property
13468
+ @pulumi.getter(name="googleDemarcId")
13469
+ def google_demarc_id(self) -> Optional[pulumi.Input[str]]:
13470
+ """
13471
+ (Output)
13472
+ Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by
13473
+ Google to the customer in the LOA.
13474
+ """
13475
+ return pulumi.get(self, "google_demarc_id")
13476
+
13477
+ @google_demarc_id.setter
13478
+ def google_demarc_id(self, value: Optional[pulumi.Input[str]]):
13479
+ pulumi.set(self, "google_demarc_id", value)
13480
+
13481
+
13482
+ @pulumi.input_type
13483
+ class InterconnectExpectedOutageArgs:
13484
+ def __init__(__self__, *,
13485
+ affected_circuits: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
13486
+ description: Optional[pulumi.Input[str]] = None,
13487
+ end_time: Optional[pulumi.Input[str]] = None,
13488
+ issue_type: Optional[pulumi.Input[str]] = None,
13489
+ name: Optional[pulumi.Input[str]] = None,
13490
+ source: Optional[pulumi.Input[str]] = None,
13491
+ start_time: Optional[pulumi.Input[str]] = None,
13492
+ state: Optional[pulumi.Input[str]] = None):
13493
+ """
13494
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] affected_circuits: (Output)
13495
+ If issueType is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be
13496
+ affected.
13497
+ :param pulumi.Input[str] description: An optional description of this resource. Provide this property when you create the resource.
13498
+ :param pulumi.Input[str] end_time: (Output)
13499
+ Scheduled end time for the outage (milliseconds since Unix epoch).
13500
+ :param pulumi.Input[str] issue_type: (Output)
13501
+ Form this outage is expected to take. Note that the versions of this enum prefixed with
13502
+ "IT_" have been deprecated in favor of the unprefixed values. Can take one of the
13503
+ following values:
13504
+ - OUTAGE: The Interconnect may be completely out of service for some or all of the
13505
+ specified window.
13506
+ - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain
13507
+ up, but with reduced bandwidth.
13508
+ :param pulumi.Input[str] name: Name of the resource. Provided by the client when the resource is created. The name must be
13509
+ 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters
13510
+ long and match the regular expression `a-z?` which means the first
13511
+ character must be a lowercase letter, and all following characters must be a dash,
13512
+ lowercase letter, or digit, except the last character, which cannot be a dash.
13513
+ :param pulumi.Input[str] source: (Output)
13514
+ The party that generated this notification. Note that the value of NSRC_GOOGLE has been
13515
+ deprecated in favor of GOOGLE. Can take the following value:
13516
+ - GOOGLE: this notification as generated by Google.
13517
+ :param pulumi.Input[str] start_time: (Output)
13518
+ Scheduled start time for the outage (milliseconds since Unix epoch).
13519
+ :param pulumi.Input[str] state: (Output)
13520
+ State of this notification. Note that the versions of this enum prefixed with "NS_" have
13521
+ been deprecated in favor of the unprefixed values. Can take one of the following values:
13522
+ - ACTIVE: This outage notification is active. The event could be in the past, present,
13523
+ or future. See startTime and endTime for scheduling.
13524
+ - CANCELLED: The outage associated with this notification was cancelled before the
13525
+ outage was due to start.
13526
+ - COMPLETED: The outage associated with this notification is complete.
13527
+ """
13528
+ if affected_circuits is not None:
13529
+ pulumi.set(__self__, "affected_circuits", affected_circuits)
13530
+ if description is not None:
13531
+ pulumi.set(__self__, "description", description)
13532
+ if end_time is not None:
13533
+ pulumi.set(__self__, "end_time", end_time)
13534
+ if issue_type is not None:
13535
+ pulumi.set(__self__, "issue_type", issue_type)
13536
+ if name is not None:
13537
+ pulumi.set(__self__, "name", name)
13538
+ if source is not None:
13539
+ pulumi.set(__self__, "source", source)
13540
+ if start_time is not None:
13541
+ pulumi.set(__self__, "start_time", start_time)
13542
+ if state is not None:
13543
+ pulumi.set(__self__, "state", state)
13544
+
13545
+ @property
13546
+ @pulumi.getter(name="affectedCircuits")
13547
+ def affected_circuits(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
13548
+ """
13549
+ (Output)
13550
+ If issueType is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be
13551
+ affected.
13552
+ """
13553
+ return pulumi.get(self, "affected_circuits")
13554
+
13555
+ @affected_circuits.setter
13556
+ def affected_circuits(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
13557
+ pulumi.set(self, "affected_circuits", value)
13558
+
13559
+ @property
13560
+ @pulumi.getter
13561
+ def description(self) -> Optional[pulumi.Input[str]]:
13562
+ """
13563
+ An optional description of this resource. Provide this property when you create the resource.
13564
+ """
13565
+ return pulumi.get(self, "description")
13566
+
13567
+ @description.setter
13568
+ def description(self, value: Optional[pulumi.Input[str]]):
13569
+ pulumi.set(self, "description", value)
13570
+
13571
+ @property
13572
+ @pulumi.getter(name="endTime")
13573
+ def end_time(self) -> Optional[pulumi.Input[str]]:
13574
+ """
13575
+ (Output)
13576
+ Scheduled end time for the outage (milliseconds since Unix epoch).
13577
+ """
13578
+ return pulumi.get(self, "end_time")
13579
+
13580
+ @end_time.setter
13581
+ def end_time(self, value: Optional[pulumi.Input[str]]):
13582
+ pulumi.set(self, "end_time", value)
13583
+
13584
+ @property
13585
+ @pulumi.getter(name="issueType")
13586
+ def issue_type(self) -> Optional[pulumi.Input[str]]:
13587
+ """
13588
+ (Output)
13589
+ Form this outage is expected to take. Note that the versions of this enum prefixed with
13590
+ "IT_" have been deprecated in favor of the unprefixed values. Can take one of the
13591
+ following values:
13592
+ - OUTAGE: The Interconnect may be completely out of service for some or all of the
13593
+ specified window.
13594
+ - PARTIAL_OUTAGE: Some circuits comprising the Interconnect as a whole should remain
13595
+ up, but with reduced bandwidth.
13596
+ """
13597
+ return pulumi.get(self, "issue_type")
13598
+
13599
+ @issue_type.setter
13600
+ def issue_type(self, value: Optional[pulumi.Input[str]]):
13601
+ pulumi.set(self, "issue_type", value)
13602
+
13603
+ @property
13604
+ @pulumi.getter
13605
+ def name(self) -> Optional[pulumi.Input[str]]:
13606
+ """
13607
+ Name of the resource. Provided by the client when the resource is created. The name must be
13608
+ 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters
13609
+ long and match the regular expression `a-z?` which means the first
13610
+ character must be a lowercase letter, and all following characters must be a dash,
13611
+ lowercase letter, or digit, except the last character, which cannot be a dash.
13612
+ """
13613
+ return pulumi.get(self, "name")
13614
+
13615
+ @name.setter
13616
+ def name(self, value: Optional[pulumi.Input[str]]):
13617
+ pulumi.set(self, "name", value)
13618
+
13619
+ @property
13620
+ @pulumi.getter
13621
+ def source(self) -> Optional[pulumi.Input[str]]:
13622
+ """
13623
+ (Output)
13624
+ The party that generated this notification. Note that the value of NSRC_GOOGLE has been
13625
+ deprecated in favor of GOOGLE. Can take the following value:
13626
+ - GOOGLE: this notification as generated by Google.
13627
+ """
13628
+ return pulumi.get(self, "source")
13629
+
13630
+ @source.setter
13631
+ def source(self, value: Optional[pulumi.Input[str]]):
13632
+ pulumi.set(self, "source", value)
13633
+
13634
+ @property
13635
+ @pulumi.getter(name="startTime")
13636
+ def start_time(self) -> Optional[pulumi.Input[str]]:
13637
+ """
13638
+ (Output)
13639
+ Scheduled start time for the outage (milliseconds since Unix epoch).
13640
+ """
13641
+ return pulumi.get(self, "start_time")
13642
+
13643
+ @start_time.setter
13644
+ def start_time(self, value: Optional[pulumi.Input[str]]):
13645
+ pulumi.set(self, "start_time", value)
13646
+
13647
+ @property
13648
+ @pulumi.getter
13649
+ def state(self) -> Optional[pulumi.Input[str]]:
13650
+ """
13651
+ (Output)
13652
+ State of this notification. Note that the versions of this enum prefixed with "NS_" have
13653
+ been deprecated in favor of the unprefixed values. Can take one of the following values:
13654
+ - ACTIVE: This outage notification is active. The event could be in the past, present,
13655
+ or future. See startTime and endTime for scheduling.
13656
+ - CANCELLED: The outage associated with this notification was cancelled before the
13657
+ outage was due to start.
13658
+ - COMPLETED: The outage associated with this notification is complete.
13659
+ """
13660
+ return pulumi.get(self, "state")
13661
+
13662
+ @state.setter
13663
+ def state(self, value: Optional[pulumi.Input[str]]):
13664
+ pulumi.set(self, "state", value)
13665
+
13666
+
13667
+ @pulumi.input_type
13668
+ class InterconnectMacsecArgs:
13669
+ def __init__(__self__, *,
13670
+ pre_shared_keys: pulumi.Input[Sequence[pulumi.Input['InterconnectMacsecPreSharedKeyArgs']]]):
13671
+ """
13672
+ :param pulumi.Input[Sequence[pulumi.Input['InterconnectMacsecPreSharedKeyArgs']]] pre_shared_keys: A keychain placeholder describing a set of named key objects along with their
13673
+ start times. A MACsec CKN/CAK is generated for each key in the key chain.
13674
+ Google router automatically picks the key with the most recent startTime when establishing
13675
+ or re-establishing a MACsec secure link.
13676
+ Structure is documented below.
13677
+ """
13678
+ pulumi.set(__self__, "pre_shared_keys", pre_shared_keys)
13679
+
13680
+ @property
13681
+ @pulumi.getter(name="preSharedKeys")
13682
+ def pre_shared_keys(self) -> pulumi.Input[Sequence[pulumi.Input['InterconnectMacsecPreSharedKeyArgs']]]:
13683
+ """
13684
+ A keychain placeholder describing a set of named key objects along with their
13685
+ start times. A MACsec CKN/CAK is generated for each key in the key chain.
13686
+ Google router automatically picks the key with the most recent startTime when establishing
13687
+ or re-establishing a MACsec secure link.
13688
+ Structure is documented below.
13689
+ """
13690
+ return pulumi.get(self, "pre_shared_keys")
13691
+
13692
+ @pre_shared_keys.setter
13693
+ def pre_shared_keys(self, value: pulumi.Input[Sequence[pulumi.Input['InterconnectMacsecPreSharedKeyArgs']]]):
13694
+ pulumi.set(self, "pre_shared_keys", value)
13695
+
13696
+
13697
+ @pulumi.input_type
13698
+ class InterconnectMacsecPreSharedKeyArgs:
13699
+ def __init__(__self__, *,
13700
+ name: pulumi.Input[str],
13701
+ fail_open: Optional[pulumi.Input[bool]] = None,
13702
+ start_time: Optional[pulumi.Input[str]] = None):
13703
+ """
13704
+ :param pulumi.Input[str] name: A name for this pre-shared key. The name must be 1-63 characters long, and
13705
+ comply with RFC1035. Specifically, the name must be 1-63 characters long and match
13706
+ the regular expression `a-z?` which means the first character
13707
+ must be a lowercase letter, and all following characters must be a dash, lowercase
13708
+ letter, or digit, except the last character, which cannot be a dash.
13709
+ :param pulumi.Input[bool] fail_open: If set to true, the Interconnect connection is configured with a should-secure
13710
+ MACsec security policy, that allows the Google router to fallback to cleartext
13711
+ traffic if the MKA session cannot be established. By default, the Interconnect
13712
+ connection is configured with a must-secure security policy that drops all traffic
13713
+ if the MKA session cannot be established with your router.
13714
+ :param pulumi.Input[str] start_time: A RFC3339 timestamp on or after which the key is valid. startTime can be in the
13715
+ future. If the keychain has a single key, startTime can be omitted. If the keychain
13716
+ has multiple keys, startTime is mandatory for each key. The start times of keys must
13717
+ be in increasing order. The start times of two consecutive keys must be at least 6
13718
+ hours apart.
13719
+ """
13720
+ pulumi.set(__self__, "name", name)
13721
+ if fail_open is not None:
13722
+ pulumi.set(__self__, "fail_open", fail_open)
13723
+ if start_time is not None:
13724
+ pulumi.set(__self__, "start_time", start_time)
13725
+
13726
+ @property
13727
+ @pulumi.getter
13728
+ def name(self) -> pulumi.Input[str]:
13729
+ """
13730
+ A name for this pre-shared key. The name must be 1-63 characters long, and
13731
+ comply with RFC1035. Specifically, the name must be 1-63 characters long and match
13732
+ the regular expression `a-z?` which means the first character
13733
+ must be a lowercase letter, and all following characters must be a dash, lowercase
13734
+ letter, or digit, except the last character, which cannot be a dash.
13735
+ """
13736
+ return pulumi.get(self, "name")
13737
+
13738
+ @name.setter
13739
+ def name(self, value: pulumi.Input[str]):
13740
+ pulumi.set(self, "name", value)
13741
+
13742
+ @property
13743
+ @pulumi.getter(name="failOpen")
13744
+ def fail_open(self) -> Optional[pulumi.Input[bool]]:
13745
+ """
13746
+ If set to true, the Interconnect connection is configured with a should-secure
13747
+ MACsec security policy, that allows the Google router to fallback to cleartext
13748
+ traffic if the MKA session cannot be established. By default, the Interconnect
13749
+ connection is configured with a must-secure security policy that drops all traffic
13750
+ if the MKA session cannot be established with your router.
13751
+ """
13752
+ return pulumi.get(self, "fail_open")
13753
+
13754
+ @fail_open.setter
13755
+ def fail_open(self, value: Optional[pulumi.Input[bool]]):
13756
+ pulumi.set(self, "fail_open", value)
13757
+
13758
+ @property
13759
+ @pulumi.getter(name="startTime")
13760
+ def start_time(self) -> Optional[pulumi.Input[str]]:
13761
+ """
13762
+ A RFC3339 timestamp on or after which the key is valid. startTime can be in the
13763
+ future. If the keychain has a single key, startTime can be omitted. If the keychain
13764
+ has multiple keys, startTime is mandatory for each key. The start times of keys must
13765
+ be in increasing order. The start times of two consecutive keys must be at least 6
13766
+ hours apart.
13767
+ """
13768
+ return pulumi.get(self, "start_time")
13769
+
13770
+ @start_time.setter
13771
+ def start_time(self, value: Optional[pulumi.Input[str]]):
13772
+ pulumi.set(self, "start_time", value)
13773
+
13774
+
13253
13775
  @pulumi.input_type
13254
13776
  class MachineImageIamBindingConditionArgs:
13255
13777
  def __init__(__self__, *,
@@ -20730,6 +21252,7 @@ class RegionInstanceTemplateSchedulingArgs:
20730
21252
  min_node_cpus: Optional[pulumi.Input[int]] = None,
20731
21253
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateSchedulingNodeAffinityArgs']]]] = None,
20732
21254
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
21255
+ on_instance_stop_action: Optional[pulumi.Input['RegionInstanceTemplateSchedulingOnInstanceStopActionArgs']] = None,
20733
21256
  preemptible: Optional[pulumi.Input[bool]] = None,
20734
21257
  provisioning_model: Optional[pulumi.Input[str]] = None):
20735
21258
  """
@@ -20751,6 +21274,7 @@ class RegionInstanceTemplateSchedulingArgs:
20751
21274
  Structure documented below.
20752
21275
  :param pulumi.Input[str] on_host_maintenance: Defines the maintenance behavior for this
20753
21276
  instance.
21277
+ :param pulumi.Input['RegionInstanceTemplateSchedulingOnInstanceStopActionArgs'] on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
20754
21278
  :param pulumi.Input[bool] preemptible: Allows instance to be preempted. This defaults to
20755
21279
  false. Read more on this
20756
21280
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -20775,6 +21299,8 @@ class RegionInstanceTemplateSchedulingArgs:
20775
21299
  pulumi.set(__self__, "node_affinities", node_affinities)
20776
21300
  if on_host_maintenance is not None:
20777
21301
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
21302
+ if on_instance_stop_action is not None:
21303
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
20778
21304
  if preemptible is not None:
20779
21305
  pulumi.set(__self__, "preemptible", preemptible)
20780
21306
  if provisioning_model is not None:
@@ -20886,6 +21412,18 @@ class RegionInstanceTemplateSchedulingArgs:
20886
21412
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
20887
21413
  pulumi.set(self, "on_host_maintenance", value)
20888
21414
 
21415
+ @property
21416
+ @pulumi.getter(name="onInstanceStopAction")
21417
+ def on_instance_stop_action(self) -> Optional[pulumi.Input['RegionInstanceTemplateSchedulingOnInstanceStopActionArgs']]:
21418
+ """
21419
+ Defines the behaviour for instances with the instance_termination_action.
21420
+ """
21421
+ return pulumi.get(self, "on_instance_stop_action")
21422
+
21423
+ @on_instance_stop_action.setter
21424
+ def on_instance_stop_action(self, value: Optional[pulumi.Input['RegionInstanceTemplateSchedulingOnInstanceStopActionArgs']]):
21425
+ pulumi.set(self, "on_instance_stop_action", value)
21426
+
20889
21427
  @property
20890
21428
  @pulumi.getter
20891
21429
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -21051,13 +21589,36 @@ class RegionInstanceTemplateSchedulingNodeAffinityArgs:
21051
21589
  pulumi.set(self, "operator", value)
21052
21590
 
21053
21591
  @property
21054
- @pulumi.getter
21055
- def values(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
21056
- return pulumi.get(self, "values")
21592
+ @pulumi.getter
21593
+ def values(self) -> pulumi.Input[Sequence[pulumi.Input[str]]]:
21594
+ return pulumi.get(self, "values")
21595
+
21596
+ @values.setter
21597
+ def values(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
21598
+ pulumi.set(self, "values", value)
21599
+
21600
+
21601
+ @pulumi.input_type
21602
+ class RegionInstanceTemplateSchedulingOnInstanceStopActionArgs:
21603
+ def __init__(__self__, *,
21604
+ discard_local_ssd: Optional[pulumi.Input[bool]] = None):
21605
+ """
21606
+ :param pulumi.Input[bool] discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
21607
+ """
21608
+ if discard_local_ssd is not None:
21609
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
21610
+
21611
+ @property
21612
+ @pulumi.getter(name="discardLocalSsd")
21613
+ def discard_local_ssd(self) -> Optional[pulumi.Input[bool]]:
21614
+ """
21615
+ If true, the contents of any attached Local SSD disks will be discarded.
21616
+ """
21617
+ return pulumi.get(self, "discard_local_ssd")
21057
21618
 
21058
- @values.setter
21059
- def values(self, value: pulumi.Input[Sequence[pulumi.Input[str]]]):
21060
- pulumi.set(self, "values", value)
21619
+ @discard_local_ssd.setter
21620
+ def discard_local_ssd(self, value: Optional[pulumi.Input[bool]]):
21621
+ pulumi.set(self, "discard_local_ssd", value)
21061
21622
 
21062
21623
 
21063
21624
  @pulumi.input_type
@@ -22142,17 +22703,22 @@ class RegionSecurityPolicyDdosProtectionConfigArgs:
22142
22703
  class RegionSecurityPolicyRuleMatchArgs:
22143
22704
  def __init__(__self__, *,
22144
22705
  config: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs']] = None,
22706
+ expr: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchExprArgs']] = None,
22145
22707
  versioned_expr: Optional[pulumi.Input[str]] = None):
22146
22708
  """
22147
22709
  :param pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs'] config: The configuration options available when specifying versionedExpr.
22148
22710
  This field must be specified if versionedExpr is specified and cannot be specified if versionedExpr is not specified.
22149
22711
  Structure is documented below.
22712
+ :param pulumi.Input['RegionSecurityPolicyRuleMatchExprArgs'] expr: 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.
22713
+ Structure is documented below.
22150
22714
  :param pulumi.Input[str] versioned_expr: Preconfigured versioned expression. If this field is specified, config must also be specified.
22151
22715
  Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config.
22152
22716
  Possible values are: `SRC_IPS_V1`.
22153
22717
  """
22154
22718
  if config is not None:
22155
22719
  pulumi.set(__self__, "config", config)
22720
+ if expr is not None:
22721
+ pulumi.set(__self__, "expr", expr)
22156
22722
  if versioned_expr is not None:
22157
22723
  pulumi.set(__self__, "versioned_expr", versioned_expr)
22158
22724
 
@@ -22170,6 +22736,19 @@ class RegionSecurityPolicyRuleMatchArgs:
22170
22736
  def config(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchConfigArgs']]):
22171
22737
  pulumi.set(self, "config", value)
22172
22738
 
22739
+ @property
22740
+ @pulumi.getter
22741
+ def expr(self) -> Optional[pulumi.Input['RegionSecurityPolicyRuleMatchExprArgs']]:
22742
+ """
22743
+ 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.
22744
+ Structure is documented below.
22745
+ """
22746
+ return pulumi.get(self, "expr")
22747
+
22748
+ @expr.setter
22749
+ def expr(self, value: Optional[pulumi.Input['RegionSecurityPolicyRuleMatchExprArgs']]):
22750
+ pulumi.set(self, "expr", value)
22751
+
22173
22752
  @property
22174
22753
  @pulumi.getter(name="versionedExpr")
22175
22754
  def versioned_expr(self) -> Optional[pulumi.Input[str]]:
@@ -22208,6 +22787,28 @@ class RegionSecurityPolicyRuleMatchConfigArgs:
22208
22787
  pulumi.set(self, "src_ip_ranges", value)
22209
22788
 
22210
22789
 
22790
+ @pulumi.input_type
22791
+ class RegionSecurityPolicyRuleMatchExprArgs:
22792
+ def __init__(__self__, *,
22793
+ expression: pulumi.Input[str]):
22794
+ """
22795
+ :param pulumi.Input[str] expression: 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.
22796
+ """
22797
+ pulumi.set(__self__, "expression", expression)
22798
+
22799
+ @property
22800
+ @pulumi.getter
22801
+ def expression(self) -> pulumi.Input[str]:
22802
+ """
22803
+ 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.
22804
+ """
22805
+ return pulumi.get(self, "expression")
22806
+
22807
+ @expression.setter
22808
+ def expression(self, value: pulumi.Input[str]):
22809
+ pulumi.set(self, "expression", value)
22810
+
22811
+
22211
22812
  @pulumi.input_type
22212
22813
  class RegionSecurityPolicyRuleNetworkMatchArgs:
22213
22814
  def __init__(__self__, *,
@@ -29803,6 +30404,7 @@ class SecurityPolicyAdvancedOptionsConfigArgs:
29803
30404
  :param pulumi.Input[str] json_parsing: Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
29804
30405
  * `DISABLED` - Don't parse JSON payloads in POST bodies.
29805
30406
  * `STANDARD` - Parse JSON payloads in POST bodies.
30407
+ * `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.
29806
30408
  :param pulumi.Input[str] log_level: Log level to use. Defaults to `NORMAL`.
29807
30409
  * `NORMAL` - Normal log level.
29808
30410
  * `VERBOSE` - Verbose log level.
@@ -29837,6 +30439,7 @@ class SecurityPolicyAdvancedOptionsConfigArgs:
29837
30439
  Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
29838
30440
  * `DISABLED` - Don't parse JSON payloads in POST bodies.
29839
30441
  * `STANDARD` - Parse JSON payloads in POST bodies.
30442
+ * `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.
29840
30443
  """
29841
30444
  return pulumi.get(self, "json_parsing")
29842
30445
 
@@ -30597,102 +31200,73 @@ class SecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs:
30597
31200
  @pulumi.input_type
30598
31201
  class SecurityPolicyRuleRateLimitOptionsArgs:
30599
31202
  def __init__(__self__, *,
30600
- conform_action: pulumi.Input[str],
30601
- exceed_action: pulumi.Input[str],
30602
- rate_limit_threshold: pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs'],
30603
31203
  ban_duration_sec: Optional[pulumi.Input[int]] = None,
30604
31204
  ban_threshold: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs']] = None,
31205
+ conform_action: Optional[pulumi.Input[str]] = None,
30605
31206
  enforce_on_key: Optional[pulumi.Input[str]] = None,
30606
31207
  enforce_on_key_configs: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs']]]] = None,
30607
31208
  enforce_on_key_name: Optional[pulumi.Input[str]] = None,
30608
- exceed_redirect_options: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs']] = None):
31209
+ exceed_action: Optional[pulumi.Input[str]] = None,
31210
+ exceed_redirect_options: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs']] = None,
31211
+ rate_limit_threshold: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']] = None):
30609
31212
  """
30610
- :param pulumi.Input[str] conform_action: Action to take for requests that are under the configured rate limit threshold. Valid option is `allow` only.
30611
- :param pulumi.Input[str] exceed_action: When a request is denied, returns the HTTP response code specified.
30612
- Valid options are `deny()` where valid values for status are 403, 404, 429, and 502.
30613
- :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs'] rate_limit_threshold: Threshold at which to begin ratelimiting. Structure is documented below.
30614
- :param pulumi.Input[int] ban_duration_sec: Can only be specified if the `action` for the rule is `rate_based_ban`.
31213
+ :param pulumi.Input[int] ban_duration_sec: Can only be specified if the action for the rule is "rate_based_ban".
30615
31214
  If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.
30616
- :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs'] ban_threshold: Can only be specified if the `action` for the rule is `rate_based_ban`.
30617
- If specified, the key will be banned for the configured `ban_duration_sec` when the number of requests that exceed the `rate_limit_threshold` also
30618
- exceed this `ban_threshold`. Structure is documented below.
30619
- :param pulumi.Input[str] enforce_on_key: Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
30620
-
30621
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
30622
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
30623
- * `HTTP_HEADER`: The value of the HTTP header whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
30624
- * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under `X-Forwarded-For` HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
30625
- * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
30626
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
30627
- * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
30628
- * `REGION_CODE`: The country/region from which the request originates.
30629
- :param pulumi.Input[Sequence[pulumi.Input['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs']]] enforce_on_key_configs: If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which rate limit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If `enforce_on_key_configs` is specified, `enforce_on_key` must be set to an empty string. Structure is documented below.
30630
-
30631
- **Note:** To avoid the conflict between `enforce_on_key` and `enforce_on_key_configs`, the field `enforce_on_key` needs to be set to an empty string.
31215
+ :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs'] ban_threshold: Can only be specified if the action for the rule is "rate_based_ban".
31216
+ If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
31217
+ Structure is documented below.
31218
+ :param pulumi.Input[str] conform_action: Action to take for requests that are under the configured rate limit threshold.
31219
+ Valid option is "allow" only.
31220
+ :param pulumi.Input[str] enforce_on_key: Determines the key to enforce the rateLimitThreshold on. Possible values are:
31221
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKey" is not configured.
31222
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
31223
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
31224
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
31225
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
31226
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
31227
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
31228
+ * REGION_CODE: The country/region from which the request originates.
31229
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
31230
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
31231
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
31232
+ :param pulumi.Input[Sequence[pulumi.Input['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs']]] enforce_on_key_configs: If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.
31233
+ You can specify up to 3 enforceOnKeyConfigs.
31234
+ If enforceOnKeyConfigs is specified, enforceOnKey must not be specified.
31235
+ Structure is documented below.
30632
31236
  :param pulumi.Input[str] enforce_on_key_name: Rate limit key name applicable only for the following key types:
30633
-
30634
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
30635
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
30636
- :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs'] exceed_redirect_options: Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect.
31237
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
31238
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
31239
+ :param pulumi.Input[str] exceed_action: Action to take for requests that are above the configured rate limit threshold, to either deny with a specified HTTP response code, or redirect to a different endpoint.
31240
+ Valid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.
31241
+ :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs'] exceed_redirect_options: Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect. This field is only supported in Global Security Policies of type CLOUD_ARMOR.
31242
+ Structure is documented below.
31243
+ :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs'] rate_limit_threshold: Threshold at which to begin ratelimiting.
31244
+ Structure is documented below.
30637
31245
  """
30638
- pulumi.set(__self__, "conform_action", conform_action)
30639
- pulumi.set(__self__, "exceed_action", exceed_action)
30640
- pulumi.set(__self__, "rate_limit_threshold", rate_limit_threshold)
30641
31246
  if ban_duration_sec is not None:
30642
31247
  pulumi.set(__self__, "ban_duration_sec", ban_duration_sec)
30643
31248
  if ban_threshold is not None:
30644
31249
  pulumi.set(__self__, "ban_threshold", ban_threshold)
31250
+ if conform_action is not None:
31251
+ pulumi.set(__self__, "conform_action", conform_action)
30645
31252
  if enforce_on_key is not None:
30646
31253
  pulumi.set(__self__, "enforce_on_key", enforce_on_key)
30647
31254
  if enforce_on_key_configs is not None:
30648
31255
  pulumi.set(__self__, "enforce_on_key_configs", enforce_on_key_configs)
30649
31256
  if enforce_on_key_name is not None:
30650
31257
  pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
31258
+ if exceed_action is not None:
31259
+ pulumi.set(__self__, "exceed_action", exceed_action)
30651
31260
  if exceed_redirect_options is not None:
30652
31261
  pulumi.set(__self__, "exceed_redirect_options", exceed_redirect_options)
30653
-
30654
- @property
30655
- @pulumi.getter(name="conformAction")
30656
- def conform_action(self) -> pulumi.Input[str]:
30657
- """
30658
- Action to take for requests that are under the configured rate limit threshold. Valid option is `allow` only.
30659
- """
30660
- return pulumi.get(self, "conform_action")
30661
-
30662
- @conform_action.setter
30663
- def conform_action(self, value: pulumi.Input[str]):
30664
- pulumi.set(self, "conform_action", value)
30665
-
30666
- @property
30667
- @pulumi.getter(name="exceedAction")
30668
- def exceed_action(self) -> pulumi.Input[str]:
30669
- """
30670
- When a request is denied, returns the HTTP response code specified.
30671
- Valid options are `deny()` where valid values for status are 403, 404, 429, and 502.
30672
- """
30673
- return pulumi.get(self, "exceed_action")
30674
-
30675
- @exceed_action.setter
30676
- def exceed_action(self, value: pulumi.Input[str]):
30677
- pulumi.set(self, "exceed_action", value)
30678
-
30679
- @property
30680
- @pulumi.getter(name="rateLimitThreshold")
30681
- def rate_limit_threshold(self) -> pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']:
30682
- """
30683
- Threshold at which to begin ratelimiting. Structure is documented below.
30684
- """
30685
- return pulumi.get(self, "rate_limit_threshold")
30686
-
30687
- @rate_limit_threshold.setter
30688
- def rate_limit_threshold(self, value: pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']):
30689
- pulumi.set(self, "rate_limit_threshold", value)
31262
+ if rate_limit_threshold is not None:
31263
+ pulumi.set(__self__, "rate_limit_threshold", rate_limit_threshold)
30690
31264
 
30691
31265
  @property
30692
31266
  @pulumi.getter(name="banDurationSec")
30693
31267
  def ban_duration_sec(self) -> Optional[pulumi.Input[int]]:
30694
31268
  """
30695
- Can only be specified if the `action` for the rule is `rate_based_ban`.
31269
+ Can only be specified if the action for the rule is "rate_based_ban".
30696
31270
  If specified, determines the time (in seconds) the traffic will continue to be banned by the rate limit after the rate falls below the threshold.
30697
31271
  """
30698
31272
  return pulumi.get(self, "ban_duration_sec")
@@ -30705,9 +31279,9 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
30705
31279
  @pulumi.getter(name="banThreshold")
30706
31280
  def ban_threshold(self) -> Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs']]:
30707
31281
  """
30708
- Can only be specified if the `action` for the rule is `rate_based_ban`.
30709
- If specified, the key will be banned for the configured `ban_duration_sec` when the number of requests that exceed the `rate_limit_threshold` also
30710
- exceed this `ban_threshold`. Structure is documented below.
31282
+ Can only be specified if the action for the rule is "rate_based_ban".
31283
+ If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
31284
+ Structure is documented below.
30711
31285
  """
30712
31286
  return pulumi.get(self, "ban_threshold")
30713
31287
 
@@ -30715,20 +31289,35 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
30715
31289
  def ban_threshold(self, value: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs']]):
30716
31290
  pulumi.set(self, "ban_threshold", value)
30717
31291
 
31292
+ @property
31293
+ @pulumi.getter(name="conformAction")
31294
+ def conform_action(self) -> Optional[pulumi.Input[str]]:
31295
+ """
31296
+ Action to take for requests that are under the configured rate limit threshold.
31297
+ Valid option is "allow" only.
31298
+ """
31299
+ return pulumi.get(self, "conform_action")
31300
+
31301
+ @conform_action.setter
31302
+ def conform_action(self, value: Optional[pulumi.Input[str]]):
31303
+ pulumi.set(self, "conform_action", value)
31304
+
30718
31305
  @property
30719
31306
  @pulumi.getter(name="enforceOnKey")
30720
31307
  def enforce_on_key(self) -> Optional[pulumi.Input[str]]:
30721
31308
  """
30722
- Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
30723
-
30724
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
30725
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
30726
- * `HTTP_HEADER`: The value of the HTTP header whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
30727
- * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under `X-Forwarded-For` HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
30728
- * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
30729
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
30730
- * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
30731
- * `REGION_CODE`: The country/region from which the request originates.
31309
+ Determines the key to enforce the rateLimitThreshold on. Possible values are:
31310
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKey" is not configured.
31311
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
31312
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
31313
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
31314
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
31315
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
31316
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
31317
+ * REGION_CODE: The country/region from which the request originates.
31318
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
31319
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
31320
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
30732
31321
  """
30733
31322
  return pulumi.get(self, "enforce_on_key")
30734
31323
 
@@ -30740,9 +31329,10 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
30740
31329
  @pulumi.getter(name="enforceOnKeyConfigs")
30741
31330
  def enforce_on_key_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs']]]]:
30742
31331
  """
30743
- If specified, any combination of values of enforce_on_key_type/enforce_on_key_name is treated as the key on which rate limit threshold/action is enforced. You can specify up to 3 enforce_on_key_configs. If `enforce_on_key_configs` is specified, `enforce_on_key` must be set to an empty string. Structure is documented below.
30744
-
30745
- **Note:** To avoid the conflict between `enforce_on_key` and `enforce_on_key_configs`, the field `enforce_on_key` needs to be set to an empty string.
31332
+ If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.
31333
+ You can specify up to 3 enforceOnKeyConfigs.
31334
+ If enforceOnKeyConfigs is specified, enforceOnKey must not be specified.
31335
+ Structure is documented below.
30746
31336
  """
30747
31337
  return pulumi.get(self, "enforce_on_key_configs")
30748
31338
 
@@ -30755,9 +31345,8 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
30755
31345
  def enforce_on_key_name(self) -> Optional[pulumi.Input[str]]:
30756
31346
  """
30757
31347
  Rate limit key name applicable only for the following key types:
30758
-
30759
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
30760
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
31348
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
31349
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
30761
31350
  """
30762
31351
  return pulumi.get(self, "enforce_on_key_name")
30763
31352
 
@@ -30765,11 +31354,25 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
30765
31354
  def enforce_on_key_name(self, value: Optional[pulumi.Input[str]]):
30766
31355
  pulumi.set(self, "enforce_on_key_name", value)
30767
31356
 
31357
+ @property
31358
+ @pulumi.getter(name="exceedAction")
31359
+ def exceed_action(self) -> Optional[pulumi.Input[str]]:
31360
+ """
31361
+ Action to take for requests that are above the configured rate limit threshold, to either deny with a specified HTTP response code, or redirect to a different endpoint.
31362
+ Valid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.
31363
+ """
31364
+ return pulumi.get(self, "exceed_action")
31365
+
31366
+ @exceed_action.setter
31367
+ def exceed_action(self, value: Optional[pulumi.Input[str]]):
31368
+ pulumi.set(self, "exceed_action", value)
31369
+
30768
31370
  @property
30769
31371
  @pulumi.getter(name="exceedRedirectOptions")
30770
31372
  def exceed_redirect_options(self) -> Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs']]:
30771
31373
  """
30772
- Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect.
31374
+ Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect. This field is only supported in Global Security Policies of type CLOUD_ARMOR.
31375
+ Structure is documented below.
30773
31376
  """
30774
31377
  return pulumi.get(self, "exceed_redirect_options")
30775
31378
 
@@ -30777,41 +31380,56 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
30777
31380
  def exceed_redirect_options(self, value: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs']]):
30778
31381
  pulumi.set(self, "exceed_redirect_options", value)
30779
31382
 
31383
+ @property
31384
+ @pulumi.getter(name="rateLimitThreshold")
31385
+ def rate_limit_threshold(self) -> Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']]:
31386
+ """
31387
+ Threshold at which to begin ratelimiting.
31388
+ Structure is documented below.
31389
+ """
31390
+ return pulumi.get(self, "rate_limit_threshold")
31391
+
31392
+ @rate_limit_threshold.setter
31393
+ def rate_limit_threshold(self, value: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']]):
31394
+ pulumi.set(self, "rate_limit_threshold", value)
31395
+
30780
31396
 
30781
31397
  @pulumi.input_type
30782
31398
  class SecurityPolicyRuleRateLimitOptionsBanThresholdArgs:
30783
31399
  def __init__(__self__, *,
30784
- count: pulumi.Input[int],
30785
- interval_sec: pulumi.Input[int]):
31400
+ count: Optional[pulumi.Input[int]] = None,
31401
+ interval_sec: Optional[pulumi.Input[int]] = None):
30786
31402
  """
30787
31403
  :param pulumi.Input[int] count: Number of HTTP(S) requests for calculating the threshold.
30788
31404
  :param pulumi.Input[int] interval_sec: Interval over which the threshold is computed.
30789
31405
  """
30790
- pulumi.set(__self__, "count", count)
30791
- pulumi.set(__self__, "interval_sec", interval_sec)
31406
+ if count is not None:
31407
+ pulumi.set(__self__, "count", count)
31408
+ if interval_sec is not None:
31409
+ pulumi.set(__self__, "interval_sec", interval_sec)
30792
31410
 
30793
31411
  @property
30794
31412
  @pulumi.getter
30795
- def count(self) -> pulumi.Input[int]:
31413
+ def count(self) -> Optional[pulumi.Input[int]]:
30796
31414
  """
30797
31415
  Number of HTTP(S) requests for calculating the threshold.
30798
31416
  """
30799
31417
  return pulumi.get(self, "count")
30800
31418
 
30801
31419
  @count.setter
30802
- def count(self, value: pulumi.Input[int]):
31420
+ def count(self, value: Optional[pulumi.Input[int]]):
30803
31421
  pulumi.set(self, "count", value)
30804
31422
 
30805
31423
  @property
30806
31424
  @pulumi.getter(name="intervalSec")
30807
- def interval_sec(self) -> pulumi.Input[int]:
31425
+ def interval_sec(self) -> Optional[pulumi.Input[int]]:
30808
31426
  """
30809
31427
  Interval over which the threshold is computed.
30810
31428
  """
30811
31429
  return pulumi.get(self, "interval_sec")
30812
31430
 
30813
31431
  @interval_sec.setter
30814
- def interval_sec(self, value: pulumi.Input[int]):
31432
+ def interval_sec(self, value: Optional[pulumi.Input[int]]):
30815
31433
  pulumi.set(self, "interval_sec", value)
30816
31434
 
30817
31435
 
@@ -30822,19 +31440,20 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
30822
31440
  enforce_on_key_type: Optional[pulumi.Input[str]] = None):
30823
31441
  """
30824
31442
  :param pulumi.Input[str] enforce_on_key_name: Rate limit key name applicable only for the following key types:
30825
-
30826
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
30827
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
30828
- :param pulumi.Input[str] enforce_on_key_type: Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
30829
-
30830
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
30831
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
30832
- * `HTTP_HEADER`: The value of the HTTP header whose name is configured on `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
30833
- * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
30834
- * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
30835
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
30836
- * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
30837
- * `REGION_CODE`: The country/region from which the request originates.
31443
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
31444
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
31445
+ :param pulumi.Input[str] enforce_on_key_type: Determines the key to enforce the rateLimitThreshold on. Possible values are:
31446
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKeyConfigs" is not configured.
31447
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
31448
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
31449
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
31450
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
31451
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
31452
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
31453
+ * REGION_CODE: The country/region from which the request originates.
31454
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
31455
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
31456
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
30838
31457
  """
30839
31458
  if enforce_on_key_name is not None:
30840
31459
  pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
@@ -30846,9 +31465,8 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
30846
31465
  def enforce_on_key_name(self) -> Optional[pulumi.Input[str]]:
30847
31466
  """
30848
31467
  Rate limit key name applicable only for the following key types:
30849
-
30850
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
30851
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
31468
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
31469
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
30852
31470
  """
30853
31471
  return pulumi.get(self, "enforce_on_key_name")
30854
31472
 
@@ -30860,16 +31478,18 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
30860
31478
  @pulumi.getter(name="enforceOnKeyType")
30861
31479
  def enforce_on_key_type(self) -> Optional[pulumi.Input[str]]:
30862
31480
  """
30863
- Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
30864
-
30865
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
30866
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
30867
- * `HTTP_HEADER`: The value of the HTTP header whose name is configured on `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to `ALL`.
30868
- * `XFF_IP`: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key type defaults to `ALL`.
30869
- * `HTTP_COOKIE`: The value of the HTTP cookie whose name is configured under `enforce_on_key_name`. The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to `ALL`.
30870
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
30871
- * `SNI`: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to `ALL` on a HTTP session.
30872
- * `REGION_CODE`: The country/region from which the request originates.
31481
+ Determines the key to enforce the rateLimitThreshold on. Possible values are:
31482
+ * ALL: A single rate limit threshold is applied to all the requests matching this rule. This is the default value if "enforceOnKeyConfigs" is not configured.
31483
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
31484
+ * HTTP_HEADER: The value of the HTTP header whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the header value. If no such header is present in the request, the key type defaults to ALL.
31485
+ * XFF_IP: The first IP address (i.e. the originating client IP address) specified in the list of IPs under X-Forwarded-For HTTP header. If no such header is present or the value is not a valid IP, the key defaults to the source IP address of the request i.e. key type IP.
31486
+ * HTTP_COOKIE: The value of the HTTP cookie whose name is configured under "enforceOnKeyName". The key value is truncated to the first 128 bytes of the cookie value. If no such cookie is present in the request, the key type defaults to ALL.
31487
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
31488
+ * SNI: Server name indication in the TLS session of the HTTPS request. The key value is truncated to the first 128 bytes. The key type defaults to ALL on a HTTP session.
31489
+ * REGION_CODE: The country/region from which the request originates.
31490
+ * TLS_JA3_FINGERPRINT: JA3 TLS/SSL fingerprint if the client connects using HTTPS, HTTP/2 or HTTP/3. If not available, the key type defaults to ALL.
31491
+ * USER_IP: The IP address of the originating client, which is resolved based on "userIpRequestHeaders" configured with the security policy. If there is no "userIpRequestHeaders" configuration or an IP address cannot be resolved from it, the key type defaults to IP.
31492
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
30873
31493
  """
30874
31494
  return pulumi.get(self, "enforce_on_key_type")
30875
31495
 
@@ -30881,75 +31501,78 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
30881
31501
  @pulumi.input_type
30882
31502
  class SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs:
30883
31503
  def __init__(__self__, *,
30884
- type: pulumi.Input[str],
30885
- target: Optional[pulumi.Input[str]] = None):
31504
+ target: Optional[pulumi.Input[str]] = None,
31505
+ type: Optional[pulumi.Input[str]] = None):
30886
31506
  """
31507
+ :param pulumi.Input[str] target: Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
30887
31508
  :param pulumi.Input[str] type: Type of the redirect action.
30888
- :param pulumi.Input[str] target: Target for the redirect action. This is required if the type is `EXTERNAL_302` and cannot be specified for `GOOGLE_RECAPTCHA`.
30889
31509
  """
30890
- pulumi.set(__self__, "type", type)
30891
31510
  if target is not None:
30892
31511
  pulumi.set(__self__, "target", target)
31512
+ if type is not None:
31513
+ pulumi.set(__self__, "type", type)
30893
31514
 
30894
31515
  @property
30895
31516
  @pulumi.getter
30896
- def type(self) -> pulumi.Input[str]:
31517
+ def target(self) -> Optional[pulumi.Input[str]]:
30897
31518
  """
30898
- Type of the redirect action.
31519
+ Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
30899
31520
  """
30900
- return pulumi.get(self, "type")
31521
+ return pulumi.get(self, "target")
30901
31522
 
30902
- @type.setter
30903
- def type(self, value: pulumi.Input[str]):
30904
- pulumi.set(self, "type", value)
31523
+ @target.setter
31524
+ def target(self, value: Optional[pulumi.Input[str]]):
31525
+ pulumi.set(self, "target", value)
30905
31526
 
30906
31527
  @property
30907
31528
  @pulumi.getter
30908
- def target(self) -> Optional[pulumi.Input[str]]:
31529
+ def type(self) -> Optional[pulumi.Input[str]]:
30909
31530
  """
30910
- Target for the redirect action. This is required if the type is `EXTERNAL_302` and cannot be specified for `GOOGLE_RECAPTCHA`.
31531
+ Type of the redirect action.
30911
31532
  """
30912
- return pulumi.get(self, "target")
31533
+ return pulumi.get(self, "type")
30913
31534
 
30914
- @target.setter
30915
- def target(self, value: Optional[pulumi.Input[str]]):
30916
- pulumi.set(self, "target", value)
31535
+ @type.setter
31536
+ def type(self, value: Optional[pulumi.Input[str]]):
31537
+ pulumi.set(self, "type", value)
30917
31538
 
30918
31539
 
30919
31540
  @pulumi.input_type
30920
31541
  class SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs:
30921
31542
  def __init__(__self__, *,
30922
- count: pulumi.Input[int],
30923
- interval_sec: pulumi.Input[int]):
31543
+ count: Optional[pulumi.Input[int]] = None,
31544
+ interval_sec: Optional[pulumi.Input[int]] = None):
30924
31545
  """
30925
31546
  :param pulumi.Input[int] count: Number of HTTP(S) requests for calculating the threshold.
30926
31547
  :param pulumi.Input[int] interval_sec: Interval over which the threshold is computed.
30927
31548
  """
30928
- pulumi.set(__self__, "count", count)
30929
- pulumi.set(__self__, "interval_sec", interval_sec)
31549
+ if count is not None:
31550
+ pulumi.set(__self__, "count", count)
31551
+ if interval_sec is not None:
31552
+ pulumi.set(__self__, "interval_sec", interval_sec)
30930
31553
 
30931
31554
  @property
30932
31555
  @pulumi.getter
30933
- def count(self) -> pulumi.Input[int]:
31556
+ def count(self) -> Optional[pulumi.Input[int]]:
30934
31557
  """
30935
31558
  Number of HTTP(S) requests for calculating the threshold.
30936
31559
  """
30937
31560
  return pulumi.get(self, "count")
30938
31561
 
30939
31562
  @count.setter
30940
- def count(self, value: pulumi.Input[int]):
31563
+ def count(self, value: Optional[pulumi.Input[int]]):
30941
31564
  pulumi.set(self, "count", value)
30942
31565
 
30943
31566
  @property
30944
31567
  @pulumi.getter(name="intervalSec")
30945
- def interval_sec(self) -> pulumi.Input[int]:
31568
+ def interval_sec(self) -> Optional[pulumi.Input[int]]:
30946
31569
  """
30947
31570
  Interval over which the threshold is computed.
30948
31571
  """
30949
31572
  return pulumi.get(self, "interval_sec")
30950
31573
 
30951
31574
  @interval_sec.setter
30952
- def interval_sec(self, value: pulumi.Input[int]):
31575
+ def interval_sec(self, value: Optional[pulumi.Input[int]]):
30953
31576
  pulumi.set(self, "interval_sec", value)
30954
31577
 
30955
31578