pulumi-gcp 7.24.0a1716588893__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 (179) hide show
  1. pulumi_gcp/__init__.py +88 -0
  2. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +0 -64
  3. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +0 -70
  4. pulumi_gcp/alloydb/backup.py +50 -42
  5. pulumi_gcp/alloydb/cluster.py +56 -48
  6. pulumi_gcp/alloydb/instance.py +50 -42
  7. pulumi_gcp/alloydb/user.py +32 -24
  8. pulumi_gcp/apigateway/api_config.py +0 -114
  9. pulumi_gcp/apigateway/gateway.py +0 -44
  10. pulumi_gcp/apigee/addons_config.py +14 -4
  11. pulumi_gcp/apigee/endpoint_attachment.py +4 -2
  12. pulumi_gcp/apigee/env_group.py +4 -2
  13. pulumi_gcp/apigee/environment.py +4 -2
  14. pulumi_gcp/apigee/instance.py +22 -8
  15. pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +26 -10
  16. pulumi_gcp/apigee/nat_address.py +10 -2
  17. pulumi_gcp/apigee/organization.py +18 -6
  18. pulumi_gcp/apigee/sync_authorization.py +8 -4
  19. pulumi_gcp/apigee/target_server.py +26 -10
  20. pulumi_gcp/appengine/_inputs.py +18 -0
  21. pulumi_gcp/appengine/domain_mapping.py +1 -1
  22. pulumi_gcp/appengine/outputs.py +16 -0
  23. pulumi_gcp/apphub/service.py +40 -20
  24. pulumi_gcp/apphub/service_project_attachment.py +16 -8
  25. pulumi_gcp/apphub/workload.py +0 -418
  26. pulumi_gcp/applicationintegration/auth_config.py +4 -2
  27. pulumi_gcp/artifactregistry/repository.py +14 -12
  28. pulumi_gcp/backupdisasterrecovery/management_server.py +4 -2
  29. pulumi_gcp/bigquery/_inputs.py +286 -2
  30. pulumi_gcp/bigquery/data_transfer_config.py +8 -4
  31. pulumi_gcp/bigquery/job.py +22 -16
  32. pulumi_gcp/bigquery/outputs.py +289 -2
  33. pulumi_gcp/bigquery/table.py +77 -35
  34. pulumi_gcp/certificateauthority/authority.py +10 -2
  35. pulumi_gcp/certificateauthority/certificate.py +8 -4
  36. pulumi_gcp/certificatemanager/certificate.py +84 -80
  37. pulumi_gcp/certificatemanager/certificate_issuance_config.py +32 -30
  38. pulumi_gcp/cloudbuild/bitbucket_server_config.py +12 -6
  39. pulumi_gcp/cloudbuild/trigger.py +22 -14
  40. pulumi_gcp/cloudbuild/worker_pool.py +12 -6
  41. pulumi_gcp/cloudbuildv2/connection.py +10 -2
  42. pulumi_gcp/cloudbuildv2/repository.py +10 -2
  43. pulumi_gcp/cloudfunctionsv2/function.py +110 -66
  44. pulumi_gcp/cloudids/endpoint.py +4 -2
  45. pulumi_gcp/cloudrun/_inputs.py +80 -4
  46. pulumi_gcp/cloudrun/outputs.py +137 -4
  47. pulumi_gcp/cloudrunv2/job.py +32 -20
  48. pulumi_gcp/cloudrunv2/service.py +28 -20
  49. pulumi_gcp/composer/user_workloads_secret.py +4 -4
  50. pulumi_gcp/compute/__init__.py +1 -0
  51. pulumi_gcp/compute/_inputs.py +398 -176
  52. pulumi_gcp/compute/forwarding_rule.py +225 -817
  53. pulumi_gcp/compute/get_subnetworks.py +157 -0
  54. pulumi_gcp/compute/global_forwarding_rule.py +0 -766
  55. pulumi_gcp/compute/instance_group.py +0 -100
  56. pulumi_gcp/compute/instance_group_membership.py +2 -2
  57. pulumi_gcp/compute/interconnect_attachment.py +82 -0
  58. pulumi_gcp/compute/network_endpoint.py +2 -2
  59. pulumi_gcp/compute/network_endpoint_list.py +2 -2
  60. pulumi_gcp/compute/outputs.py +609 -161
  61. pulumi_gcp/compute/packet_mirroring.py +4 -2
  62. pulumi_gcp/compute/region_security_policy_rule.py +4 -2
  63. pulumi_gcp/compute/region_ssl_certificate.py +0 -188
  64. pulumi_gcp/compute/region_ssl_policy.py +39 -40
  65. pulumi_gcp/compute/route.py +10 -2
  66. pulumi_gcp/compute/security_policy_rule.py +55 -1
  67. pulumi_gcp/compute/ssl_certificate.py +0 -166
  68. pulumi_gcp/compute/target_instance.py +4 -2
  69. pulumi_gcp/compute/vpn_gateway.py +12 -2
  70. pulumi_gcp/compute/vpn_tunnel.py +26 -16
  71. pulumi_gcp/container/_inputs.py +560 -0
  72. pulumi_gcp/container/outputs.py +1106 -51
  73. pulumi_gcp/databasemigrationservice/connection_profile.py +32 -16
  74. pulumi_gcp/datacatalog/policy_tag.py +4 -2
  75. pulumi_gcp/datafusion/instance.py +14 -12
  76. pulumi_gcp/dataplex/__init__.py +10 -0
  77. pulumi_gcp/dataplex/_inputs.py +160 -0
  78. pulumi_gcp/dataplex/aspect_type.py +1077 -0
  79. pulumi_gcp/dataplex/aspect_type_iam_binding.py +765 -0
  80. pulumi_gcp/dataplex/aspect_type_iam_member.py +765 -0
  81. pulumi_gcp/dataplex/aspect_type_iam_policy.py +604 -0
  82. pulumi_gcp/dataplex/asset.py +4 -2
  83. pulumi_gcp/dataplex/datascan.py +16 -14
  84. pulumi_gcp/dataplex/entry_group.py +722 -0
  85. pulumi_gcp/dataplex/entry_group_iam_binding.py +765 -0
  86. pulumi_gcp/dataplex/entry_group_iam_member.py +765 -0
  87. pulumi_gcp/dataplex/entry_group_iam_policy.py +604 -0
  88. pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +164 -0
  89. pulumi_gcp/dataplex/get_entry_group_iam_policy.py +164 -0
  90. pulumi_gcp/dataplex/outputs.py +112 -0
  91. pulumi_gcp/datastore/data_store_index.py +4 -2
  92. pulumi_gcp/datastream/connection_profile.py +47 -0
  93. pulumi_gcp/datastream/private_connection.py +47 -0
  94. pulumi_gcp/datastream/stream.py +63 -10
  95. pulumi_gcp/diagflow/cx_test_case.py +4 -4
  96. pulumi_gcp/diagflow/entity_type.py +4 -2
  97. pulumi_gcp/diagflow/fulfillment.py +4 -2
  98. pulumi_gcp/diagflow/intent.py +8 -4
  99. pulumi_gcp/dns/get_managed_zone.py +3 -3
  100. pulumi_gcp/dns/managed_zone.py +7 -7
  101. pulumi_gcp/dns/outputs.py +2 -2
  102. pulumi_gcp/edgecontainer/node_pool.py +4 -2
  103. pulumi_gcp/edgecontainer/vpn_connection.py +4 -2
  104. pulumi_gcp/eventarc/channel.py +4 -2
  105. pulumi_gcp/eventarc/google_channel_config.py +4 -2
  106. pulumi_gcp/firebase/app_check_app_attest_config.py +16 -8
  107. pulumi_gcp/firebase/app_check_debug_token.py +8 -4
  108. pulumi_gcp/firebase/app_check_device_check_config.py +8 -4
  109. pulumi_gcp/firebase/app_check_play_integrity_config.py +16 -8
  110. pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +8 -4
  111. pulumi_gcp/firebase/app_check_recaptcha_v3_config.py +8 -4
  112. pulumi_gcp/firebase/app_check_service_config.py +12 -6
  113. pulumi_gcp/firebase/database_instance.py +4 -2
  114. pulumi_gcp/firebaserules/release.py +0 -98
  115. pulumi_gcp/firestore/database.py +24 -20
  116. pulumi_gcp/firestore/document.py +24 -12
  117. pulumi_gcp/folder/access_approval_settings.py +4 -2
  118. pulumi_gcp/gkehub/membership_binding.py +14 -4
  119. pulumi_gcp/gkehub/membership_rbac_role_binding.py +8 -4
  120. pulumi_gcp/gkehub/namespace.py +4 -2
  121. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -2
  122. pulumi_gcp/integrationconnectors/connection.py +4 -2
  123. pulumi_gcp/integrationconnectors/managed_zone.py +18 -6
  124. pulumi_gcp/kms/__init__.py +2 -0
  125. pulumi_gcp/kms/autokey_config.py +366 -0
  126. pulumi_gcp/kms/key_handle.py +548 -0
  127. pulumi_gcp/logging/folder_settings.py +12 -10
  128. pulumi_gcp/logging/linked_dataset.py +4 -2
  129. pulumi_gcp/logging/organization_settings.py +12 -10
  130. pulumi_gcp/logging/project_bucket_config.py +4 -2
  131. pulumi_gcp/looker/instance.py +12 -10
  132. pulumi_gcp/netapp/volume_replication.py +4 -2
  133. pulumi_gcp/netapp/volume_snapshot.py +4 -2
  134. pulumi_gcp/networkconnectivity/internal_range.py +14 -12
  135. pulumi_gcp/networksecurity/gateway_security_policy.py +16 -4
  136. pulumi_gcp/networksecurity/tls_inspection_policy.py +22 -4
  137. pulumi_gcp/networkservices/__init__.py +1 -0
  138. pulumi_gcp/networkservices/_inputs.py +245 -27
  139. pulumi_gcp/networkservices/gateway.py +12 -6
  140. pulumi_gcp/networkservices/lb_route_extension.py +663 -0
  141. pulumi_gcp/networkservices/lb_traffic_extension.py +28 -540
  142. pulumi_gcp/networkservices/outputs.py +251 -20
  143. pulumi_gcp/organizations/access_approval_settings.py +4 -2
  144. pulumi_gcp/orgpolicy/policy.py +2 -2
  145. pulumi_gcp/parallelstore/instance.py +20 -18
  146. pulumi_gcp/projects/access_approval_settings.py +4 -2
  147. pulumi_gcp/pubsub/_inputs.py +16 -0
  148. pulumi_gcp/pubsub/outputs.py +25 -0
  149. pulumi_gcp/pubsub/schema.py +4 -2
  150. pulumi_gcp/pubsub/subscription.py +102 -66
  151. pulumi_gcp/pubsub/topic.py +4 -2
  152. pulumi_gcp/pulumi-plugin.json +1 -1
  153. pulumi_gcp/redis/cluster.py +30 -28
  154. pulumi_gcp/redis/instance.py +4 -2
  155. pulumi_gcp/secretmanager/secret.py +4 -2
  156. pulumi_gcp/securesourcemanager/instance.py +20 -8
  157. pulumi_gcp/securitycenter/instance_iam_binding.py +14 -12
  158. pulumi_gcp/securitycenter/instance_iam_member.py +14 -12
  159. pulumi_gcp/securitycenter/instance_iam_policy.py +14 -12
  160. pulumi_gcp/serviceaccount/key.py +2 -2
  161. pulumi_gcp/sql/database_instance.py +4 -2
  162. pulumi_gcp/sql/user.py +4 -4
  163. pulumi_gcp/storage/get_project_service_account.py +4 -2
  164. pulumi_gcp/storage/insights_report_config.py +12 -10
  165. pulumi_gcp/storage/notification.py +18 -16
  166. pulumi_gcp/storage/transfer_agent_pool.py +4 -2
  167. pulumi_gcp/storage/transfer_job.py +14 -4
  168. pulumi_gcp/tpu/_inputs.py +2 -2
  169. pulumi_gcp/tpu/outputs.py +2 -2
  170. pulumi_gcp/tpu/v2_vm.py +10 -6
  171. pulumi_gcp/vertex/ai_endpoint.py +24 -22
  172. pulumi_gcp/vertex/ai_index_endpoint.py +20 -18
  173. pulumi_gcp/vertex/ai_tensorboard.py +14 -12
  174. pulumi_gcp/vmwareengine/external_address.py +4 -2
  175. pulumi_gcp/vmwareengine/network.py +8 -4
  176. {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/METADATA +1 -1
  177. {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/RECORD +179 -165
  178. {pulumi_gcp-7.24.0a1716588893.dist-info → pulumi_gcp-7.25.0.dist-info}/WHEEL +0 -0
  179. {pulumi_gcp-7.24.0a1716588893.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,6 +181,7 @@ __all__ = [
178
181
  'InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
179
182
  'InstanceTemplateSchedulingMaxRunDurationArgs',
180
183
  'InstanceTemplateSchedulingNodeAffinityArgs',
184
+ 'InstanceTemplateSchedulingOnInstanceStopActionArgs',
181
185
  'InstanceTemplateServiceAccountArgs',
182
186
  'InstanceTemplateShieldedInstanceConfigArgs',
183
187
  'InterconnectAttachmentPrivateInterconnectInfoArgs',
@@ -294,6 +298,7 @@ __all__ = [
294
298
  'RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
295
299
  'RegionInstanceTemplateSchedulingMaxRunDurationArgs',
296
300
  'RegionInstanceTemplateSchedulingNodeAffinityArgs',
301
+ 'RegionInstanceTemplateSchedulingOnInstanceStopActionArgs',
297
302
  'RegionInstanceTemplateServiceAccountArgs',
298
303
  'RegionInstanceTemplateShieldedInstanceConfigArgs',
299
304
  'RegionNetworkEndpointGroupAppEngineArgs',
@@ -7442,6 +7447,7 @@ class InstanceFromMachineImageSchedulingArgs:
7442
7447
  min_node_cpus: Optional[pulumi.Input[int]] = None,
7443
7448
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceFromMachineImageSchedulingNodeAffinityArgs']]]] = None,
7444
7449
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
7450
+ on_instance_stop_action: Optional[pulumi.Input['InstanceFromMachineImageSchedulingOnInstanceStopActionArgs']] = None,
7445
7451
  preemptible: Optional[pulumi.Input[bool]] = None,
7446
7452
  provisioning_model: Optional[pulumi.Input[str]] = None):
7447
7453
  """
@@ -7455,6 +7461,7 @@ class InstanceFromMachineImageSchedulingArgs:
7455
7461
  :param pulumi.Input['InstanceFromMachineImageSchedulingMaxRunDurationArgs'] max_run_duration: The timeout for new network connections to hosts.
7456
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.
7457
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.
7458
7465
  :param pulumi.Input[bool] preemptible: Whether the instance is preemptible.
7459
7466
  :param pulumi.Input[str] provisioning_model: Whether the instance is spot. If this is set as SPOT.
7460
7467
  """
@@ -7474,6 +7481,8 @@ class InstanceFromMachineImageSchedulingArgs:
7474
7481
  pulumi.set(__self__, "node_affinities", node_affinities)
7475
7482
  if on_host_maintenance is not None:
7476
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)
7477
7486
  if preemptible is not None:
7478
7487
  pulumi.set(__self__, "preemptible", preemptible)
7479
7488
  if provisioning_model is not None:
@@ -7575,6 +7584,18 @@ class InstanceFromMachineImageSchedulingArgs:
7575
7584
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
7576
7585
  pulumi.set(self, "on_host_maintenance", value)
7577
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
+
7578
7599
  @property
7579
7600
  @pulumi.getter
7580
7601
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -7730,6 +7751,29 @@ class InstanceFromMachineImageSchedulingNodeAffinityArgs:
7730
7751
  pulumi.set(self, "values", value)
7731
7752
 
7732
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
+
7733
7777
  @pulumi.input_type
7734
7778
  class InstanceFromMachineImageScratchDiskArgs:
7735
7779
  def __init__(__self__, *,
@@ -8993,6 +9037,7 @@ class InstanceFromTemplateSchedulingArgs:
8993
9037
  min_node_cpus: Optional[pulumi.Input[int]] = None,
8994
9038
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceFromTemplateSchedulingNodeAffinityArgs']]]] = None,
8995
9039
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
9040
+ on_instance_stop_action: Optional[pulumi.Input['InstanceFromTemplateSchedulingOnInstanceStopActionArgs']] = None,
8996
9041
  preemptible: Optional[pulumi.Input[bool]] = None,
8997
9042
  provisioning_model: Optional[pulumi.Input[str]] = None):
8998
9043
  """
@@ -9006,6 +9051,7 @@ class InstanceFromTemplateSchedulingArgs:
9006
9051
  :param pulumi.Input['InstanceFromTemplateSchedulingMaxRunDurationArgs'] max_run_duration: The timeout for new network connections to hosts.
9007
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.
9008
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.
9009
9055
  :param pulumi.Input[bool] preemptible: Whether the instance is preemptible.
9010
9056
  :param pulumi.Input[str] provisioning_model: Whether the instance is spot. If this is set as SPOT.
9011
9057
  """
@@ -9025,6 +9071,8 @@ class InstanceFromTemplateSchedulingArgs:
9025
9071
  pulumi.set(__self__, "node_affinities", node_affinities)
9026
9072
  if on_host_maintenance is not None:
9027
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)
9028
9076
  if preemptible is not None:
9029
9077
  pulumi.set(__self__, "preemptible", preemptible)
9030
9078
  if provisioning_model is not None:
@@ -9126,6 +9174,18 @@ class InstanceFromTemplateSchedulingArgs:
9126
9174
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
9127
9175
  pulumi.set(self, "on_host_maintenance", value)
9128
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
+
9129
9189
  @property
9130
9190
  @pulumi.getter
9131
9191
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -9281,6 +9341,29 @@ class InstanceFromTemplateSchedulingNodeAffinityArgs:
9281
9341
  pulumi.set(self, "values", value)
9282
9342
 
9283
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
+
9284
9367
  @pulumi.input_type
9285
9368
  class InstanceFromTemplateScratchDiskArgs:
9286
9369
  def __init__(__self__, *,
@@ -11041,6 +11124,7 @@ class InstanceSchedulingArgs:
11041
11124
  min_node_cpus: Optional[pulumi.Input[int]] = None,
11042
11125
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceSchedulingNodeAffinityArgs']]]] = None,
11043
11126
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
11127
+ on_instance_stop_action: Optional[pulumi.Input['InstanceSchedulingOnInstanceStopActionArgs']] = None,
11044
11128
  preemptible: Optional[pulumi.Input[bool]] = None,
11045
11129
  provisioning_model: Optional[pulumi.Input[str]] = None):
11046
11130
  """
@@ -11053,8 +11137,7 @@ class InstanceSchedulingArgs:
11053
11137
  between 0 and 168 hours with hour granularity and the default value being 1
11054
11138
  hour.
11055
11139
  :param pulumi.Input[str] maintenance_interval: Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.
11056
- :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.
11057
- <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.
11058
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.
11059
11142
  :param pulumi.Input[Sequence[pulumi.Input['InstanceSchedulingNodeAffinityArgs']]] node_affinities: Specifies node affinities or anti-affinities
11060
11143
  to determine which sole-tenant nodes your instances and managed instance
@@ -11064,6 +11147,7 @@ class InstanceSchedulingArgs:
11064
11147
  :param pulumi.Input[str] on_host_maintenance: Describes maintenance behavior for the
11065
11148
  instance. Can be MIGRATE or TERMINATE, for more info, read
11066
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.
11067
11151
  :param pulumi.Input[bool] preemptible: Specifies if the instance is preemptible.
11068
11152
  If this field is set to true, then `automatic_restart` must be
11069
11153
  set to false. Defaults to false.
@@ -11088,6 +11172,8 @@ class InstanceSchedulingArgs:
11088
11172
  pulumi.set(__self__, "node_affinities", node_affinities)
11089
11173
  if on_host_maintenance is not None:
11090
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)
11091
11177
  if preemptible is not None:
11092
11178
  pulumi.set(__self__, "preemptible", preemptible)
11093
11179
  if provisioning_model is not None:
@@ -11150,8 +11236,7 @@ class InstanceSchedulingArgs:
11150
11236
  @pulumi.getter(name="maxRunDuration")
11151
11237
  def max_run_duration(self) -> Optional[pulumi.Input['InstanceSchedulingMaxRunDurationArgs']]:
11152
11238
  """
11153
- 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.
11154
- <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.
11155
11240
  """
11156
11241
  return pulumi.get(self, "max_run_duration")
11157
11242
 
@@ -11201,6 +11286,18 @@ class InstanceSchedulingArgs:
11201
11286
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
11202
11287
  pulumi.set(self, "on_host_maintenance", value)
11203
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
+
11204
11301
  @property
11205
11302
  @pulumi.getter
11206
11303
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -11283,12 +11380,13 @@ class InstanceSchedulingMaxRunDurationArgs:
11283
11380
  seconds: pulumi.Input[int],
11284
11381
  nanos: Optional[pulumi.Input[int]] = None):
11285
11382
  """
11286
- :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
11287
- 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.
11288
11386
  :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
11289
- resolution. Durations less than one second are represented
11290
- with a 0 seconds field and a positive nanos field. Must
11291
- 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.
11292
11390
  """
11293
11391
  pulumi.set(__self__, "seconds", seconds)
11294
11392
  if nanos is not None:
@@ -11298,8 +11396,9 @@ class InstanceSchedulingMaxRunDurationArgs:
11298
11396
  @pulumi.getter
11299
11397
  def seconds(self) -> pulumi.Input[int]:
11300
11398
  """
11301
- Span of time at a resolution of a second.
11302
- 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.
11303
11402
  """
11304
11403
  return pulumi.get(self, "seconds")
11305
11404
 
@@ -11312,9 +11411,9 @@ class InstanceSchedulingMaxRunDurationArgs:
11312
11411
  def nanos(self) -> Optional[pulumi.Input[int]]:
11313
11412
  """
11314
11413
  Span of time that's a fraction of a second at nanosecond
11315
- resolution. Durations less than one second are represented
11316
- with a 0 seconds field and a positive nanos field. Must
11317
- 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.
11318
11417
  """
11319
11418
  return pulumi.get(self, "nanos")
11320
11419
 
@@ -11377,6 +11476,29 @@ class InstanceSchedulingNodeAffinityArgs:
11377
11476
  pulumi.set(self, "values", value)
11378
11477
 
11379
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
+
11380
11502
  @pulumi.input_type
11381
11503
  class InstanceScratchDiskArgs:
11382
11504
  def __init__(__self__, *,
@@ -12785,6 +12907,7 @@ class InstanceTemplateSchedulingArgs:
12785
12907
  min_node_cpus: Optional[pulumi.Input[int]] = None,
12786
12908
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingNodeAffinityArgs']]]] = None,
12787
12909
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
12910
+ on_instance_stop_action: Optional[pulumi.Input['InstanceTemplateSchedulingOnInstanceStopActionArgs']] = None,
12788
12911
  preemptible: Optional[pulumi.Input[bool]] = None,
12789
12912
  provisioning_model: Optional[pulumi.Input[str]] = None):
12790
12913
  """
@@ -12797,8 +12920,7 @@ class InstanceTemplateSchedulingArgs:
12797
12920
  between 0 and 168 hours with hour granularity and the default value being 1
12798
12921
  hour.
12799
12922
  :param pulumi.Input[str] maintenance_interval: Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.
12800
- :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.
12801
- <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.
12802
12924
  :param pulumi.Input[int] min_node_cpus: Minimum number of cpus for the instance.
12803
12925
  :param pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingNodeAffinityArgs']]] node_affinities: Specifies node affinities or anti-affinities
12804
12926
  to determine which sole-tenant nodes your instances and managed instance
@@ -12807,6 +12929,7 @@ class InstanceTemplateSchedulingArgs:
12807
12929
  Structure documented below.
12808
12930
  :param pulumi.Input[str] on_host_maintenance: Defines the maintenance behavior for this
12809
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.
12810
12933
  :param pulumi.Input[bool] preemptible: Allows instance to be preempted. This defaults to
12811
12934
  false. Read more on this
12812
12935
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -12831,6 +12954,8 @@ class InstanceTemplateSchedulingArgs:
12831
12954
  pulumi.set(__self__, "node_affinities", node_affinities)
12832
12955
  if on_host_maintenance is not None:
12833
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)
12834
12959
  if preemptible is not None:
12835
12960
  pulumi.set(__self__, "preemptible", preemptible)
12836
12961
  if provisioning_model is not None:
@@ -12893,8 +13018,7 @@ class InstanceTemplateSchedulingArgs:
12893
13018
  @pulumi.getter(name="maxRunDuration")
12894
13019
  def max_run_duration(self) -> Optional[pulumi.Input['InstanceTemplateSchedulingMaxRunDurationArgs']]:
12895
13020
  """
12896
- 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.
12897
- <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.
12898
13022
  """
12899
13023
  return pulumi.get(self, "max_run_duration")
12900
13024
 
@@ -12943,6 +13067,18 @@ class InstanceTemplateSchedulingArgs:
12943
13067
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
12944
13068
  pulumi.set(self, "on_host_maintenance", value)
12945
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
+
12946
13082
  @property
12947
13083
  @pulumi.getter
12948
13084
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -13025,12 +13161,13 @@ class InstanceTemplateSchedulingMaxRunDurationArgs:
13025
13161
  seconds: pulumi.Input[int],
13026
13162
  nanos: Optional[pulumi.Input[int]] = None):
