pulumi-gcp 7.25.0a1717135845__py3-none-any.whl → 7.26.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 (203) hide show
  1. pulumi_gcp/__init__.py +144 -0
  2. pulumi_gcp/alloydb/_inputs.py +92 -0
  3. pulumi_gcp/alloydb/backup.py +12 -4
  4. pulumi_gcp/alloydb/cluster.py +72 -6
  5. pulumi_gcp/alloydb/instance.py +60 -2
  6. pulumi_gcp/alloydb/outputs.py +114 -0
  7. pulumi_gcp/appengine/_inputs.py +18 -0
  8. pulumi_gcp/appengine/domain_mapping.py +1 -1
  9. pulumi_gcp/appengine/outputs.py +16 -0
  10. pulumi_gcp/artifactregistry/get_repository_iam_policy.py +6 -2
  11. pulumi_gcp/artifactregistry/repository_iam_binding.py +21 -7
  12. pulumi_gcp/artifactregistry/repository_iam_member.py +21 -7
  13. pulumi_gcp/artifactregistry/repository_iam_policy.py +21 -7
  14. pulumi_gcp/bigquery/_inputs.py +286 -2
  15. pulumi_gcp/bigquery/connection_iam_binding.py +21 -7
  16. pulumi_gcp/bigquery/connection_iam_member.py +21 -7
  17. pulumi_gcp/bigquery/connection_iam_policy.py +21 -7
  18. pulumi_gcp/bigquery/data_transfer_config.py +14 -7
  19. pulumi_gcp/bigquery/get_connection_iam_policy.py +6 -2
  20. pulumi_gcp/bigquery/outputs.py +289 -2
  21. pulumi_gcp/bigquery/table.py +77 -35
  22. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +21 -7
  23. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +21 -7
  24. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +21 -7
  25. pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py +6 -2
  26. pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py +6 -2
  27. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +21 -7
  28. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +21 -7
  29. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +21 -7
  30. pulumi_gcp/bigquerydatapolicy/data_policy_iam_binding.py +21 -7
  31. pulumi_gcp/bigquerydatapolicy/data_policy_iam_member.py +21 -7
  32. pulumi_gcp/bigquerydatapolicy/data_policy_iam_policy.py +21 -7
  33. pulumi_gcp/bigquerydatapolicy/get_iam_policy.py +6 -2
  34. pulumi_gcp/certificateauthority/_inputs.py +20 -4
  35. pulumi_gcp/certificateauthority/ca_pool_iam_binding.py +21 -7
  36. pulumi_gcp/certificateauthority/ca_pool_iam_member.py +21 -7
  37. pulumi_gcp/certificateauthority/ca_pool_iam_policy.py +21 -7
  38. pulumi_gcp/certificateauthority/certificate_template.py +157 -173
  39. pulumi_gcp/certificateauthority/certificate_template_iam_binding.py +27 -0
  40. pulumi_gcp/certificateauthority/certificate_template_iam_member.py +27 -0
  41. pulumi_gcp/certificateauthority/certificate_template_iam_policy.py +27 -0
  42. pulumi_gcp/certificateauthority/get_ca_pool_iam_policy.py +6 -2
  43. pulumi_gcp/certificateauthority/get_certificate_template_iam_policy.py +6 -0
  44. pulumi_gcp/certificateauthority/outputs.py +20 -4
  45. pulumi_gcp/cloudbuildv2/connection_iam_binding.py +21 -7
  46. pulumi_gcp/cloudbuildv2/connection_iam_member.py +21 -7
  47. pulumi_gcp/cloudbuildv2/connection_iam_policy.py +21 -7
  48. pulumi_gcp/cloudbuildv2/get_connection_iam_policy.py +6 -2
  49. pulumi_gcp/clouddeploy/get_custom_target_type_iam_policy.py +6 -2
  50. pulumi_gcp/cloudfunctionsv2/function.py +0 -4
  51. pulumi_gcp/cloudfunctionsv2/function_iam_binding.py +21 -7
  52. pulumi_gcp/cloudfunctionsv2/function_iam_member.py +21 -7
  53. pulumi_gcp/cloudfunctionsv2/function_iam_policy.py +21 -7
  54. pulumi_gcp/cloudfunctionsv2/get_function_iam_policy.py +6 -2
  55. pulumi_gcp/cloudrun/_inputs.py +80 -4
  56. pulumi_gcp/cloudrun/get_service_iam_policy.py +6 -2
  57. pulumi_gcp/cloudrun/iam_binding.py +21 -7
  58. pulumi_gcp/cloudrun/iam_member.py +21 -7
  59. pulumi_gcp/cloudrun/iam_policy.py +21 -7
  60. pulumi_gcp/cloudrun/outputs.py +137 -4
  61. pulumi_gcp/cloudrunv2/get_job_iam_policy.py +6 -2
  62. pulumi_gcp/cloudrunv2/get_service.py +11 -1
  63. pulumi_gcp/cloudrunv2/get_service_iam_policy.py +6 -2
  64. pulumi_gcp/cloudrunv2/job_iam_binding.py +21 -7
  65. pulumi_gcp/cloudrunv2/job_iam_member.py +21 -7
  66. pulumi_gcp/cloudrunv2/job_iam_policy.py +21 -7
  67. pulumi_gcp/cloudrunv2/service.py +47 -0
  68. pulumi_gcp/cloudrunv2/service_iam_binding.py +21 -7
  69. pulumi_gcp/cloudrunv2/service_iam_member.py +21 -7
  70. pulumi_gcp/cloudrunv2/service_iam_policy.py +21 -7
  71. pulumi_gcp/cloudtasks/get_queue_iam_policy.py +6 -2
  72. pulumi_gcp/cloudtasks/queue_iam_binding.py +21 -7
  73. pulumi_gcp/cloudtasks/queue_iam_member.py +21 -7
  74. pulumi_gcp/cloudtasks/queue_iam_policy.py +21 -7
  75. pulumi_gcp/composer/user_workloads_secret.py +4 -4
  76. pulumi_gcp/compute/__init__.py +1 -0
  77. pulumi_gcp/compute/_inputs.py +416 -194
  78. pulumi_gcp/compute/get_subnetworks.py +157 -0
  79. pulumi_gcp/compute/instance_group_membership.py +2 -2
  80. pulumi_gcp/compute/interconnect_attachment.py +82 -0
  81. pulumi_gcp/compute/network_endpoint.py +2 -2
  82. pulumi_gcp/compute/network_endpoint_list.py +2 -2
  83. pulumi_gcp/compute/outputs.py +629 -181
  84. pulumi_gcp/compute/region_ssl_policy.py +39 -40
  85. pulumi_gcp/compute/security_policy_rule.py +55 -1
  86. pulumi_gcp/container/_inputs.py +560 -0
  87. pulumi_gcp/container/outputs.py +1106 -51
  88. pulumi_gcp/dataplex/__init__.py +15 -0
  89. pulumi_gcp/dataplex/_inputs.py +264 -0
  90. pulumi_gcp/dataplex/aspect_type.py +1077 -0
  91. pulumi_gcp/dataplex/aspect_type_iam_binding.py +779 -0
  92. pulumi_gcp/dataplex/aspect_type_iam_member.py +779 -0
  93. pulumi_gcp/dataplex/aspect_type_iam_policy.py +618 -0
  94. pulumi_gcp/dataplex/datascan_iam_binding.py +21 -7
  95. pulumi_gcp/dataplex/datascan_iam_member.py +21 -7
  96. pulumi_gcp/dataplex/datascan_iam_policy.py +21 -7
  97. pulumi_gcp/dataplex/entry_group.py +722 -0
  98. pulumi_gcp/dataplex/entry_group_iam_binding.py +779 -0
  99. pulumi_gcp/dataplex/entry_group_iam_member.py +779 -0
  100. pulumi_gcp/dataplex/entry_group_iam_policy.py +618 -0
  101. pulumi_gcp/dataplex/entry_type.py +963 -0
  102. pulumi_gcp/dataplex/entry_type_iam_binding.py +779 -0
  103. pulumi_gcp/dataplex/entry_type_iam_member.py +779 -0
  104. pulumi_gcp/dataplex/entry_type_iam_policy.py +618 -0
  105. pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +168 -0
  106. pulumi_gcp/dataplex/get_datascan_iam_policy.py +6 -2
  107. pulumi_gcp/dataplex/get_entry_group_iam_policy.py +168 -0
  108. pulumi_gcp/dataplex/get_entry_type_iam_policy.py +168 -0
  109. pulumi_gcp/dataplex/get_task_iam_policy.py +6 -2
  110. pulumi_gcp/dataplex/outputs.py +188 -0
  111. pulumi_gcp/dataplex/task.py +16 -16
  112. pulumi_gcp/dataplex/task_iam_binding.py +21 -7
  113. pulumi_gcp/dataplex/task_iam_member.py +21 -7
  114. pulumi_gcp/dataplex/task_iam_policy.py +21 -7
  115. pulumi_gcp/dataproc/autoscaling_policy_iam_binding.py +21 -7
  116. pulumi_gcp/dataproc/autoscaling_policy_iam_member.py +21 -7
  117. pulumi_gcp/dataproc/autoscaling_policy_iam_policy.py +21 -7
  118. pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py +6 -2
  119. pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +6 -2
  120. pulumi_gcp/dataproc/get_metastore_service_iam_policy.py +6 -2
  121. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +21 -7
  122. pulumi_gcp/dataproc/metastore_federation_iam_member.py +21 -7
  123. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +21 -7
  124. pulumi_gcp/dataproc/metastore_service_iam_binding.py +21 -7
  125. pulumi_gcp/dataproc/metastore_service_iam_member.py +21 -7
  126. pulumi_gcp/dataproc/metastore_service_iam_policy.py +21 -7
  127. pulumi_gcp/datastream/connection_profile.py +47 -0
  128. pulumi_gcp/datastream/private_connection.py +47 -0
  129. pulumi_gcp/datastream/stream.py +47 -0
  130. pulumi_gcp/firestore/field.py +4 -4
  131. pulumi_gcp/gkebackup/backup_plan_iam_binding.py +21 -7
  132. pulumi_gcp/gkebackup/backup_plan_iam_member.py +21 -7
  133. pulumi_gcp/gkebackup/backup_plan_iam_policy.py +21 -7
  134. pulumi_gcp/gkebackup/get_backup_plan_iam_policy.py +6 -2
  135. pulumi_gcp/gkebackup/get_restore_plan_iam_policy.py +6 -2
  136. pulumi_gcp/gkehub/feature_iam_binding.py +21 -7
  137. pulumi_gcp/gkehub/feature_iam_member.py +21 -7
  138. pulumi_gcp/gkehub/feature_iam_policy.py +21 -7
  139. pulumi_gcp/gkehub/get_feature_iam_policy.py +6 -2
  140. pulumi_gcp/gkehub/get_membership_iam_policy.py +6 -2
  141. pulumi_gcp/gkehub/membership_binding.py +6 -6
  142. pulumi_gcp/gkehub/membership_iam_binding.py +21 -7
  143. pulumi_gcp/gkehub/membership_iam_member.py +21 -7
  144. pulumi_gcp/gkehub/membership_iam_policy.py +21 -7
  145. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  146. pulumi_gcp/gkehub/namespace.py +4 -4
  147. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  148. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  149. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  150. pulumi_gcp/kms/__init__.py +2 -0
  151. pulumi_gcp/kms/autokey_config.py +366 -0
  152. pulumi_gcp/kms/key_handle.py +548 -0
  153. pulumi_gcp/logging/__init__.py +4 -0
  154. pulumi_gcp/logging/_inputs.py +100 -0
  155. pulumi_gcp/logging/get_log_view_iam_policy.py +157 -0
  156. pulumi_gcp/logging/log_view_iam_binding.py +630 -0
  157. pulumi_gcp/logging/log_view_iam_member.py +630 -0
  158. pulumi_gcp/logging/log_view_iam_policy.py +449 -0
  159. pulumi_gcp/logging/outputs.py +76 -0
  160. pulumi_gcp/netapp/storage_pool.py +9 -9
  161. pulumi_gcp/networksecurity/address_group_iam_policy.py +21 -7
  162. pulumi_gcp/networksecurity/get_address_group_iam_policy.py +6 -2
  163. pulumi_gcp/networkservices/__init__.py +1 -0
  164. pulumi_gcp/networkservices/_inputs.py +245 -27
  165. pulumi_gcp/networkservices/lb_route_extension.py +663 -0
  166. pulumi_gcp/networkservices/lb_traffic_extension.py +28 -14
  167. pulumi_gcp/networkservices/outputs.py +251 -20
  168. pulumi_gcp/notebooks/get_instance_iam_policy.py +6 -2
  169. pulumi_gcp/notebooks/get_runtime_iam_policy.py +6 -2
  170. pulumi_gcp/notebooks/instance_iam_binding.py +21 -7
  171. pulumi_gcp/notebooks/instance_iam_member.py +21 -7
  172. pulumi_gcp/notebooks/instance_iam_policy.py +21 -7
  173. pulumi_gcp/notebooks/runtime_iam_binding.py +21 -7
  174. pulumi_gcp/notebooks/runtime_iam_member.py +21 -7
  175. pulumi_gcp/notebooks/runtime_iam_policy.py +21 -7
  176. pulumi_gcp/orgpolicy/policy.py +2 -2
  177. pulumi_gcp/privilegedaccessmanager/entitlement.py +7 -7
  178. pulumi_gcp/pubsub/_inputs.py +16 -0
  179. pulumi_gcp/pubsub/outputs.py +25 -0
  180. pulumi_gcp/pubsub/subscription.py +8 -4
  181. pulumi_gcp/pulumi-plugin.json +1 -1
  182. pulumi_gcp/securesourcemanager/get_instance_iam_policy.py +6 -2
  183. pulumi_gcp/sql/_inputs.py +2 -4
  184. pulumi_gcp/sql/outputs.py +6 -8
  185. pulumi_gcp/sql/user.py +4 -4
  186. pulumi_gcp/storage/_inputs.py +48 -0
  187. pulumi_gcp/storage/outputs.py +75 -0
  188. pulumi_gcp/tpu/_inputs.py +2 -2
  189. pulumi_gcp/tpu/outputs.py +2 -2
  190. pulumi_gcp/vertex/get_ai_endpoint_iam_policy.py +6 -2
  191. pulumi_gcp/workbench/get_instance_iam_policy.py +6 -2
  192. pulumi_gcp/workstations/get_workstation_config_iam_policy.py +6 -2
  193. pulumi_gcp/workstations/get_workstation_iam_policy.py +6 -2
  194. pulumi_gcp/workstations/workstation_config_iam_binding.py +21 -7
  195. pulumi_gcp/workstations/workstation_config_iam_member.py +21 -7
  196. pulumi_gcp/workstations/workstation_config_iam_policy.py +21 -7
  197. pulumi_gcp/workstations/workstation_iam_binding.py +21 -7
  198. pulumi_gcp/workstations/workstation_iam_member.py +21 -7
  199. pulumi_gcp/workstations/workstation_iam_policy.py +21 -7
  200. {pulumi_gcp-7.25.0a1717135845.dist-info → pulumi_gcp-7.26.0.dist-info}/METADATA +1 -1
  201. {pulumi_gcp-7.25.0a1717135845.dist-info → pulumi_gcp-7.26.0.dist-info}/RECORD +203 -180
  202. {pulumi_gcp-7.25.0a1717135845.dist-info → pulumi_gcp-7.26.0.dist-info}/WHEEL +0 -0
  203. {pulumi_gcp-7.25.0a1717135845.dist-info → pulumi_gcp-7.26.0.dist-info}/top_level.txt +0 -0