13027
13163
  """
13028
- :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
13029
- 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.
13030
13167
  :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
13031
- resolution. Durations less than one second are represented
13032
- with a 0 seconds field and a positive nanos field. Must
13033
- 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.
13034
13171
  """
13035
13172
  pulumi.set(__self__, "seconds", seconds)
13036
13173
  if nanos is not None:
@@ -13040,8 +13177,9 @@ class InstanceTemplateSchedulingMaxRunDurationArgs:
13040
13177
  @pulumi.getter
13041
13178
  def seconds(self) -> pulumi.Input[int]:
13042
13179
  """
13043
- Span of time at a resolution of a second.
13044
- 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.
13045
13183
  """
13046
13184
  return pulumi.get(self, "seconds")
13047
13185
 
@@ -13054,9 +13192,9 @@ class InstanceTemplateSchedulingMaxRunDurationArgs:
13054
13192
  def nanos(self) -> Optional[pulumi.Input[int]]:
13055
13193
  """
13056
13194
  Span of time that's a fraction of a second at nanosecond
13057
- resolution. Durations less than one second are represented
13058
- with a 0 seconds field and a positive nanos field. Must
13059
- 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.
13060
13198
  """
13061
13199
  return pulumi.get(self, "nanos")
13062
13200
 
@@ -13115,6 +13253,29 @@ class InstanceTemplateSchedulingNodeAffinityArgs:
13115
13253
  pulumi.set(self, "values", value)
13116
13254
 
13117
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
+
13118
13279
  @pulumi.input_type
13119
13280
  class InstanceTemplateServiceAccountArgs:
13120
13281
  def __init__(__self__, *,
@@ -21091,6 +21252,7 @@ class RegionInstanceTemplateSchedulingArgs:
21091
21252
  min_node_cpus: Optional[pulumi.Input[int]] = None,
21092
21253
  node_affinities: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateSchedulingNodeAffinityArgs']]]] = None,
21093
21254
  on_host_maintenance: Optional[pulumi.Input[str]] = None,
21255
+ on_instance_stop_action: Optional[pulumi.Input['RegionInstanceTemplateSchedulingOnInstanceStopActionArgs']] = None,
21094
21256
  preemptible: Optional[pulumi.Input[bool]] = None,
21095
21257
  provisioning_model: Optional[pulumi.Input[str]] = None):
21096
21258
  """
@@ -21112,6 +21274,7 @@ class RegionInstanceTemplateSchedulingArgs:
21112
21274
  Structure documented below.
21113
21275
  :param pulumi.Input[str] on_host_maintenance: Defines the maintenance behavior for this
21114
21276
  instance.
21277
+ :param pulumi.Input['RegionInstanceTemplateSchedulingOnInstanceStopActionArgs'] on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
21115
21278
  :param pulumi.Input[bool] preemptible: Allows instance to be preempted. This defaults to
21116
21279
  false. Read more on this
21117
21280
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -21136,6 +21299,8 @@ class RegionInstanceTemplateSchedulingArgs:
21136
21299
  pulumi.set(__self__, "node_affinities", node_affinities)
21137
21300
  if on_host_maintenance is not None:
21138
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)
21139
21304
  if preemptible is not None:
21140
21305
  pulumi.set(__self__, "preemptible", preemptible)
21141
21306
  if provisioning_model is not None:
@@ -21247,6 +21412,18 @@ class RegionInstanceTemplateSchedulingArgs:
21247
21412
  def on_host_maintenance(self, value: Optional[pulumi.Input[str]]):
21248
21413
  pulumi.set(self, "on_host_maintenance", value)
21249
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
+
21250
21427
  @property
21251
21428
  @pulumi.getter
21252
21429
  def preemptible(self) -> Optional[pulumi.Input[bool]]:
@@ -21421,6 +21598,29 @@ class RegionInstanceTemplateSchedulingNodeAffinityArgs:
21421
21598
  pulumi.set(self, "values", value)
21422
21599
 
21423
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")
21618
+
21619
+ @discard_local_ssd.setter
21620
+ def discard_local_ssd(self, value: Optional[pulumi.Input[bool]]):
21621
+ pulumi.set(self, "discard_local_ssd", value)
21622
+
21623
+
21424
21624
  @pulumi.input_type
21425
21625
  class RegionInstanceTemplateServiceAccountArgs:
21426
21626
  def __init__(__self__, *,
@@ -30204,6 +30404,7 @@ class SecurityPolicyAdvancedOptionsConfigArgs:
30204
30404
  :param pulumi.Input[str] json_parsing: Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
30205
30405
  * `DISABLED` - Don't parse JSON payloads in POST bodies.
30206
30406
  * `STANDARD` - Parse JSON payloads in POST bodies.
30407
+ * `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.
30207
30408
  :param pulumi.Input[str] log_level: Log level to use. Defaults to `NORMAL`.
30208
30409
  * `NORMAL` - Normal log level.
30209
30410
  * `VERBOSE` - Verbose log level.
@@ -30238,6 +30439,7 @@ class SecurityPolicyAdvancedOptionsConfigArgs:
30238
30439
  Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
30239
30440
  * `DISABLED` - Don't parse JSON payloads in POST bodies.
30240
30441
  * `STANDARD` - Parse JSON payloads in POST bodies.
30442
+ * `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.
30241
30443
  """