@@ -101,6 +101,7 @@ __all__ = [
101
101
  'InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeout',
102
102
  'InstanceFromMachineImageSchedulingMaxRunDuration',
103
103
  'InstanceFromMachineImageSchedulingNodeAffinity',
104
+ 'InstanceFromMachineImageSchedulingOnInstanceStopAction',
104
105
  'InstanceFromMachineImageScratchDisk',
105
106
  'InstanceFromMachineImageServiceAccount',
106
107
  'InstanceFromMachineImageShieldedInstanceConfig',
@@ -122,6 +123,7 @@ __all__ = [
122
123
  'InstanceFromTemplateSchedulingLocalSsdRecoveryTimeout',
123
124
  'InstanceFromTemplateSchedulingMaxRunDuration',
124
125
  'InstanceFromTemplateSchedulingNodeAffinity',
126
+ 'InstanceFromTemplateSchedulingOnInstanceStopAction',
125
127
  'InstanceFromTemplateScratchDisk',
126
128
  'InstanceFromTemplateServiceAccount',
127
129
  'InstanceFromTemplateShieldedInstanceConfig',
@@ -157,6 +159,7 @@ __all__ = [
157
159
  'InstanceSchedulingLocalSsdRecoveryTimeout',
158
160
  'InstanceSchedulingMaxRunDuration',
159
161
  'InstanceSchedulingNodeAffinity',
162
+ 'InstanceSchedulingOnInstanceStopAction',
160
163
  'InstanceScratchDisk',
161
164
  'InstanceServiceAccount',
162
165
  'InstanceSettingsMetadata',
@@ -179,6 +182,7 @@ __all__ = [
179
182
  'InstanceTemplateSchedulingLocalSsdRecoveryTimeout',
180
183
  'InstanceTemplateSchedulingMaxRunDuration',
181
184
  'InstanceTemplateSchedulingNodeAffinity',
185
+ 'InstanceTemplateSchedulingOnInstanceStopAction',
182
186
  'InstanceTemplateServiceAccount',
183
187
  'InstanceTemplateShieldedInstanceConfig',
184
188
  'InterconnectAttachmentPrivateInterconnectInfo',
@@ -295,6 +299,7 @@ __all__ = [
295
299
  'RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeout',
296
300
  'RegionInstanceTemplateSchedulingMaxRunDuration',
297
301
  'RegionInstanceTemplateSchedulingNodeAffinity',
302
+ 'RegionInstanceTemplateSchedulingOnInstanceStopAction',
298
303
  'RegionInstanceTemplateServiceAccount',
299
304
  'RegionInstanceTemplateShieldedInstanceConfig',
300
305
  'RegionNetworkEndpointGroupAppEngine',
@@ -621,6 +626,7 @@ __all__ = [
621
626
  'GetInstanceSchedulingLocalSsdRecoveryTimeoutResult',
622
627
  'GetInstanceSchedulingMaxRunDurationResult',
623
628
  'GetInstanceSchedulingNodeAffinityResult',
629
+ 'GetInstanceSchedulingOnInstanceStopActionResult',
624
630
  'GetInstanceScratchDiskResult',
625
631
  'GetInstanceServiceAccountResult',
626
632
  'GetInstanceShieldedInstanceConfigResult',
@@ -642,6 +648,7 @@ __all__ = [
642
648
  'GetInstanceTemplateSchedulingLocalSsdRecoveryTimeoutResult',
643
649
  'GetInstanceTemplateSchedulingMaxRunDurationResult',
644
650
  'GetInstanceTemplateSchedulingNodeAffinityResult',
651
+ 'GetInstanceTemplateSchedulingOnInstanceStopActionResult',
645
652
  'GetInstanceTemplateServiceAccountResult',
646
653
  'GetInstanceTemplateShieldedInstanceConfigResult',
647
654
  'GetMachineTypesMachineTypeResult',
@@ -672,6 +679,7 @@ __all__ = [
672
679
  'GetRegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutResult',
673
680
  'GetRegionInstanceTemplateSchedulingMaxRunDurationResult',
674
681
  'GetRegionInstanceTemplateSchedulingNodeAffinityResult',
682
+ 'GetRegionInstanceTemplateSchedulingOnInstanceStopActionResult',
675
683
  'GetRegionInstanceTemplateServiceAccountResult',
676
684
  'GetRegionInstanceTemplateShieldedInstanceConfigResult',
677
685
  'GetRegionNetworkEndpointGroupAppEngineResult',
@@ -708,6 +716,7 @@ __all__ = [
708
716
  'GetSnapshotSnapshotEncryptionKeyResult',
709
717
  'GetSnapshotSourceDiskEncryptionKeyResult',
710
718
  'GetSubnetworkSecondaryIpRangeResult',
719
+ 'GetSubnetworksSubnetworkResult',
711
720
  ]
712
721
 
713
722
  @pulumi.output_type
@@ -6345,8 +6354,8 @@ class InstanceConfidentialInstanceConfig(dict):
6345
6354
  confidential_instance_type: Optional[str] = None,
6346
6355
  enable_confidential_compute: Optional[bool] = None):
6347
6356
  """
6348
- :param str confidential_instance_type: Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
6349
- :param bool enable_confidential_compute: Defines whether the instance should have confidential compute enabled with AMD SEV. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
6357
+ :param str confidential_instance_type: Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` can be set to MIGRATE if `confidential_instance_type` is set to `SEV` and `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
6358
+ :param bool enable_confidential_compute: Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, `on_host_maintenance` can be set to MIGRATE if `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
6350
6359
  """
6351
6360
  if confidential_instance_type is not None:
6352
6361
  pulumi.set(__self__, "confidential_instance_type", confidential_instance_type)
@@ -6357,7 +6366,7 @@ class InstanceConfidentialInstanceConfig(dict):
6357
6366
  @pulumi.getter(name="confidentialInstanceType")
6358
6367
  def confidential_instance_type(self) -> Optional[str]:
6359
6368
  """
6360
- Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
6369
+ Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` can be set to MIGRATE if `confidential_instance_type` is set to `SEV` and `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
6361
6370
  """
6362
6371
  return pulumi.get(self, "confidential_instance_type")
6363
6372
 
@@ -6365,7 +6374,7 @@ class InstanceConfidentialInstanceConfig(dict):
6365
6374
  @pulumi.getter(name="enableConfidentialCompute")
6366
6375
  def enable_confidential_compute(self) -> Optional[bool]:
6367
6376
  """
6368
- Defines whether the instance should have confidential compute enabled with AMD SEV. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
6377
+ Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, `on_host_maintenance` can be set to MIGRATE if `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
6369
6378
  """
6370
6379
  return pulumi.get(self, "enable_confidential_compute")
6371
6380
 
@@ -7516,6 +7525,8 @@ class InstanceFromMachineImageScheduling(dict):
7516
7525
  suggest = "node_affinities"
7517
7526
  elif key == "onHostMaintenance":
7518
7527
  suggest = "on_host_maintenance"
7528
+ elif key == "onInstanceStopAction":
7529
+ suggest = "on_instance_stop_action"
7519
7530
  elif key == "provisioningModel":
7520
7531
  suggest = "provisioning_model"
7521
7532
 
@@ -7539,6 +7550,7 @@ class InstanceFromMachineImageScheduling(dict):
7539
7550
  min_node_cpus: Optional[int] = None,
7540
7551
  node_affinities: Optional[Sequence['outputs.InstanceFromMachineImageSchedulingNodeAffinity']] = None,
7541
7552
  on_host_maintenance: Optional[str] = None,
7553
+ on_instance_stop_action: Optional['outputs.InstanceFromMachineImageSchedulingOnInstanceStopAction'] = None,
7542
7554
  preemptible: Optional[bool] = None,
7543
7555
  provisioning_model: Optional[str] = None):
7544
7556
  """
@@ -7552,6 +7564,7 @@ class InstanceFromMachineImageScheduling(dict):
7552
7564
  :param 'InstanceFromMachineImageSchedulingMaxRunDurationArgs' max_run_duration: The timeout for new network connections to hosts.
7553
7565
  :param Sequence['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.
7554
7566
  :param str on_host_maintenance: Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,
7567
+ :param 'InstanceFromMachineImageSchedulingOnInstanceStopActionArgs' on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
7555
7568
  :param bool preemptible: Whether the instance is preemptible.
7556
7569
  :param str provisioning_model: Whether the instance is spot. If this is set as SPOT.
7557
7570
  """
@@ -7571,6 +7584,8 @@ class InstanceFromMachineImageScheduling(dict):
7571
7584
  pulumi.set(__self__, "node_affinities", node_affinities)
7572
7585
  if on_host_maintenance is not None:
7573
7586
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
7587
+ if on_instance_stop_action is not None:
7588
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
7574
7589
  if preemptible is not None:
7575
7590
  pulumi.set(__self__, "preemptible", preemptible)
7576
7591
  if provisioning_model is not None:
@@ -7640,6 +7655,14 @@ class InstanceFromMachineImageScheduling(dict):
7640
7655
  """
7641
7656
  return pulumi.get(self, "on_host_maintenance")
7642
7657
 
7658
+ @property
7659
+ @pulumi.getter(name="onInstanceStopAction")
7660
+ def on_instance_stop_action(self) -> Optional['outputs.InstanceFromMachineImageSchedulingOnInstanceStopAction']:
7661
+ """
7662
+ Defines the behaviour for instances with the instance_termination_action.
7663
+ """
7664
+ return pulumi.get(self, "on_instance_stop_action")
7665
+
7643
7666
  @property
7644
7667
  @pulumi.getter
7645
7668
  def preemptible(self) -> Optional[bool]:
@@ -7759,6 +7782,42 @@ class InstanceFromMachineImageSchedulingNodeAffinity(dict):
7759
7782
  return pulumi.get(self, "values")
7760
7783
 
7761
7784
 
7785
+ @pulumi.output_type
7786
+ class InstanceFromMachineImageSchedulingOnInstanceStopAction(dict):
7787
+ @staticmethod
7788
+ def __key_warning(key: str):
7789
+ suggest = None
7790
+ if key == "discardLocalSsd":
7791
+ suggest = "discard_local_ssd"
7792
+
7793
+ if suggest:
7794
+ pulumi.log.warn(f"Key '{key}' not found in InstanceFromMachineImageSchedulingOnInstanceStopAction. Access the value via the '{suggest}' property getter instead.")
7795
+
7796
+ def __getitem__(self, key: str) -> Any:
7797
+ InstanceFromMachineImageSchedulingOnInstanceStopAction.__key_warning(key)
7798
+ return super().__getitem__(key)
7799
+
7800
+ def get(self, key: str, default = None) -> Any:
7801
+ InstanceFromMachineImageSchedulingOnInstanceStopAction.__key_warning(key)
7802
+ return super().get(key, default)
7803
+
7804
+ def __init__(__self__, *,
7805
+ discard_local_ssd: Optional[bool] = None):
7806
+ """
7807
+ :param bool discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
7808
+ """
7809
+ if discard_local_ssd is not None:
7810
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
7811
+
7812
+ @property
7813
+ @pulumi.getter(name="discardLocalSsd")
7814
+ def discard_local_ssd(self) -> Optional[bool]:
7815
+ """
7816
+ If true, the contents of any attached Local SSD disks will be discarded.
7817
+ """
7818
+ return pulumi.get(self, "discard_local_ssd")
7819
+
7820
+
7762
7821
  @pulumi.output_type
7763
7822
  class InstanceFromMachineImageScratchDisk(dict):
7764
7823
  @staticmethod
@@ -9058,6 +9117,8 @@ class InstanceFromTemplateScheduling(dict):
9058
9117
  suggest = "node_affinities"
9059
9118
  elif key == "onHostMaintenance":
9060
9119
  suggest = "on_host_maintenance"
9120
+ elif key == "onInstanceStopAction":
9121
+ suggest = "on_instance_stop_action"
9061
9122
  elif key == "provisioningModel":
9062
9123
  suggest = "provisioning_model"
9063
9124
 
@@ -9081,6 +9142,7 @@ class InstanceFromTemplateScheduling(dict):
9081
9142
  min_node_cpus: Optional[int] = None,
9082
9143
  node_affinities: Optional[Sequence['outputs.InstanceFromTemplateSchedulingNodeAffinity']] = None,
9083
9144
  on_host_maintenance: Optional[str] = None,
9145
+ on_instance_stop_action: Optional['outputs.InstanceFromTemplateSchedulingOnInstanceStopAction'] = None,
9084
9146
  preemptible: Optional[bool] = None,
9085
9147
  provisioning_model: Optional[str] = None):
9086
9148
  """
@@ -9094,6 +9156,7 @@ class InstanceFromTemplateScheduling(dict):
9094
9156
  :param 'InstanceFromTemplateSchedulingMaxRunDurationArgs' max_run_duration: The timeout for new network connections to hosts.
9095
9157
  :param Sequence['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.
9096
9158
  :param str on_host_maintenance: Describes maintenance behavior for the instance. One of MIGRATE or TERMINATE,
9159
+ :param 'InstanceFromTemplateSchedulingOnInstanceStopActionArgs' on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
9097
9160
  :param bool preemptible: Whether the instance is preemptible.
9098
9161
  :param str provisioning_model: Whether the instance is spot. If this is set as SPOT.
9099
9162
  """
@@ -9113,6 +9176,8 @@ class InstanceFromTemplateScheduling(dict):
9113
9176
  pulumi.set(__self__, "node_affinities", node_affinities)
9114
9177
  if on_host_maintenance is not None:
9115
9178
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
9179
+ if on_instance_stop_action is not None:
9180
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
9116
9181
  if preemptible is not None:
9117
9182
  pulumi.set(__self__, "preemptible", preemptible)
9118
9183
  if provisioning_model is not None:
@@ -9182,6 +9247,14 @@ class InstanceFromTemplateScheduling(dict):
9182
9247
  """
9183
9248
  return pulumi.get(self, "on_host_maintenance")
9184
9249
 
9250
+ @property
9251
+ @pulumi.getter(name="onInstanceStopAction")
9252
+ def on_instance_stop_action(self) -> Optional['outputs.InstanceFromTemplateSchedulingOnInstanceStopAction']:
9253
+ """
9254
+ Defines the behaviour for instances with the instance_termination_action.
9255
+ """
9256
+ return pulumi.get(self, "on_instance_stop_action")
9257
+
9185
9258
  @property
9186
9259
  @pulumi.getter
9187
9260
  def preemptible(self) -> Optional[bool]:
@@ -9301,6 +9374,42 @@ class InstanceFromTemplateSchedulingNodeAffinity(dict):
9301
9374
  return pulumi.get(self, "values")
9302
9375
 
9303
9376
 
9377
+ @pulumi.output_type
9378
+ class InstanceFromTemplateSchedulingOnInstanceStopAction(dict):
9379
+ @staticmethod
9380
+ def __key_warning(key: str):
9381
+ suggest = None
9382
+ if key == "discardLocalSsd":
9383
+ suggest = "discard_local_ssd"
9384
+
9385
+ if suggest:
9386
+ pulumi.log.warn(f"Key '{key}' not found in InstanceFromTemplateSchedulingOnInstanceStopAction. Access the value via the '{suggest}' property getter instead.")
9387
+
9388
+ def __getitem__(self, key: str) -> Any:
9389
+ InstanceFromTemplateSchedulingOnInstanceStopAction.__key_warning(key)
9390
+ return super().__getitem__(key)
9391
+
9392
+ def get(self, key: str, default = None) -> Any:
9393
+ InstanceFromTemplateSchedulingOnInstanceStopAction.__key_warning(key)
9394
+ return super().get(key, default)
9395
+
9396
+ def __init__(__self__, *,
9397
+ discard_local_ssd: Optional[bool] = None):
9398
+ """
9399
+ :param bool discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
9400
+ """
9401
+ if discard_local_ssd is not None:
9402
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
9403
+
9404
+ @property
9405
+ @pulumi.getter(name="discardLocalSsd")
9406
+ def discard_local_ssd(self) -> Optional[bool]:
9407
+ """
9408
+ If true, the contents of any attached Local SSD disks will be discarded.
9409
+ """
9410
+ return pulumi.get(self, "discard_local_ssd")
9411
+
9412
+
9304
9413
  @pulumi.output_type
9305
9414
  class InstanceFromTemplateScratchDisk(dict):
9306
9415
  @staticmethod
@@ -10101,7 +10210,7 @@ class InstanceGroupManagerUpdatePolicy(dict):
10101
10210
  most_disruptive_allowed_action: Optional[str] = None,
10102
10211
  replacement_method: Optional[str] = None):
10103
10212
  """
10104
- :param str minimal_action: Minimal action to be taken on an instance. You can specify either `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
10213
+ :param str minimal_action: Minimal action to be taken on an instance. You can specify either `NONE` to forbid any actions, `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
10105
10214
  :param str type: The type of update process. You can specify either `PROACTIVE` so that the instance group manager proactively executes actions in order to bring instances to their target versions or `OPPORTUNISTIC` so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).
10106
10215
  :param int max_surge_fixed: , The maximum number of instances that can be created above the specified targetSize during the update process. Conflicts with `max_surge_percent`. If neither is set, defaults to 1
10107
10216
  :param int max_surge_percent: , The maximum number of instances(calculated as percentage) that can be created above the specified targetSize during the update process. Conflicts with `max_surge_fixed`.
@@ -10133,7 +10242,7 @@ class InstanceGroupManagerUpdatePolicy(dict):
10133
10242
  @pulumi.getter(name="minimalAction")
10134
10243
  def minimal_action(self) -> str:
10135
10244
  """
10136
- Minimal action to be taken on an instance. You can specify either `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
10245
+ Minimal action to be taken on an instance. You can specify either `NONE` to forbid any actions, `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
10137
10246
  """
10138
10247
  return pulumi.get(self, "minimal_action")
10139
10248
 
@@ -11157,6 +11266,8 @@ class InstanceScheduling(dict):
11157
11266
  suggest = "node_affinities"
11158
11267
  elif key == "onHostMaintenance":
11159
11268
  suggest = "on_host_maintenance"
11269
+ elif key == "onInstanceStopAction":
11270
+ suggest = "on_instance_stop_action"
11160
11271
  elif key == "provisioningModel":
11161
11272
  suggest = "provisioning_model"
11162
11273
 
@@ -11180,6 +11291,7 @@ class InstanceScheduling(dict):
11180
11291
  min_node_cpus: Optional[int] = None,
11181
11292
  node_affinities: Optional[Sequence['outputs.InstanceSchedulingNodeAffinity']] = None,
11182
11293
  on_host_maintenance: Optional[str] = None,
11294
+ on_instance_stop_action: Optional['outputs.InstanceSchedulingOnInstanceStopAction'] = None,
11183
11295
  preemptible: Optional[bool] = None,
11184
11296
  provisioning_model: Optional[str] = None):
11185
11297
  """
@@ -11192,8 +11304,7 @@ class InstanceScheduling(dict):
11192
11304
  between 0 and 168 hours with hour granularity and the default value being 1
11193
11305
  hour.
11194
11306
  :param str maintenance_interval: Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.
11195
- :param '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.
11196
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
11307
+ :param '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.
11197
11308
  :param int min_node_cpus: The minimum number of virtual CPUs this instance will consume when running on a sole-tenant node.
11198
11309
  :param Sequence['InstanceSchedulingNodeAffinityArgs'] node_affinities: Specifies node affinities or anti-affinities
11199
11310
  to determine which sole-tenant nodes your instances and managed instance
@@ -11203,6 +11314,7 @@ class InstanceScheduling(dict):
11203
11314
  :param str on_host_maintenance: Describes maintenance behavior for the
11204
11315
  instance. Can be MIGRATE or TERMINATE, for more info, read
11205
11316
  [here](https://cloud.google.com/compute/docs/instances/setting-instance-scheduling-options).
11317
+ :param '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.
11206
11318
  :param bool preemptible: Specifies if the instance is preemptible.
11207
11319
  If this field is set to true, then `automatic_restart` must be
11208
11320
  set to false. Defaults to false.
@@ -11227,6 +11339,8 @@ class InstanceScheduling(dict):
11227
11339
  pulumi.set(__self__, "node_affinities", node_affinities)
11228
11340
  if on_host_maintenance is not None:
11229
11341
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
11342
+ if on_instance_stop_action is not None:
11343
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
11230
11344
  if preemptible is not None:
11231
11345
  pulumi.set(__self__, "preemptible", preemptible)
11232
11346
  if provisioning_model is not None:
@@ -11273,8 +11387,7 @@ class InstanceScheduling(dict):
11273
11387
  @pulumi.getter(name="maxRunDuration")
11274
11388
  def max_run_duration(self) -> Optional['outputs.InstanceSchedulingMaxRunDuration']:
11275
11389
  """
11276
- 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.
11277
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
11390
+ 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.
11278
11391
  """
11279
11392
  return pulumi.get(self, "max_run_duration")
11280
11393
 
@@ -11308,6 +11421,14 @@ class InstanceScheduling(dict):
11308
11421
  """
11309
11422
  return pulumi.get(self, "on_host_maintenance")
11310
11423
 
11424
+ @property
11425
+ @pulumi.getter(name="onInstanceStopAction")
11426
+ def on_instance_stop_action(self) -> Optional['outputs.InstanceSchedulingOnInstanceStopAction']:
11427
+ """
11428
+ 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.
11429
+ """
11430
+ return pulumi.get(self, "on_instance_stop_action")
11431
+
11311
11432
  @property
11312
11433
  @pulumi.getter
11313
11434
  def preemptible(self) -> Optional[bool]:
@@ -11374,12 +11495,13 @@ class InstanceSchedulingMaxRunDuration(dict):
11374
11495
  seconds: int,
11375
11496
  nanos: Optional[int] = None):
11376
11497
  """
11377
- :param int seconds: Span of time at a resolution of a second.
11378
- Must be from 0 to 315,576,000,000 inclusive.
11498
+ :param int seconds: Span of time at a resolution of a second. Must be from 0 to
11499
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
11500
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
11379
11501
  :param int nanos: Span of time that's a fraction of a second at nanosecond
11380
- resolution. Durations less than one second are represented
11381
- with a 0 seconds field and a positive nanos field. Must
11382
- be from 0 to 999,999,999 inclusive.
11502
+ resolution. Durations less than one second are represented with a 0
11503
+ `seconds` field and a positive `nanos` field. Must be from 0 to
11504
+ 999,999,999 inclusive.
11383
11505
  """
11384
11506
  pulumi.set(__self__, "seconds", seconds)
11385
11507
  if nanos is not None:
@@ -11389,8 +11511,9 @@ class InstanceSchedulingMaxRunDuration(dict):
11389
11511
  @pulumi.getter
11390
11512
  def seconds(self) -> int:
11391
11513
  """
11392
- Span of time at a resolution of a second.
11393
- Must be from 0 to 315,576,000,000 inclusive.
11514
+ Span of time at a resolution of a second. Must be from 0 to
11515
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
11516
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
11394
11517
  """
11395
11518
  return pulumi.get(self, "seconds")
11396
11519
 
@@ -11399,9 +11522,9 @@ class InstanceSchedulingMaxRunDuration(dict):
11399
11522
  def nanos(self) -> Optional[int]:
11400
11523
  """
11401
11524
  Span of time that's a fraction of a second at nanosecond
11402
- resolution. Durations less than one second are represented
11403
- with a 0 seconds field and a positive nanos field. Must
11404
- be from 0 to 999,999,999 inclusive.
11525
+ resolution. Durations less than one second are represented with a 0
11526
+ `seconds` field and a positive `nanos` field. Must be from 0 to
11527
+ 999,999,999 inclusive.
11405
11528
  """
11406
11529
  return pulumi.get(self, "nanos")
11407
11530
 
@@ -11448,6 +11571,42 @@ class InstanceSchedulingNodeAffinity(dict):
11448
11571
  return pulumi.get(self, "values")
11449
11572
 
11450
11573
 
11574
+ @pulumi.output_type
11575
+ class InstanceSchedulingOnInstanceStopAction(dict):
11576
+ @staticmethod
11577
+ def __key_warning(key: str):
11578
+ suggest = None
11579
+ if key == "discardLocalSsd":
11580
+ suggest = "discard_local_ssd"
11581
+
11582
+ if suggest:
11583
+ pulumi.log.warn(f"Key '{key}' not found in InstanceSchedulingOnInstanceStopAction. Access the value via the '{suggest}' property getter instead.")
11584
+
11585
+ def __getitem__(self, key: str) -> Any:
11586
+ InstanceSchedulingOnInstanceStopAction.__key_warning(key)
11587
+ return super().__getitem__(key)
11588
+
11589
+ def get(self, key: str, default = None) -> Any:
11590
+ InstanceSchedulingOnInstanceStopAction.__key_warning(key)
11591
+ return super().get(key, default)
11592
+
11593
+ def __init__(__self__, *,
11594
+ discard_local_ssd: Optional[bool] = None):
11595
+ """
11596
+ :param 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.
11597
+ """
11598
+ if discard_local_ssd is not None:
11599
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
11600
+
11601
+ @property
11602
+ @pulumi.getter(name="discardLocalSsd")
11603
+ def discard_local_ssd(self) -> Optional[bool]:
11604
+ """
11605
+ Whether to discard local SSDs attached to the VM while terminating using `max_run_duration`. Only supports `true` at this point.
11606
+ """
11607
+ return pulumi.get(self, "discard_local_ssd")
11608
+
11609
+
11451
11610
  @pulumi.output_type
11452
11611
  class InstanceScratchDisk(dict):
11453
11612
  @staticmethod
@@ -11723,8 +11882,8 @@ class InstanceTemplateConfidentialInstanceConfig(dict):
11723
11882
  confidential_instance_type: Optional[str] = None,
11724
11883
  enable_confidential_compute: Optional[bool] = None):
11725
11884
  """
11726
- :param str confidential_instance_type: Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
11727
- :param bool enable_confidential_compute: Defines whether the instance should have confidential compute enabled with AMD SEV. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
11885
+ :param str confidential_instance_type: Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` can be set to MIGRATE if `confidential_instance_type` is set to `SEV` and `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
11886
+ :param bool enable_confidential_compute: Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, `on_host_maintenance` can be set to MIGRATE if `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
11728
11887
  """
11729
11888
  if confidential_instance_type is not None:
11730
11889
  pulumi.set(__self__, "confidential_instance_type", confidential_instance_type)
@@ -11735,7 +11894,7 @@ class InstanceTemplateConfidentialInstanceConfig(dict):
11735
11894
  @pulumi.getter(name="confidentialInstanceType")
11736
11895
  def confidential_instance_type(self) -> Optional[str]:
11737
11896
  """
11738
- Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
11897
+ Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` can be set to MIGRATE if `confidential_instance_type` is set to `SEV` and `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
11739
11898
  """
11740
11899
  return pulumi.get(self, "confidential_instance_type")
11741
11900
 
@@ -11743,7 +11902,7 @@ class InstanceTemplateConfidentialInstanceConfig(dict):
11743
11902
  @pulumi.getter(name="enableConfidentialCompute")
11744
11903
  def enable_confidential_compute(self) -> Optional[bool]:
11745
11904
  """
11746
- Defines whether the instance should have confidential compute enabled with AMD SEV. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
11905
+ Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, `on_host_maintenance` can be set to MIGRATE if `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
11747
11906
  """
11748
11907
  return pulumi.get(self, "enable_confidential_compute")
11749
11908
 
@@ -11833,7 +11992,7 @@ class InstanceTemplateDisk(dict):
11833
11992
  specified, it will inherit the size of its base image. For SCRATCH disks,
11834
11993
  the size must be exactly 375GB.
11835
11994
  :param str disk_type: The GCE disk type. Such as `"pd-ssd"`, `"local-ssd"`,
11836
- `"pd-balanced"` or `"pd-standard"`.
11995
+ `"pd-balanced"` or `"pd-standard"`, `"hyperdisk-balanced"`, `"hyperdisk-throughput"` or `"hyperdisk-extreme"`.
11837
11996
  :param str interface: Specifies the disk interface to use for attaching this disk,
11838
11997
  which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI
11839
11998
  and the request will fail if you attempt to attach a persistent disk in any other format
@@ -11981,7 +12140,7 @@ class InstanceTemplateDisk(dict):
11981
12140
  def disk_type(self) -> Optional[str]:
11982
12141
  """
11983
12142
  The GCE disk type. Such as `"pd-ssd"`, `"local-ssd"`,
11984
- `"pd-balanced"` or `"pd-standard"`.
12143
+ `"pd-balanced"` or `"pd-standard"`, `"hyperdisk-balanced"`, `"hyperdisk-throughput"` or `"hyperdisk-extreme"`.
11985
12144
  """
11986
12145
  return pulumi.get(self, "disk_type")
11987
12146
 
@@ -12896,6 +13055,8 @@ class InstanceTemplateScheduling(dict):
12896
13055
  suggest = "node_affinities"
12897
13056
  elif key == "onHostMaintenance":
12898
13057
  suggest = "on_host_maintenance"
13058
+ elif key == "onInstanceStopAction":
13059
+ suggest = "on_instance_stop_action"
12899
13060
  elif key == "provisioningModel":
12900
13061
  suggest = "provisioning_model"
12901
13062
 
@@ -12919,6 +13080,7 @@ class InstanceTemplateScheduling(dict):
12919
13080
  min_node_cpus: Optional[int] = None,
12920
13081
  node_affinities: Optional[Sequence['outputs.InstanceTemplateSchedulingNodeAffinity']] = None,
12921
13082
  on_host_maintenance: Optional[str] = None,
13083
+ on_instance_stop_action: Optional['outputs.InstanceTemplateSchedulingOnInstanceStopAction'] = None,
12922
13084
  preemptible: Optional[bool] = None,
12923
13085
  provisioning_model: Optional[str] = None):
12924
13086
  """
@@ -12931,8 +13093,7 @@ class InstanceTemplateScheduling(dict):
12931
13093
  between 0 and 168 hours with hour granularity and the default value being 1
12932
13094
  hour.
12933
13095
  :param str maintenance_interval: Specifies the frequency of planned maintenance events. The accepted values are: `PERIODIC`.
12934
- :param '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.
12935
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
13096
+ :param '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.
12936
13097
  :param int min_node_cpus: Minimum number of cpus for the instance.
12937
13098
  :param Sequence['InstanceTemplateSchedulingNodeAffinityArgs'] node_affinities: Specifies node affinities or anti-affinities
12938
13099
  to determine which sole-tenant nodes your instances and managed instance
@@ -12941,6 +13102,7 @@ class InstanceTemplateScheduling(dict):
12941
13102
  Structure documented below.
12942
13103
  :param str on_host_maintenance: Defines the maintenance behavior for this
12943
13104
  instance.
13105
+ :param '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.
12944
13106
  :param bool preemptible: Allows instance to be preempted. This defaults to
12945
13107
  false. Read more on this
12946
13108
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -12965,6 +13127,8 @@ class InstanceTemplateScheduling(dict):
12965
13127
  pulumi.set(__self__, "node_affinities", node_affinities)
12966
13128
  if on_host_maintenance is not None:
12967
13129
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
13130
+ if on_instance_stop_action is not None:
13131
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
12968
13132
  if preemptible is not None:
12969
13133
  pulumi.set(__self__, "preemptible", preemptible)
12970
13134
  if provisioning_model is not None:
@@ -13011,8 +13175,7 @@ class InstanceTemplateScheduling(dict):
13011
13175
  @pulumi.getter(name="maxRunDuration")
13012
13176
  def max_run_duration(self) -> Optional['outputs.InstanceTemplateSchedulingMaxRunDuration']:
13013
13177
  """
13014
- 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.
13015
- <a name="nested_max_run_duration"></a>The `max_run_duration` block supports:
13178
+ 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.
13016
13179
  """
13017
13180
  return pulumi.get(self, "max_run_duration")
13018
13181
 
@@ -13045,6 +13208,14 @@ class InstanceTemplateScheduling(dict):
13045
13208
  """
13046
13209
  return pulumi.get(self, "on_host_maintenance")
13047
13210
 
13211
+ @property
13212
+ @pulumi.getter(name="onInstanceStopAction")
13213
+ def on_instance_stop_action(self) -> Optional['outputs.InstanceTemplateSchedulingOnInstanceStopAction']:
13214
+ """
13215
+ 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.
13216
+ """
13217
+ return pulumi.get(self, "on_instance_stop_action")
13218
+
13048
13219
  @property
13049
13220
  @pulumi.getter
13050
13221
  def preemptible(self) -> Optional[bool]:
@@ -13111,12 +13282,13 @@ class InstanceTemplateSchedulingMaxRunDuration(dict):
13111
13282
  seconds: int,
13112
13283
  nanos: Optional[int] = None):
13113
13284
  """
13114
- :param int seconds: Span of time at a resolution of a second.
13115
- Must be from 0 to 315,576,000,000 inclusive.
13285
+ :param int seconds: Span of time at a resolution of a second. Must be from 0 to
13286
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
13287
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
13116
13288
  :param int nanos: Span of time that's a fraction of a second at nanosecond
13117
- resolution. Durations less than one second are represented
13118
- with a 0 seconds field and a positive nanos field. Must
13119
- be from 0 to 999,999,999 inclusive.
13289
+ resolution. Durations less than one second are represented with a 0
13290
+ `seconds` field and a positive `nanos` field. Must be from 0 to
13291
+ 999,999,999 inclusive.
13120
13292
  """
13121
13293
  pulumi.set(__self__, "seconds", seconds)
13122
13294
  if nanos is not None:
@@ -13126,8 +13298,9 @@ class InstanceTemplateSchedulingMaxRunDuration(dict):
13126
13298
  @pulumi.getter
13127
13299
  def seconds(self) -> int:
13128
13300
  """
13129
- Span of time at a resolution of a second.
13130
- Must be from 0 to 315,576,000,000 inclusive.
13301
+ Span of time at a resolution of a second. Must be from 0 to
13302
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
13303
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
13131
13304
  """
13132
13305
  return pulumi.get(self, "seconds")
13133
13306
 
@@ -13136,9 +13309,9 @@ class InstanceTemplateSchedulingMaxRunDuration(dict):
13136
13309
  def nanos(self) -> Optional[int]:
13137
13310
  """
13138
13311
  Span of time that's a fraction of a second at nanosecond
13139
- resolution. Durations less than one second are represented
13140
- with a 0 seconds field and a positive nanos field. Must
13141
- be from 0 to 999,999,999 inclusive.
13312
+ resolution. Durations less than one second are represented with a 0
13313
+ `seconds` field and a positive `nanos` field. Must be from 0 to
13314
+ 999,999,999 inclusive.
13142
13315
  """
13143
13316
  return pulumi.get(self, "nanos")
13144
13317
 
@@ -13181,6 +13354,42 @@ class InstanceTemplateSchedulingNodeAffinity(dict):
13181
13354
  return pulumi.get(self, "values")
13182
13355
 
13183
13356
 
13357
+ @pulumi.output_type
13358
+ class InstanceTemplateSchedulingOnInstanceStopAction(dict):
13359
+ @staticmethod
13360
+ def __key_warning(key: str):
13361
+ suggest = None
13362
+ if key == "discardLocalSsd":
13363
+ suggest = "discard_local_ssd"
13364
+
13365
+ if suggest:
13366
+ pulumi.log.warn(f"Key '{key}' not found in InstanceTemplateSchedulingOnInstanceStopAction. Access the value via the '{suggest}' property getter instead.")
13367
+
13368
+ def __getitem__(self, key: str) -> Any:
13369
+ InstanceTemplateSchedulingOnInstanceStopAction.__key_warning(key)
13370
+ return super().__getitem__(key)
13371
+
13372
+ def get(self, key: str, default = None) -> Any:
13373
+ InstanceTemplateSchedulingOnInstanceStopAction.__key_warning(key)
13374
+ return super().get(key, default)
13375
+
13376
+ def __init__(__self__, *,
13377
+ discard_local_ssd: Optional[bool] = None):
13378
+ """
13379
+ :param 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.
13380
+ """
13381
+ if discard_local_ssd is not None:
13382
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
13383
+
13384
+ @property
13385
+ @pulumi.getter(name="discardLocalSsd")
13386
+ def discard_local_ssd(self) -> Optional[bool]:
13387
+ """
13388
+ Whether to discard local SSDs attached to the VM while terminating using `max_run_duration`. Only supports `true` at this point.
13389
+ """
13390
+ return pulumi.get(self, "discard_local_ssd")
13391
+
13392
+
13184
13393
  @pulumi.output_type
13185
13394
  class InstanceTemplateServiceAccount(dict):
13186
13395
  def __init__(__self__, *,
@@ -19792,7 +20001,7 @@ class RegionInstanceGroupManagerUpdatePolicy(dict):
19792
20001
  most_disruptive_allowed_action: Optional[str] = None,
19793
20002
  replacement_method: Optional[str] = None):
19794
20003
  """
19795
- :param str minimal_action: Minimal action to be taken on an instance. You can specify either `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
20004
+ :param str minimal_action: Minimal action to be taken on an instance. You can specify either `NONE` to forbid any actions, `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
19796
20005
  :param str type: The type of update process. You can specify either `PROACTIVE` so that the instance group manager proactively executes actions in order to bring instances to their target versions or `OPPORTUNISTIC` so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).
19797
20006
  :param str instance_redistribution_type: The instance redistribution policy for regional managed instance groups. Valid values are: `"PROACTIVE"`, `"NONE"`. If `PROACTIVE` (default), the group attempts to maintain an even distribution of VM instances across zones in the region. If `NONE`, proactive redistribution is disabled.
19798
20007
  :param int max_surge_fixed: , The maximum number of instances that can be created above the specified targetSize during the update process. Conflicts with `max_surge_percent`. It has to be either 0 or at least equal to the number of zones. If fixed values are used, at least one of `max_unavailable_fixed` or `max_surge_fixed` must be greater than 0.
@@ -19827,7 +20036,7 @@ class RegionInstanceGroupManagerUpdatePolicy(dict):
19827
20036
  @pulumi.getter(name="minimalAction")
19828
20037
  def minimal_action(self) -> str:
19829
20038
  """
19830
- Minimal action to be taken on an instance. You can specify either `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
20039
+ Minimal action to be taken on an instance. You can specify either `NONE` to forbid any actions, `REFRESH` to update without stopping instances, `RESTART` to restart existing instances or `REPLACE` to delete and create new instances from the target template. If you specify a `REFRESH`, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
19831
20040
  """
19832
20041
  return pulumi.get(self, "minimal_action")
19833
20042
 
@@ -20096,8 +20305,8 @@ class RegionInstanceTemplateConfidentialInstanceConfig(dict):
20096
20305
  confidential_instance_type: Optional[str] = None,
20097
20306
  enable_confidential_compute: Optional[bool] = None):
20098
20307
  """
20099
- :param str confidential_instance_type: Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
20100
- :param bool enable_confidential_compute: Defines whether the instance should have confidential compute enabled on AMD SEV. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
20308
+ :param str confidential_instance_type: Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` can be set to MIGRATE if `confidential_instance_type` is set to `SEV` and `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
20309
+ :param bool enable_confidential_compute: Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, `on_host_maintenance` can be set to MIGRATE if `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
20101
20310
  """
20102
20311
  if confidential_instance_type is not None:
20103
20312
  pulumi.set(__self__, "confidential_instance_type", confidential_instance_type)
@@ -20108,7 +20317,7 @@ class RegionInstanceTemplateConfidentialInstanceConfig(dict):
20108
20317
  @pulumi.getter(name="confidentialInstanceType")
20109
20318
  def confidential_instance_type(self) -> Optional[str]:
20110
20319
  """
20111
- Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
20320
+ Defines the confidential computing technology the instance uses. SEV is an AMD feature. One of the following values: `SEV`, `SEV_SNP`. `on_host_maintenance` can be set to MIGRATE if `confidential_instance_type` is set to `SEV` and `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM. If `SEV_SNP`, currently `min_cpu_platform` has to be set to `"AMD Milan"` or this will fail to create the VM.
20112
20321
  """
20113
20322
  return pulumi.get(self, "confidential_instance_type")
20114
20323
 
@@ -20116,7 +20325,7 @@ class RegionInstanceTemplateConfidentialInstanceConfig(dict):
20116
20325
  @pulumi.getter(name="enableConfidentialCompute")
20117
20326
  def enable_confidential_compute(self) -> Optional[bool]:
20118
20327
  """
20119
- Defines whether the instance should have confidential compute enabled on AMD SEV. `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
20328
+ Defines whether the instance should have confidential compute enabled with AMD SEV. If enabled, `on_host_maintenance` can be set to MIGRATE if `min_cpu_platform` is set to `"AMD Milan"`. Otherwise, `on_host_maintenance` has to be set to TERMINATE or this will fail to create the VM.
20120
20329
  """
20121
20330
  return pulumi.get(self, "enable_confidential_compute")
20122
20331
 
@@ -21237,6 +21446,8 @@ class RegionInstanceTemplateScheduling(dict):
21237
21446
  suggest = "node_affinities"
21238
21447
  elif key == "onHostMaintenance":
21239
21448
  suggest = "on_host_maintenance"
21449
+ elif key == "onInstanceStopAction":
21450
+ suggest = "on_instance_stop_action"
21240
21451
  elif key == "provisioningModel":
21241
21452
  suggest = "provisioning_model"
21242
21453
 
@@ -21260,6 +21471,7 @@ class RegionInstanceTemplateScheduling(dict):
21260
21471
  min_node_cpus: Optional[int] = None,
21261
21472
  node_affinities: Optional[Sequence['outputs.RegionInstanceTemplateSchedulingNodeAffinity']] = None,
21262
21473
  on_host_maintenance: Optional[str] = None,
21474
+ on_instance_stop_action: Optional['outputs.RegionInstanceTemplateSchedulingOnInstanceStopAction'] = None,
21263
21475
  preemptible: Optional[bool] = None,
21264
21476
  provisioning_model: Optional[str] = None):
21265
21477
  """
@@ -21281,6 +21493,7 @@ class RegionInstanceTemplateScheduling(dict):
21281
21493
  Structure documented below.
21282
21494
  :param str on_host_maintenance: Defines the maintenance behavior for this
21283
21495
  instance.
21496
+ :param 'RegionInstanceTemplateSchedulingOnInstanceStopActionArgs' on_instance_stop_action: Defines the behaviour for instances with the instance_termination_action.
21284
21497
  :param bool preemptible: Allows instance to be preempted. This defaults to
21285
21498
  false. Read more on this
21286
21499
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -21305,6 +21518,8 @@ class RegionInstanceTemplateScheduling(dict):
21305
21518
  pulumi.set(__self__, "node_affinities", node_affinities)
21306
21519
  if on_host_maintenance is not None:
21307
21520
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
21521
+ if on_instance_stop_action is not None:
21522
+ pulumi.set(__self__, "on_instance_stop_action", on_instance_stop_action)
21308
21523
  if preemptible is not None:
21309
21524
  pulumi.set(__self__, "preemptible", preemptible)
21310
21525
  if provisioning_model is not None:
@@ -21384,6 +21599,14 @@ class RegionInstanceTemplateScheduling(dict):
21384
21599
  """
21385
21600
  return pulumi.get(self, "on_host_maintenance")
21386
21601
 
21602
+ @property
21603
+ @pulumi.getter(name="onInstanceStopAction")
21604
+ def on_instance_stop_action(self) -> Optional['outputs.RegionInstanceTemplateSchedulingOnInstanceStopAction']:
21605
+ """
21606
+ Defines the behaviour for instances with the instance_termination_action.
21607
+ """
21608
+ return pulumi.get(self, "on_instance_stop_action")
21609
+
21387
21610
  @property
21388
21611
  @pulumi.getter
21389
21612
  def preemptible(self) -> Optional[bool]:
@@ -21522,6 +21745,42 @@ class RegionInstanceTemplateSchedulingNodeAffinity(dict):
21522
21745
  return pulumi.get(self, "values")
21523
21746
 
21524
21747
 
21748
+ @pulumi.output_type
21749
+ class RegionInstanceTemplateSchedulingOnInstanceStopAction(dict):
21750
+ @staticmethod
21751
+ def __key_warning(key: str):
21752
+ suggest = None
21753
+ if key == "discardLocalSsd":
21754
+ suggest = "discard_local_ssd"
21755
+
21756
+ if suggest:
21757
+ pulumi.log.warn(f"Key '{key}' not found in RegionInstanceTemplateSchedulingOnInstanceStopAction. Access the value via the '{suggest}' property getter instead.")
21758
+
21759
+ def __getitem__(self, key: str) -> Any:
21760
+ RegionInstanceTemplateSchedulingOnInstanceStopAction.__key_warning(key)
21761
+ return super().__getitem__(key)
21762
+
21763
+ def get(self, key: str, default = None) -> Any:
21764
+ RegionInstanceTemplateSchedulingOnInstanceStopAction.__key_warning(key)
21765
+ return super().get(key, default)
21766
+
21767
+ def __init__(__self__, *,
21768
+ discard_local_ssd: Optional[bool] = None):
21769
+ """
21770
+ :param bool discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
21771
+ """
21772
+ if discard_local_ssd is not None:
21773
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
21774
+
21775
+ @property
21776
+ @pulumi.getter(name="discardLocalSsd")
21777
+ def discard_local_ssd(self) -> Optional[bool]:
21778
+ """
21779
+ If true, the contents of any attached Local SSD disks will be discarded.
21780
+ """
21781
+ return pulumi.get(self, "discard_local_ssd")
21782
+
21783
+
21525
21784
  @pulumi.output_type
21526
21785
  class RegionInstanceTemplateServiceAccount(dict):
21527
21786
  def __init__(__self__, *,
@@ -31133,6 +31392,7 @@ class SecurityPolicyAdvancedOptionsConfig(dict):
31133
31392
  :param str json_parsing: Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
31134
31393
  * `DISABLED` - Don't parse JSON payloads in POST bodies.
31135
31394
  * `STANDARD` - Parse JSON payloads in POST bodies.
31395
+ * `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.
31136
31396
  :param str log_level: Log level to use. Defaults to `NORMAL`.
31137
31397
  * `NORMAL` - Normal log level.
31138
31398
  * `VERBOSE` - Verbose log level.
@@ -31163,6 +31423,7 @@ class SecurityPolicyAdvancedOptionsConfig(dict):
31163
31423
  Whether or not to JSON parse the payload body. Defaults to `DISABLED`.
31164
31424
  * `DISABLED` - Don't parse JSON payloads in POST bodies.
31165
31425
  * `STANDARD` - Parse JSON payloads in POST bodies.
31426
+ * `STANDARD_WITH_GRAPHQL` - Parse JSON and GraphQL payloads in POST bodies.
31166
31427
  """
31167
31428
  return pulumi.get(self, "json_parsing")
31168
31429
 
@@ -31931,24 +32192,24 @@ class SecurityPolicyRuleRateLimitOptions(dict):
31931
32192
  @staticmethod
31932
32193
  def __key_warning(key: str):
31933
32194
  suggest = None
31934
- if key == "conformAction":
31935
- suggest = "conform_action"
31936
- elif key == "exceedAction":
31937
- suggest = "exceed_action"
31938
- elif key == "rateLimitThreshold":
31939
- suggest = "rate_limit_threshold"
31940
- elif key == "banDurationSec":
32195
+ if key == "banDurationSec":
31941
32196
  suggest = "ban_duration_sec"
31942
32197
  elif key == "banThreshold":
31943
32198
  suggest = "ban_threshold"
32199
+ elif key == "conformAction":
32200
+ suggest = "conform_action"
31944
32201
  elif key == "enforceOnKey":
31945
32202
  suggest = "enforce_on_key"
31946
32203
  elif key == "enforceOnKeyConfigs":
31947
32204
  suggest = "enforce_on_key_configs"
31948
32205
  elif key == "enforceOnKeyName":
31949
32206
  suggest = "enforce_on_key_name"
32207
+ elif key == "exceedAction":
32208
+ suggest = "exceed_action"
31950
32209
  elif key == "exceedRedirectOptions":
31951
32210
  suggest = "exceed_redirect_options"
32211
+ elif key == "rateLimitThreshold":
32212
+ suggest = "rate_limit_threshold"
31952
32213
 
31953
32214
  if suggest:
31954
32215
  pulumi.log.warn(f"Key '{key}' not found in SecurityPolicyRuleRateLimitOptions. Access the value via the '{suggest}' property getter instead.")
@@ -31962,90 +32223,73 @@ class SecurityPolicyRuleRateLimitOptions(dict):
31962
32223
  return super().get(key, default)
31963
32224
 
31964
32225
  def __init__(__self__, *,
31965
- conform_action: str,
31966
- exceed_action: str,
31967
- rate_limit_threshold: 'outputs.SecurityPolicyRuleRateLimitOptionsRateLimitThreshold',
31968
32226
  ban_duration_sec: Optional[int] = None,
31969
32227
  ban_threshold: Optional['outputs.SecurityPolicyRuleRateLimitOptionsBanThreshold'] = None,
32228
+ conform_action: Optional[str] = None,
31970
32229
  enforce_on_key: Optional[str] = None,
31971
32230
  enforce_on_key_configs: Optional[Sequence['outputs.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig']] = None,
31972
32231
  enforce_on_key_name: Optional[str] = None,
31973
- exceed_redirect_options: Optional['outputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions'] = None):
32232
+ exceed_action: Optional[str] = None,
32233
+ exceed_redirect_options: Optional['outputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions'] = None,
32234
+ rate_limit_threshold: Optional['outputs.SecurityPolicyRuleRateLimitOptionsRateLimitThreshold'] = None):
31974
32235
  """
31975
- :param str conform_action: Action to take for requests that are under the configured rate limit threshold. Valid option is `allow` only.
31976
- :param str exceed_action: When a request is denied, returns the HTTP response code specified.
31977
- Valid options are `deny()` where valid values for status are 403, 404, 429, and 502.
31978
- :param 'SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs' rate_limit_threshold: Threshold at which to begin ratelimiting. Structure is documented below.
31979
- :param int ban_duration_sec: Can only be specified if the `action` for the rule is `rate_based_ban`.
32236
+ :param int ban_duration_sec: Can only be specified if the action for the rule is "rate_based_ban".
31980
32237
  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.
31981
- :param 'SecurityPolicyRuleRateLimitOptionsBanThresholdArgs' ban_threshold: Can only be specified if the `action` for the rule is `rate_based_ban`.
31982
- 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
31983
- exceed this `ban_threshold`. Structure is documented below.
31984
- :param str enforce_on_key: Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
31985
-
31986
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
31987
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
31988
- * `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`.
31989
- * `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`.
31990
- * `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`.
31991
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
31992
- * `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.
31993
- * `REGION_CODE`: The country/region from which the request originates.
31994
- :param Sequence['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.
31995
-
31996
- **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.
32238
+ :param 'SecurityPolicyRuleRateLimitOptionsBanThresholdArgs' ban_threshold: Can only be specified if the action for the rule is "rate_based_ban".
32239
+ If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
32240
+ Structure is documented below.
32241
+ :param str conform_action: Action to take for requests that are under the configured rate limit threshold.
32242
+ Valid option is "allow" only.
32243
+ :param str enforce_on_key: Determines the key to enforce the rateLimitThreshold on. Possible values are:
32244
+ * 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.
32245
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
32246
+ * 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.
32247
+ * 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.
32248
+ * 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.
32249
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
32250
+ * 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.
32251
+ * REGION_CODE: The country/region from which the request originates.
32252
+ * 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.
32253
+ * 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.
32254
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
32255
+ :param Sequence['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.
32256
+ You can specify up to 3 enforceOnKeyConfigs.
32257
+ If enforceOnKeyConfigs is specified, enforceOnKey must not be specified.
32258
+ Structure is documented below.
31997
32259
  :param str enforce_on_key_name: Rate limit key name applicable only for the following key types:
31998
-
31999
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32000
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
32001
- :param '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.
32260
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
32261
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
32262
+ :param 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.
32263
+ Valid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.
32264
+ :param '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.
32265
+ Structure is documented below.
32266
+ :param 'SecurityPolicyRuleRateLimitOptionsRateLimitThresholdArgs' rate_limit_threshold: Threshold at which to begin ratelimiting.
32267
+ Structure is documented below.
32002
32268
  """
32003
- pulumi.set(__self__, "conform_action", conform_action)
32004
- pulumi.set(__self__, "exceed_action", exceed_action)
32005
- pulumi.set(__self__, "rate_limit_threshold", rate_limit_threshold)
32006
32269
  if ban_duration_sec is not None:
32007
32270
  pulumi.set(__self__, "ban_duration_sec", ban_duration_sec)
32008
32271
  if ban_threshold is not None:
32009
32272
  pulumi.set(__self__, "ban_threshold", ban_threshold)
32273
+ if conform_action is not None:
32274
+ pulumi.set(__self__, "conform_action", conform_action)
32010
32275
  if enforce_on_key is not None:
32011
32276
  pulumi.set(__self__, "enforce_on_key", enforce_on_key)
32012
32277
  if enforce_on_key_configs is not None:
32013
32278
  pulumi.set(__self__, "enforce_on_key_configs", enforce_on_key_configs)
32014
32279
  if enforce_on_key_name is not None:
32015
32280
  pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
32281
+ if exceed_action is not None:
32282
+ pulumi.set(__self__, "exceed_action", exceed_action)
32016
32283
  if exceed_redirect_options is not None:
32017
32284
  pulumi.set(__self__, "exceed_redirect_options", exceed_redirect_options)
32018
-
32019
- @property
32020
- @pulumi.getter(name="conformAction")
32021
- def conform_action(self) -> str:
32022
- """
32023
- Action to take for requests that are under the configured rate limit threshold. Valid option is `allow` only.
32024
- """
32025
- return pulumi.get(self, "conform_action")
32026
-
32027
- @property
32028
- @pulumi.getter(name="exceedAction")
32029
- def exceed_action(self) -> str:
32030
- """
32031
- When a request is denied, returns the HTTP response code specified.
32032
- Valid options are `deny()` where valid values for status are 403, 404, 429, and 502.
32033
- """
32034
- return pulumi.get(self, "exceed_action")
32035
-
32036
- @property
32037
- @pulumi.getter(name="rateLimitThreshold")
32038
- def rate_limit_threshold(self) -> 'outputs.SecurityPolicyRuleRateLimitOptionsRateLimitThreshold':
32039
- """
32040
- Threshold at which to begin ratelimiting. Structure is documented below.
32041
- """
32042
- return pulumi.get(self, "rate_limit_threshold")
32285
+ if rate_limit_threshold is not None:
32286
+ pulumi.set(__self__, "rate_limit_threshold", rate_limit_threshold)
32043
32287
 
32044
32288
  @property
32045
32289
  @pulumi.getter(name="banDurationSec")
32046
32290
  def ban_duration_sec(self) -> Optional[int]:
32047
32291
  """
32048
- Can only be specified if the `action` for the rule is `rate_based_ban`.
32292
+ Can only be specified if the action for the rule is "rate_based_ban".
32049
32293
  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.
32050
32294
  """
32051
32295
  return pulumi.get(self, "ban_duration_sec")
@@ -32054,26 +32298,37 @@ class SecurityPolicyRuleRateLimitOptions(dict):
32054
32298
  @pulumi.getter(name="banThreshold")
32055
32299
  def ban_threshold(self) -> Optional['outputs.SecurityPolicyRuleRateLimitOptionsBanThreshold']:
32056
32300
  """
32057
- Can only be specified if the `action` for the rule is `rate_based_ban`.
32058
- 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
32059
- exceed this `ban_threshold`. Structure is documented below.
32301
+ Can only be specified if the action for the rule is "rate_based_ban".
32302
+ If specified, the key will be banned for the configured 'banDurationSec' when the number of requests that exceed the 'rateLimitThreshold' also exceed this 'banThreshold'.
32303
+ Structure is documented below.
32060
32304
  """
32061
32305
  return pulumi.get(self, "ban_threshold")
32062
32306
 
32307
+ @property
32308
+ @pulumi.getter(name="conformAction")
32309
+ def conform_action(self) -> Optional[str]:
32310
+ """
32311
+ Action to take for requests that are under the configured rate limit threshold.
32312
+ Valid option is "allow" only.
32313
+ """
32314
+ return pulumi.get(self, "conform_action")
32315
+
32063
32316
  @property
32064
32317
  @pulumi.getter(name="enforceOnKey")
32065
32318
  def enforce_on_key(self) -> Optional[str]:
32066
32319
  """
32067
- Determines the key to enforce the rate_limit_threshold on. If not specified, defaults to `ALL`.
32068
-
32069
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
32070
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
32071
- * `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`.
32072
- * `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`.
32073
- * `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`.
32074
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
32075
- * `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.
32076
- * `REGION_CODE`: The country/region from which the request originates.
32320
+ Determines the key to enforce the rateLimitThreshold on. Possible values are:
32321
+ * 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.
32322
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
32323
+ * 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.
32324
+ * 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.
32325
+ * 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.
32326
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
32327
+ * 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.
32328
+ * REGION_CODE: The country/region from which the request originates.
32329
+ * 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.
32330
+ * 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.
32331
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
32077
32332
  """
32078
32333
  return pulumi.get(self, "enforce_on_key")
32079
32334
 
@@ -32081,9 +32336,10 @@ class SecurityPolicyRuleRateLimitOptions(dict):
32081
32336
  @pulumi.getter(name="enforceOnKeyConfigs")
32082
32337
  def enforce_on_key_configs(self) -> Optional[Sequence['outputs.SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig']]:
32083
32338
  """
32084
- 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.
32085
-
32086
- **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.
32339
+ If specified, any combination of values of enforceOnKeyType/enforceOnKeyName is treated as the key on which ratelimit threshold/action is enforced.
32340
+ You can specify up to 3 enforceOnKeyConfigs.
32341
+ If enforceOnKeyConfigs is specified, enforceOnKey must not be specified.
32342
+ Structure is documented below.
32087
32343
  """
32088
32344
  return pulumi.get(self, "enforce_on_key_configs")
32089
32345
 
@@ -32092,20 +32348,38 @@ class SecurityPolicyRuleRateLimitOptions(dict):
32092
32348
  def enforce_on_key_name(self) -> Optional[str]:
32093
32349
  """
32094
32350
  Rate limit key name applicable only for the following key types:
32095
-
32096
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32097
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
32351
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
32352
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
32098
32353
  """
32099
32354
  return pulumi.get(self, "enforce_on_key_name")
32100
32355
 
32356
+ @property
32357
+ @pulumi.getter(name="exceedAction")
32358
+ def exceed_action(self) -> Optional[str]:
32359
+ """
32360
+ 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.
32361
+ Valid options are deny(STATUS), where valid values for STATUS are 403, 404, 429, and 502.
32362
+ """
32363
+ return pulumi.get(self, "exceed_action")
32364
+
32101
32365
  @property
32102
32366
  @pulumi.getter(name="exceedRedirectOptions")
32103
32367
  def exceed_redirect_options(self) -> Optional['outputs.SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions']:
32104
32368
  """
32105
- Parameters defining the redirect action that is used as the exceed action. Cannot be specified if the exceed action is not redirect.
32369
+ 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.
32370
+ Structure is documented below.
32106
32371
  """
32107
32372
  return pulumi.get(self, "exceed_redirect_options")
32108
32373
 
32374
+ @property
32375
+ @pulumi.getter(name="rateLimitThreshold")
32376
+ def rate_limit_threshold(self) -> Optional['outputs.SecurityPolicyRuleRateLimitOptionsRateLimitThreshold']:
32377
+ """
32378
+ Threshold at which to begin ratelimiting.
32379
+ Structure is documented below.
32380
+ """
32381
+ return pulumi.get(self, "rate_limit_threshold")
32382
+
32109
32383
 
32110
32384
  @pulumi.output_type
32111
32385
  class SecurityPolicyRuleRateLimitOptionsBanThreshold(dict):
@@ -32127,18 +32401,20 @@ class SecurityPolicyRuleRateLimitOptionsBanThreshold(dict):
32127
32401
  return super().get(key, default)
32128
32402
 
32129
32403
  def __init__(__self__, *,
32130
- count: int,
32131
- interval_sec: int):
32404
+ count: Optional[int] = None,
32405
+ interval_sec: Optional[int] = None):
32132
32406
  """
32133
32407
  :param int count: Number of HTTP(S) requests for calculating the threshold.
32134
32408
  :param int interval_sec: Interval over which the threshold is computed.
32135
32409
  """
32136
- pulumi.set(__self__, "count", count)
32137
- pulumi.set(__self__, "interval_sec", interval_sec)
32410
+ if count is not None:
32411
+ pulumi.set(__self__, "count", count)
32412
+ if interval_sec is not None:
32413
+ pulumi.set(__self__, "interval_sec", interval_sec)
32138
32414
 
32139
32415
  @property
32140
32416
  @pulumi.getter
32141
- def count(self) -> int:
32417
+ def count(self) -> Optional[int]:
32142
32418
  """
32143
32419
  Number of HTTP(S) requests for calculating the threshold.
32144
32420
  """
@@ -32146,7 +32422,7 @@ class SecurityPolicyRuleRateLimitOptionsBanThreshold(dict):
32146
32422
 
32147
32423
  @property
32148
32424
  @pulumi.getter(name="intervalSec")
32149
- def interval_sec(self) -> int:
32425
+ def interval_sec(self) -> Optional[int]:
32150
32426
  """
32151
32427
  Interval over which the threshold is computed.
32152
32428
  """
@@ -32179,19 +32455,20 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
32179
32455
  enforce_on_key_type: Optional[str] = None):
32180
32456
  """
32181
32457
  :param str enforce_on_key_name: Rate limit key name applicable only for the following key types:
32182
-
32183
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32184
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
32185
- :param str enforce_on_key_type: Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
32186
-
32187
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
32188
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
32189
- * `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`.
32190
- * `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`.
32191
- * `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`.
32192
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
32193
- * `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.
32194
- * `REGION_CODE`: The country/region from which the request originates.
32458
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
32459
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
32460
+ :param str enforce_on_key_type: Determines the key to enforce the rateLimitThreshold on. Possible values are:
32461
+ * 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.
32462
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
32463
+ * 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.
32464
+ * 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.
32465
+ * 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.
32466
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
32467
+ * 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.
32468
+ * REGION_CODE: The country/region from which the request originates.
32469
+ * 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.
32470
+ * 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.
32471
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
32195
32472
  """
32196
32473
  if enforce_on_key_name is not None:
32197
32474
  pulumi.set(__self__, "enforce_on_key_name", enforce_on_key_name)
@@ -32203,9 +32480,8 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
32203
32480
  def enforce_on_key_name(self) -> Optional[str]:
32204
32481
  """
32205
32482
  Rate limit key name applicable only for the following key types:
32206
-
32207
- * `HTTP_HEADER` -- Name of the HTTP header whose value is taken as the key value.
32208
- * `HTTP_COOKIE` -- Name of the HTTP cookie whose value is taken as the key value.
32483
+ HTTP_HEADER -- Name of the HTTP header whose value is taken as the key value.
32484
+ HTTP_COOKIE -- Name of the HTTP cookie whose value is taken as the key value.
32209
32485
  """
32210
32486
  return pulumi.get(self, "enforce_on_key_name")
32211
32487
 
@@ -32213,16 +32489,18 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
32213
32489
  @pulumi.getter(name="enforceOnKeyType")
32214
32490
  def enforce_on_key_type(self) -> Optional[str]:
32215
32491
  """
32216
- Determines the key to enforce the `rate_limit_threshold` on. If not specified, defaults to `ALL`.
32217
-
32218
- * `ALL`: A single rate limit threshold is applied to all the requests matching this rule.
32219
- * `IP`: The source IP address of the request is the key. Each IP has this limit enforced separately.
32220
- * `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`.
32221
- * `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`.
32222
- * `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`.
32223
- * `HTTP_PATH`: The URL path of the HTTP request. The key value is truncated to the first 128 bytes
32224
- * `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.
32225
- * `REGION_CODE`: The country/region from which the request originates.
32492
+ Determines the key to enforce the rateLimitThreshold on. Possible values are:
32493
+ * 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.
32494
+ * IP: The source IP address of the request is the key. Each IP has this limit enforced separately.
32495
+ * 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.
32496
+ * 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.
32497
+ * 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.
32498
+ * HTTP_PATH: The URL path of the HTTP request. The key value is truncated to the first 128 bytes.
32499
+ * 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.
32500
+ * REGION_CODE: The country/region from which the request originates.
32501
+ * 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.
32502
+ * 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.
32503
+ Possible values are: `ALL`, `IP`, `HTTP_HEADER`, `XFF_IP`, `HTTP_COOKIE`, `HTTP_PATH`, `SNI`, `REGION_CODE`, `TLS_JA3_FINGERPRINT`, `USER_IP`.
32226
32504
  """
32227
32505
  return pulumi.get(self, "enforce_on_key_type")
32228
32506
 
@@ -32230,31 +32508,32 @@ class SecurityPolicyRuleRateLimitOptionsEnforceOnKeyConfig(dict):
32230
32508
  @pulumi.output_type
32231
32509
  class SecurityPolicyRuleRateLimitOptionsExceedRedirectOptions(dict):
32232
32510
  def __init__(__self__, *,
32233
- type: str,
32234
- target: Optional[str] = None):
32511
+ target: Optional[str] = None,
32512
+ type: Optional[str] = None):
32235
32513
  """
32514
+ :param str target: Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
32236
32515
  :param str type: Type of the redirect action.
32237
- :param str target: Target for the redirect action. This is required if the type is `EXTERNAL_302` and cannot be specified for `GOOGLE_RECAPTCHA`.
32238
32516
  """
32239
- pulumi.set(__self__, "type", type)
32240
32517
  if target is not None:
32241
32518
  pulumi.set(__self__, "target", target)
32519
+ if type is not None:
32520
+ pulumi.set(__self__, "type", type)
32242
32521
 
32243
32522
  @property
32244
32523
  @pulumi.getter
32245
- def type(self) -> str:
32524
+ def target(self) -> Optional[str]:
32246
32525
  """
32247
- Type of the redirect action.
32526
+ Target for the redirect action. This is required if the type is EXTERNAL_302 and cannot be specified for GOOGLE_RECAPTCHA.
32248
32527
  """
32249
- return pulumi.get(self, "type")
32528
+ return pulumi.get(self, "target")
32250
32529
 
32251
32530
  @property
32252
32531
  @pulumi.getter
32253
- def target(self) -> Optional[str]:
32532
+ def type(self) -> Optional[str]:
32254
32533
  """
32255
- Target for the redirect action. This is required if the type is `EXTERNAL_302` and cannot be specified for `GOOGLE_RECAPTCHA`.
32534
+ Type of the redirect action.
32256
32535
  """
32257
- return pulumi.get(self, "target")
32536
+ return pulumi.get(self, "type")
32258
32537
 
32259
32538
 
32260
32539
  @pulumi.output_type
@@ -32277,18 +32556,20 @@ class SecurityPolicyRuleRateLimitOptionsRateLimitThreshold(dict):
32277
32556
  return super().get(key, default)
32278
32557
 
32279
32558
  def __init__(__self__, *,
32280
- count: int,
32281
- interval_sec: int):
32559
+ count: Optional[int] = None,
32560
+ interval_sec: Optional[int] = None):
32282
32561
  """
32283
32562
  :param int count: Number of HTTP(S) requests for calculating the threshold.
32284
32563
  :param int interval_sec: Interval over which the threshold is computed.
32285
32564
  """
32286
- pulumi.set(__self__, "count", count)
32287
- pulumi.set(__self__, "interval_sec", interval_sec)
32565
+ if count is not None:
32566
+ pulumi.set(__self__, "count", count)
32567
+ if interval_sec is not None:
32568
+ pulumi.set(__self__, "interval_sec", interval_sec)
32288
32569
 
32289
32570
  @property
32290
32571
  @pulumi.getter
32291
- def count(self) -> int:
32572
+ def count(self) -> Optional[int]:
32292
32573
  """
32293
32574
  Number of HTTP(S) requests for calculating the threshold.
32294
32575
  """
@@ -32296,7 +32577,7 @@ class SecurityPolicyRuleRateLimitOptionsRateLimitThreshold(dict):
32296
32577
 
32297
32578
  @property
32298
32579
  @pulumi.getter(name="intervalSec")
32299
- def interval_sec(self) -> int:
32580
+ def interval_sec(self) -> Optional[int]:
32300
32581
  """
32301
32582
  Interval over which the threshold is computed.
32302
32583
  """
@@ -43978,7 +44259,7 @@ class GetInstanceGroupManagerUpdatePolicyResult(dict):
43978
44259
  :param int max_unavailable_fixed: The maximum number of instances that can be unavailable during the update process. Conflicts with max_unavailable_percent. If neither is set, defaults to 1.
43979
44260
  :param int max_unavailable_percent: The maximum number of instances(calculated as percentage) that can be unavailable during the update process. Conflicts with max_unavailable_fixed.
43980
44261
  :param int min_ready_sec: Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].
43981
- :param str minimal_action: Minimal action to be taken on an instance. You can specify either REFRESH to update without stopping instances, RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a REFRESH, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
44262
+ :param str minimal_action: Minimal action to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to update without stopping instances, RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a REFRESH, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
43982
44263
  :param str most_disruptive_allowed_action: Most disruptive action that is allowed to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to allow actions that do not need instance restart, RESTART to allow actions that can be applied without instance replacing or REPLACE to allow all possible actions. If the Updater determines that the minimal update action needed is more disruptive than most disruptive allowed action you specify it will not perform the update at all.
43983
44264
  :param str replacement_method: The instance replacement method for managed instance groups. Valid values are: "RECREATE", "SUBSTITUTE". If SUBSTITUTE (default), the group replaces VM instances with new instances that have randomly generated names. If RECREATE, instance names are preserved. You must also set max_unavailable_fixed or max_unavailable_percent to be greater than 0.
43984
44265
  :param str type: The type of update process. You can specify either PROACTIVE so that the instance group manager proactively executes actions in order to bring instances to their target versions or OPPORTUNISTIC so that no action is proactively executed but the update will be performed as part of other actions (for example, resizes or recreateInstances calls).
@@ -44037,7 +44318,7 @@ class GetInstanceGroupManagerUpdatePolicyResult(dict):
44037
44318
  @pulumi.getter(name="minimalAction")
44038
44319
  def minimal_action(self) -> str:
44039
44320
  """
44040
- Minimal action to be taken on an instance. You can specify either REFRESH to update without stopping instances, RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a REFRESH, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
44321
+ Minimal action to be taken on an instance. You can specify either NONE to forbid any actions, REFRESH to update without stopping instances, RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a REFRESH, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.
44041
44322
  """
44042
44323
  return pulumi.get(self, "minimal_action")
44043
44324
 
@@ -44636,6 +44917,7 @@ class GetInstanceSchedulingResult(dict):
44636
44917
  min_node_cpus: int,
44637
44918
  node_affinities: Sequence['outputs.GetInstanceSchedulingNodeAffinityResult'],
44638
44919
  on_host_maintenance: str,
44920
+ on_instance_stop_actions: Sequence['outputs.GetInstanceSchedulingOnInstanceStopActionResult'],
44639
44921
  preemptible: bool,
44640
44922
  provisioning_model: str):
44641
44923
  """
@@ -44652,6 +44934,7 @@ class GetInstanceSchedulingResult(dict):
44652
44934
  :param str on_host_maintenance: Describes maintenance behavior for the
44653
44935
  instance. One of `MIGRATE` or `TERMINATE`, for more info, read
44654
44936
  [here](https://cloud.google.com/compute/docs/instances/setting-instance-scheduling-options)
44937
+ :param Sequence['GetInstanceSchedulingOnInstanceStopActionArgs'] on_instance_stop_actions: Defines the behaviour for instances with the instance_termination_action.
44655
44938
  :param bool preemptible: Whether the instance is preemptible.
44656
44939
  :param str provisioning_model: Describe the type of preemptible VM.
44657
44940
  """
@@ -44663,6 +44946,7 @@ class GetInstanceSchedulingResult(dict):
44663
44946
  pulumi.set(__self__, "min_node_cpus", min_node_cpus)
44664
44947
  pulumi.set(__self__, "node_affinities", node_affinities)
44665
44948
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
44949
+ pulumi.set(__self__, "on_instance_stop_actions", on_instance_stop_actions)
44666
44950
  pulumi.set(__self__, "preemptible", preemptible)
44667
44951
  pulumi.set(__self__, "provisioning_model", provisioning_model)
44668
44952
 
@@ -44733,6 +45017,14 @@ class GetInstanceSchedulingResult(dict):
44733
45017
  """
44734
45018
  return pulumi.get(self, "on_host_maintenance")
44735
45019
 
45020
+ @property
45021
+ @pulumi.getter(name="onInstanceStopActions")
45022
+ def on_instance_stop_actions(self) -> Sequence['outputs.GetInstanceSchedulingOnInstanceStopActionResult']:
45023
+ """
45024
+ Defines the behaviour for instances with the instance_termination_action.
45025
+ """
45026
+ return pulumi.get(self, "on_instance_stop_actions")
45027
+
44736
45028
  @property
44737
45029
  @pulumi.getter
44738
45030
  def preemptible(self) -> bool:
@@ -44850,6 +45142,24 @@ class GetInstanceSchedulingNodeAffinityResult(dict):
44850
45142
  return pulumi.get(self, "values")
44851
45143
 
44852
45144
 
45145
+ @pulumi.output_type
45146
+ class GetInstanceSchedulingOnInstanceStopActionResult(dict):
45147
+ def __init__(__self__, *,
45148
+ discard_local_ssd: bool):
45149
+ """
45150
+ :param bool discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
45151
+ """
45152
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
45153
+
45154
+ @property
45155
+ @pulumi.getter(name="discardLocalSsd")
45156
+ def discard_local_ssd(self) -> bool:
45157
+ """
45158
+ If true, the contents of any attached Local SSD disks will be discarded.
45159
+ """
45160
+ return pulumi.get(self, "discard_local_ssd")
45161
+
45162
+
44853
45163
  @pulumi.output_type
44854
45164
  class GetInstanceScratchDiskResult(dict):
44855
45165
  def __init__(__self__, *,
@@ -45869,6 +46179,7 @@ class GetInstanceTemplateSchedulingResult(dict):
45869
46179
  min_node_cpus: int,
45870
46180
  node_affinities: Sequence['outputs.GetInstanceTemplateSchedulingNodeAffinityResult'],
45871
46181
  on_host_maintenance: str,
46182
+ on_instance_stop_actions: Sequence['outputs.GetInstanceTemplateSchedulingOnInstanceStopActionResult'],
45872
46183
  preemptible: bool,
45873
46184
  provisioning_model: str):
45874
46185
  """
@@ -45890,6 +46201,7 @@ class GetInstanceTemplateSchedulingResult(dict):
45890
46201
  Structure documented below.
45891
46202
  :param str on_host_maintenance: Defines the maintenance behavior for this
45892
46203
  instance.
46204
+ :param Sequence['GetInstanceTemplateSchedulingOnInstanceStopActionArgs'] on_instance_stop_actions: Defines the behaviour for instances with the instance_termination_action.
45893
46205
  :param bool preemptible: Allows instance to be preempted. This defaults to
45894
46206
  false. Read more on this
45895
46207
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -45903,6 +46215,7 @@ class GetInstanceTemplateSchedulingResult(dict):
45903
46215
  pulumi.set(__self__, "min_node_cpus", min_node_cpus)
45904
46216
  pulumi.set(__self__, "node_affinities", node_affinities)
45905
46217
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
46218
+ pulumi.set(__self__, "on_instance_stop_actions", on_instance_stop_actions)
45906
46219
  pulumi.set(__self__, "preemptible", preemptible)
45907
46220
  pulumi.set(__self__, "provisioning_model", provisioning_model)
45908
46221
 
@@ -45980,6 +46293,14 @@ class GetInstanceTemplateSchedulingResult(dict):
45980
46293
  """
45981
46294
  return pulumi.get(self, "on_host_maintenance")
45982
46295
 
46296
+ @property
46297
+ @pulumi.getter(name="onInstanceStopActions")
46298
+ def on_instance_stop_actions(self) -> Sequence['outputs.GetInstanceTemplateSchedulingOnInstanceStopActionResult']:
46299
+ """
46300
+ Defines the behaviour for instances with the instance_termination_action.
46301
+ """
46302
+ return pulumi.get(self, "on_instance_stop_actions")
46303
+
45983
46304
  @property
45984
46305
  @pulumi.getter
45985
46306
  def preemptible(self) -> bool:
@@ -46111,6 +46432,24 @@ class GetInstanceTemplateSchedulingNodeAffinityResult(dict):
46111
46432
  return pulumi.get(self, "values")
46112
46433
 
46113
46434
 
46435
+ @pulumi.output_type
46436
+ class GetInstanceTemplateSchedulingOnInstanceStopActionResult(dict):
46437
+ def __init__(__self__, *,
46438
+ discard_local_ssd: bool):
46439
+ """
46440
+ :param bool discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
46441
+ """
46442
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
46443
+
46444
+ @property
46445
+ @pulumi.getter(name="discardLocalSsd")
46446
+ def discard_local_ssd(self) -> bool:
46447
+ """
46448
+ If true, the contents of any attached Local SSD disks will be discarded.
46449
+ """
46450
+ return pulumi.get(self, "discard_local_ssd")
46451
+
46452
+
46114
46453
  @pulumi.output_type
46115
46454
  class GetInstanceTemplateServiceAccountResult(dict):
46116
46455
  def __init__(__self__, *,
@@ -47477,6 +47816,7 @@ class GetRegionInstanceTemplateSchedulingResult(dict):
47477
47816
  min_node_cpus: int,
47478
47817
  node_affinities: Sequence['outputs.GetRegionInstanceTemplateSchedulingNodeAffinityResult'],
47479
47818
  on_host_maintenance: str,
47819
+ on_instance_stop_actions: Sequence['outputs.GetRegionInstanceTemplateSchedulingOnInstanceStopActionResult'],
47480
47820
  preemptible: bool,
47481
47821
  provisioning_model: str):
47482
47822
  """
@@ -47498,6 +47838,7 @@ class GetRegionInstanceTemplateSchedulingResult(dict):
47498
47838
  Structure documented below.
47499
47839
  :param str on_host_maintenance: Defines the maintenance behavior for this
47500
47840
  instance.
47841
+ :param Sequence['GetRegionInstanceTemplateSchedulingOnInstanceStopActionArgs'] on_instance_stop_actions: Defines the behaviour for instances with the instance_termination_action.
47501
47842
  :param bool preemptible: Allows instance to be preempted. This defaults to
47502
47843
  false. Read more on this
47503
47844
  [here](https://cloud.google.com/compute/docs/instances/preemptible).
@@ -47511,6 +47852,7 @@ class GetRegionInstanceTemplateSchedulingResult(dict):
47511
47852
  pulumi.set(__self__, "min_node_cpus", min_node_cpus)
47512
47853
  pulumi.set(__self__, "node_affinities", node_affinities)
47513
47854
  pulumi.set(__self__, "on_host_maintenance", on_host_maintenance)
47855
+ pulumi.set(__self__, "on_instance_stop_actions", on_instance_stop_actions)
47514
47856
  pulumi.set(__self__, "preemptible", preemptible)
47515
47857
  pulumi.set(__self__, "provisioning_model", provisioning_model)
47516
47858
 
@@ -47588,6 +47930,14 @@ class GetRegionInstanceTemplateSchedulingResult(dict):
47588
47930
  """
47589
47931
  return pulumi.get(self, "on_host_maintenance")
47590
47932
 
47933
+ @property
47934
+ @pulumi.getter(name="onInstanceStopActions")
47935
+ def on_instance_stop_actions(self) -> Sequence['outputs.GetRegionInstanceTemplateSchedulingOnInstanceStopActionResult']:
47936
+ """
47937
+ Defines the behaviour for instances with the instance_termination_action.
47938
+ """
47939
+ return pulumi.get(self, "on_instance_stop_actions")
47940
+
47591
47941
  @property
47592
47942
  @pulumi.getter
47593
47943
  def preemptible(self) -> bool:
@@ -47719,6 +48069,24 @@ class GetRegionInstanceTemplateSchedulingNodeAffinityResult(dict):
47719
48069
  return pulumi.get(self, "values")
47720
48070
 
47721
48071
 
48072
+ @pulumi.output_type
48073
+ class GetRegionInstanceTemplateSchedulingOnInstanceStopActionResult(dict):
48074
+ def __init__(__self__, *,
48075
+ discard_local_ssd: bool):
48076
+ """
48077
+ :param bool discard_local_ssd: If true, the contents of any attached Local SSD disks will be discarded.
48078
+ """
48079
+ pulumi.set(__self__, "discard_local_ssd", discard_local_ssd)
48080
+
48081
+ @property
48082
+ @pulumi.getter(name="discardLocalSsd")
48083
+ def discard_local_ssd(self) -> bool:
48084
+ """
48085
+ If true, the contents of any attached Local SSD disks will be discarded.
48086
+ """
48087
+ return pulumi.get(self, "discard_local_ssd")
48088
+
48089
+
47722
48090
  @pulumi.output_type
47723
48091
  class GetRegionInstanceTemplateServiceAccountResult(dict):
47724
48092
  def __init__(__self__, *,
@@ -49703,3 +50071,83 @@ class GetSubnetworkSecondaryIpRangeResult(dict):
49703
50071
  return pulumi.get(self, "range_name")
49704
50072
 
49705
50073
 
50074
+ @pulumi.output_type
50075
+ class GetSubnetworksSubnetworkResult(dict):
50076
+ def __init__(__self__, *,
50077
+ description: str,
50078
+ ip_cidr_range: str,
50079
+ name: str,
50080
+ network: str,
50081
+ network_self_link: str,
50082
+ private_ip_google_access: bool,
50083
+ self_link: str):
50084
+ """
50085
+ :param str description: Description of the subnetwork.
50086
+ :param str ip_cidr_range: The IP address range represented as a CIDR block.
50087
+ :param str name: The name of the subnetwork.
50088
+ :param str network: The self link of the parent network.
50089
+ :param bool private_ip_google_access: Whether the VMs in the subnet can access Google services without assigned external IP addresses.
50090
+ :param str self_link: The self link of the subnetwork.
50091
+ """
50092
+ pulumi.set(__self__, "description", description)
50093
+ pulumi.set(__self__, "ip_cidr_range", ip_cidr_range)
50094
+ pulumi.set(__self__, "name", name)
50095
+ pulumi.set(__self__, "network", network)
50096
+ pulumi.set(__self__, "network_self_link", network_self_link)
50097
+ pulumi.set(__self__, "private_ip_google_access", private_ip_google_access)
50098
+ pulumi.set(__self__, "self_link", self_link)
50099
+
50100
+ @property
50101
+ @pulumi.getter
50102
+ def description(self) -> str:
50103
+ """
50104
+ Description of the subnetwork.
50105
+ """
50106
+ return pulumi.get(self, "description")
50107
+
50108
+ @property
50109
+ @pulumi.getter(name="ipCidrRange")
50110
+ def ip_cidr_range(self) -> str:
50111
+ """
50112
+ The IP address range represented as a CIDR block.
50113
+ """
50114
+ return pulumi.get(self, "ip_cidr_range")
50115
+
50116
+ @property
50117
+ @pulumi.getter
50118
+ def name(self) -> str:
50119
+ """
50120
+ The name of the subnetwork.
50121
+ """
50122
+ return pulumi.get(self, "name")
50123
+
50124
+ @property
50125
+ @pulumi.getter
50126
+ def network(self) -> str:
50127
+ """
50128
+ The self link of the parent network.
50129
+ """
50130
+ return pulumi.get(self, "network")
50131
+
50132
+ @property
50133
+ @pulumi.getter(name="networkSelfLink")
50134
+ def network_self_link(self) -> str:
50135
+ return pulumi.get(self, "network_self_link")
50136
+
50137
+ @property
50138
+ @pulumi.getter(name="privateIpGoogleAccess")
50139
+ def private_ip_google_access(self) -> bool:
50140
+ """
50141
+ Whether the VMs in the subnet can access Google services without assigned external IP addresses.
50142
+ """
50143
+ return pulumi.get(self, "private_ip_google_access")
50144
+
50145
+ @property
50146
+ @pulumi.getter(name="selfLink")
50147
+ def self_link(self) -> str:
50148
+ """
50149
+ The self link of the subnetwork.
50150
+ """
50151
+ return pulumi.get(self, "self_link")
50152
+
50153
+