30242
30444
  return pulumi.get(self, "json_parsing")
30243
30445
 
@@ -30998,102 +31200,73 @@ class SecurityPolicyRulePreconfiguredWafConfigExclusionRequestUriArgs:
30998
31200
  @pulumi.input_type
30999
31201
  class SecurityPolicyRuleRateLimitOptionsArgs:
31000
31202
  def __init__(__self__, *,
31001
- conform_action: pulumi.Input[str],
31002
- exceed_action: pulumi.Input[str],
31003
- rate_limit_threshold: pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs'],
31004
31203
  ban_duration_sec: Optional[pulumi.Input[int]] = None,
31005
31204
  ban_threshold: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs']] = None,
31205
+ conform_action: Optional[pulumi.Input[str]] = None,
31006
31206
  enforce_on_key: Optional[pulumi.Input[str]] = None,
31007
31207
  enforce_on_key_configs: Optional[pulumi.Input[Sequence[pulumi.Input['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs']]]] = None,
31008
31208
  enforce_on_key_name: Optional[pulumi.Input[str]] = None,
31009
- 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):
31010
31212
  """
31011
- :param pulumi.Input[str] conform_action: Action to take for requests that are under the configured rate limit threshold. Valid option is `allow` only.
31012
- :param pulumi.Input[str] exceed_action: When a request is denied, returns the HTTP response code specified.
31013
- Valid options are `deny()` where valid values for status are 403, 404, 429, and 502.
31014
- :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs'] rate_limit_threshold: Threshold at which to begin ratelimiting. Structure is documented below.
31015
- :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".
31016
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.
31017
- :param pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs'] ban_threshold: Can only be specified if the `action` for the rule is `rate_based_ban`.
31018
- 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
31019
- exceed this `ban_threshold`. Structure is documented below.
31020
- :param pulumi.Input[str] enforce_on_key: Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
31021
-
31022
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
31023
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
31024
- * `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`.
31025
- * `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`.
31026
- * `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`.
31027
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
31028
- * `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.
31029
- * `REGION_CODE`: The country/region from which the request originates.
31030
- :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.
31031
-
31032
- **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.
31033
31236
  :param pulumi.Input[str] enforce_on_key_name: Rate limit key name applicable only for the following key types:
31034
-
31035
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
31036
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
31037
- :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.
31038
31245
  """
31039
- pulumi.set(__self__, "conform_action", conform_action)
31040
- pulumi.set(__self__, "exceed_action", exceed_action)
31041
- pulumi.set(__self__, "rate_limit_threshold", rate_limit_threshold)
31042
31246
  if ban_duration_sec is not None:
31043
31247
  pulumi.set(__self__, "ban_duration_sec", ban_duration_sec)
31044
31248
  if ban_threshold is not None:
31045
31249
  pulumi.set(__self__, "ban_threshold", ban_threshold)
31250
+ if conform_action is not None:
31251
+ pulumi.set(__self__, "conform_action", conform_action)
31046
31252
  if enforce_on_key is not None:
31047
31253
  pulumi.set(__self__, "enforce_on_key", enforce_on_key)
31048
31254
  if enforce_on_key_configs is not None:
31049
31255
  pulumi.set(__self__, "enforce_on_key_configs", enforce_on_key_configs)
31050
31256
  if enforce_on_key_name is not None:
31051
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)
31052
31260
  if exceed_redirect_options is not None:
31053
31261
  pulumi.set(__self__, "exceed_redirect_options", exceed_redirect_options)
31054
-
31055
- @property
31056
- @pulumi.getter(name="conformAction")
31057
- def conform_action(self) -> pulumi.Input[str]:
31058
- """
31059
- Action to take for requests that are under the configured rate limit threshold. Valid option is `allow` only.
31060
- """
31061
- return pulumi.get(self, "conform_action")
31062
-
31063
- @conform_action.setter
31064
- def conform_action(self, value: pulumi.Input[str]):
31065
- pulumi.set(self, "conform_action", value)
31066
-
31067
- @property
31068
- @pulumi.getter(name="exceedAction")
31069
- def exceed_action(self) -> pulumi.Input[str]:
31070
- """
31071
- When a request is denied, returns the HTTP response code specified.
31072
- Valid options are `deny()` where valid values for status are 403, 404, 429, and 502.
31073
- """
31074
- return pulumi.get(self, "exceed_action")
31075
-
31076
- @exceed_action.setter
31077
- def exceed_action(self, value: pulumi.Input[str]):
31078
- pulumi.set(self, "exceed_action", value)
31079
-
31080
- @property
31081
- @pulumi.getter(name="rateLimitThreshold")
31082
- def rate_limit_threshold(self) -> pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']:
31083
- """
31084
- Threshold at which to begin ratelimiting. Structure is documented below.
31085
- """
31086
- return pulumi.get(self, "rate_limit_threshold")
31087
-
31088
- @rate_limit_threshold.setter
31089
- def rate_limit_threshold(self, value: pulumi.Input['SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs']):
31090
- 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)
31091
31264
 
31092
31265
  @property
31093
31266
  @pulumi.getter(name="banDurationSec")
31094
31267
  def ban_duration_sec(self) -> Optional[pulumi.Input[int]]:
31095
31268
  """
31096
- 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".
31097
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.
31098
31271
  """
31099
31272
  return pulumi.get(self, "ban_duration_sec")
@@ -31106,9 +31279,9 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
31106
31279
  @pulumi.getter(name="banThreshold")
31107
31280
  def ban_threshold(self) -> Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs']]:
31108
31281
  """
31109
- Can only be specified if the `action` for the rule is `rate_based_ban`.
31110
- 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
31111
- 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.
31112
31285
  """
31113
31286
  return pulumi.get(self, "ban_threshold")
31114
31287
 
@@ -31116,20 +31289,35 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
31116
31289
  def ban_threshold(self, value: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsBanThresholdArgs']]):
31117
31290
  pulumi.set(self, "ban_threshold", value)
31118
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
+
31119
31305
  @property
31120
31306
  @pulumi.getter(name="enforceOnKey")
31121
31307
  def enforce_on_key(self) -> Optional[pulumi.Input[str]]:
31122
31308
  """
31123
- Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
31124
-
31125
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
31126
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
31127
- * `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`.
31128
- * `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`.
31129
- * `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`.
31130
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
31131
- * `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.
31132
- * `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`.
31133
31321
  """
31134
31322
  return pulumi.get(self, "enforce_on_key")
31135
31323
 
@@ -31141,9 +31329,10 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
31141
31329
  @pulumi.getter(name="enforceOnKeyConfigs")
31142
31330
  def enforce_on_key_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs']]]]:
31143
31331
  """
31144
- 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.
31145
-
31146
- **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.
31147
31336
  """
31148
31337
  return pulumi.get(self, "enforce_on_key_configs")
31149
31338
 
@@ -31156,9 +31345,8 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
31156
31345
  def enforce_on_key_name(self) -> Optional[pulumi.Input[str]]:
31157
31346
  """
31158
31347
  Rate limit key name applicable only for the following key types:
31159
-
31160
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
31161
- * `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.
31162
31350
  """
31163
31351
  return pulumi.get(self, "enforce_on_key_name")
31164
31352
 
@@ -31166,11 +31354,25 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
31166
31354
  def enforce_on_key_name(self, value: Optional[pulumi.Input[str]]):
31167
31355
  pulumi.set(self, "enforce_on_key_name", value)
31168
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
+
31169
31370
  @property
31170
31371
  @pulumi.getter(name="exceedRedirectOptions")
31171
31372
  def exceed_redirect_options(self) -> Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs']]:
31172
31373
  """
31173
- 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.
31174
31376
  """
31175
31377
  return pulumi.get(self, "exceed_redirect_options")
31176
31378
 
@@ -31178,41 +31380,56 @@ class SecurityPolicyRuleRateLimitOptionsArgs:
31178
31380
  def exceed_redirect_options(self, value: Optional[pulumi.Input['SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs']]):
31179
31381
  pulumi.set(self, "exceed_redirect_options", value)
31180
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
+
31181
31396
 
31182
31397
  @pulumi.input_type
31183
31398
  class SecurityPolicyRuleRateLimitOptionsBanThresholdArgs:
31184
31399
  def __init__(__self__, *,
31185
- count: pulumi.Input[int],
31186
- interval_sec: pulumi.Input[int]):
31400
+ count: Optional[pulumi.Input[int]] = None,
31401
+ interval_sec: Optional[pulumi.Input[int]] = None):
31187
31402
  """
31188
31403
  :param pulumi.Input[int] count: Number of HTTP(S) requests for calculating the threshold.
31189
31404
  :param pulumi.Input[int] interval_sec: Interval over which the threshold is computed.
31190
31405
  """
31191
- pulumi.set(__self__, "count", count)
31192
- 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)
31193
31410
 
31194
31411
  @property
31195
31412
  @pulumi.getter
31196
- def count(self) -> pulumi.Input[int]:
31413
+ def count(self) -> Optional[pulumi.Input[int]]:
31197
31414
  """
31198
31415
  Number of HTTP(S) requests for calculating the threshold.
31199
31416
  """
31200
31417
  return pulumi.get(self, "count")
31201
31418
 
31202
31419
  @count.setter
31203
- def count(self, value: pulumi.Input[int]):
31420
+ def count(self, value: Optional[pulumi.Input[int]]):
31204
31421
  pulumi.set(self, "count", value)
31205
31422
 
31206
31423
  @property
31207
31424
  @pulumi.getter(name="intervalSec")
31208
- def interval_sec(self) -> pulumi.Input[int]:
31425
+ def interval_sec(self) -> Optional[pulumi.Input[int]]:
31209
31426
  """
31210
31427
  Interval over which the threshold is computed.
31211
31428
  """
31212
31429
  return pulumi.get(self, "interval_sec")
31213
31430
 
31214
31431
  @interval_sec.setter
31215
- def interval_sec(self, value: pulumi.Input[int]):
31432
+ def interval_sec(self, value: Optional[pulumi.Input[int]]):
31216
31433
  pulumi.set(self, "interval_sec", value)
31217
31434
 
31218
31435
 
@@ -31223,19 +31440,20 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
31223
31440
  enforce_on_key_type: Optional[pulumi.Input[str]] = None):
31224
31441
  """
31225
31442
  :param pulumi.Input[str] enforce_on_key_name: Rate limit key name applicable only for the following key types:
31226
-
31227
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
31228
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
31229
- :param pulumi.Input[str] enforce_on_key_type: Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
31230
-
31231
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
31232
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
31233
- * `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`.
31234
- * `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`.
31235
- * `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`.
31236
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
31237
- * `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.
31238
- * `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`.
31239
31457
  """
31240
31458
  if enforce_on_key_name is not None:
31241
31459
  pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
@@ -31247,9 +31465,8 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
31247
31465
  def enforce_on_key_name(self) -> Optional[pulumi.Input[str]]:
31248
31466
  """
31249
31467
  Rate limit key name applicable only for the following key types:
31250
-
31251
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
31252
- * `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.
31253
31470
  """
31254
31471
  return pulumi.get(self, "enforce_on_key_name")
31255
31472
 
@@ -31261,16 +31478,18 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
31261
31478
  @pulumi.getter(name="enforceOnKeyType")
31262
31479
  def enforce_on_key_type(self) -> Optional[pulumi.Input[str]]:
31263
31480
  """
31264
- Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
31265
-
31266
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
31267
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
31268
- * `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`.
31269
- * `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`.
31270
- * `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`.
31271
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
31272
- * `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.
31273
- * `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`.
31274
31493
  """
31275
31494
  return pulumi.get(self, "enforce_on_key_type")
31276
31495
 
@@ -31282,75 +31501,78 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfigArgs:
31282
31501
  @pulumi.input_type
31283
31502
  class SecurityPolicyRuleRateLimitOptionsExceedRedirectOptionsArgs:
31284
31503
  def __init__(__self__, *,
31285
- type: pulumi.Input[str],
31286
- target: Optional[pulumi.Input[str]] = None):
31504
+ target: Optional[pulumi.Input[str]] = None,
31505
+ type: Optional[pulumi.Input[str]] = None):
31287
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.
31288
31508
  :param pulumi.Input[str] type: Type of the redirect action.
31289
- :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`.
31290
31509
  """
31291
- pulumi.set(__self__, "type", type)
31292
31510
  if target is not None:
31293
31511
  pulumi.set(__self__, "target", target)
31512
+ if type is not None:
31513
+ pulumi.set(__self__, "type", type)
31294
31514
 
31295
31515
  @property
31296
31516
  @pulumi.getter
31297
- def type(self) -> pulumi.Input[str]:
31517
+ def target(self) -> Optional[pulumi.Input[str]]:
31298
31518
  """
31299
- 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.
31300
31520
  """
31301
- return pulumi.get(self, "type")
31521
+ return pulumi.get(self, "target")
31302
31522
 
31303
- @type.setter
31304
- def type(self, value: pulumi.Input[str]):
31305
- pulumi.set(self, "type", value)
31523
+ @target.setter
31524
+ def target(self, value: Optional[pulumi.Input[str]]):
31525
+ pulumi.set(self, "target", value)
31306
31526
 
31307
31527
  @property
31308
31528
  @pulumi.getter
31309
- def target(self) -> Optional[pulumi.Input[str]]:
31529
+ def type(self) -> Optional[pulumi.Input[str]]:
31310
31530
  """
31311
- 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.
31312
31532
  """
31313
- return pulumi.get(self, "target")
31533
+ return pulumi.get(self, "type")
31314
31534
 
31315
- @target.setter
31316
- def target(self, value: Optional[pulumi.Input[str]]):
31317
- pulumi.set(self, "target", value)
31535
+ @type.setter
31536
+ def type(self, value: Optional[pulumi.Input[str]]):
31537
+ pulumi.set(self, "type", value)
31318
31538
 
31319
31539
 
31320
31540
  @pulumi.input_type
31321
31541
  class SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs:
31322
31542
  def __init__(__self__, *,
31323
- count: pulumi.Input[int],
31324
- interval_sec: pulumi.Input[int]):
31543
+ count: Optional[pulumi.Input[int]] = None,
31544
+ interval_sec: Optional[pulumi.Input[int]] = None):
31325
31545
  """
31326
31546
  :param pulumi.Input[int] count: Number of HTTP(S) requests for calculating the threshold.
31327
31547
  :param pulumi.Input[int] interval_sec: Interval over which the threshold is computed.
31328
31548
  """
31329
- pulumi.set(__self__, "count", count)
31330
- 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)
31331
31553
 
31332
31554
  @property
31333
31555
  @pulumi.getter
31334
- def count(self) -> pulumi.Input[int]:
31556
+ def count(self) -> Optional[pulumi.Input[int]]:
31335
31557
  """
31336
31558
  Number of HTTP(S) requests for calculating the threshold.
31337
31559
  """
31338
31560
  return pulumi.get(self, "count")
31339
31561
 
31340
31562
  @count.setter
31341
- def count(self, value: pulumi.Input[int]):
31563
+ def count(self, value: Optional[pulumi.Input[int]]):
31342
31564
  pulumi.set(self, "count", value)
31343
31565
 
31344
31566
  @property
31345
31567
  @pulumi.getter(name="intervalSec")
31346
- def interval_sec(self) -> pulumi.Input[int]:
31568
+ def interval_sec(self) -> Optional[pulumi.Input[int]]:
31347
31569
  """
31348
31570
  Interval over which the threshold is computed.
31349
31571
  """
31350
31572
  return pulumi.get(self, "interval_sec")
31351
31573
 
31352
31574
  @interval_sec.setter
31353
- def interval_sec(self, value: pulumi.Input[int]):
31575
+ def interval_sec(self, value: Optional[pulumi.Input[int]]):
31354
31576
  pulumi.set(self, "interval_sec", value)
31355
31577
 
31356
31578