pulumi-gcp 8.20.0a1739946722__py3-none-any.whl → 8.21.0a1740033009__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 (189) hide show
  1. pulumi_gcp/__init__.py +48 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +168 -8
  3. pulumi_gcp/accesscontextmanager/get_access_policy_iam_policy.py +2 -2
  4. pulumi_gcp/accesscontextmanager/outputs.py +104 -8
  5. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +78 -3
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +78 -3
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +78 -3
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +78 -3
  9. pulumi_gcp/alloydb/__init__.py +1 -0
  10. pulumi_gcp/alloydb/get_instance.py +466 -0
  11. pulumi_gcp/alloydb/outputs.py +352 -0
  12. pulumi_gcp/apigateway/get_api_config_iam_policy.py +20 -2
  13. pulumi_gcp/apigateway/get_api_iam_policy.py +20 -2
  14. pulumi_gcp/apigateway/get_gateway_iam_policy.py +22 -2
  15. pulumi_gcp/apigee/get_environment_iam_policy.py +2 -2
  16. pulumi_gcp/artifactregistry/get_repository_iam_policy.py +2 -2
  17. pulumi_gcp/beyondcorp/get_application_iam_policy.py +2 -2
  18. pulumi_gcp/beyondcorp/get_security_gateway_iam_policy.py +2 -2
  19. pulumi_gcp/bigquery/connection.py +2 -14
  20. pulumi_gcp/bigquery/get_connection_iam_policy.py +2 -2
  21. pulumi_gcp/bigquery/get_table_iam_policy.py +2 -2
  22. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_binding.py +8 -8
  23. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_member.py +8 -8
  24. pulumi_gcp/bigqueryanalyticshub/data_exchange_iam_policy.py +8 -8
  25. pulumi_gcp/bigqueryanalyticshub/get_data_exchange_iam_policy.py +2 -2
  26. pulumi_gcp/bigqueryanalyticshub/get_listing_iam_policy.py +2 -2
  27. pulumi_gcp/bigqueryanalyticshub/listing_iam_binding.py +8 -8
  28. pulumi_gcp/bigqueryanalyticshub/listing_iam_member.py +8 -8
  29. pulumi_gcp/bigqueryanalyticshub/listing_iam_policy.py +8 -8
  30. pulumi_gcp/bigquerydatapolicy/get_iam_policy.py +2 -2
  31. pulumi_gcp/binaryauthorization/get_attestor_iam_policy.py +2 -2
  32. pulumi_gcp/certificateauthority/get_ca_pool_iam_policy.py +2 -2
  33. pulumi_gcp/certificateauthority/get_certificate_template_iam_policy.py +2 -2
  34. pulumi_gcp/cloudbuildv2/get_connection_iam_policy.py +2 -2
  35. pulumi_gcp/clouddeploy/get_custom_target_type_iam_policy.py +2 -2
  36. pulumi_gcp/clouddeploy/get_delivery_pipeline_iam_policy.py +2 -2
  37. pulumi_gcp/clouddeploy/get_target_iam_policy.py +2 -2
  38. pulumi_gcp/cloudfunctions/get_function_iam_policy.py +2 -2
  39. pulumi_gcp/cloudfunctionsv2/get_function_iam_policy.py +2 -2
  40. pulumi_gcp/cloudrun/_inputs.py +6 -3
  41. pulumi_gcp/cloudrun/get_service_iam_policy.py +2 -2
  42. pulumi_gcp/cloudrun/outputs.py +4 -2
  43. pulumi_gcp/cloudrunv2/get_job_iam_policy.py +2 -2
  44. pulumi_gcp/cloudrunv2/get_service_iam_policy.py +2 -2
  45. pulumi_gcp/cloudtasks/get_queue_iam_policy.py +2 -2
  46. pulumi_gcp/colab/get_runtime_template_iam_policy.py +2 -2
  47. pulumi_gcp/composer/_inputs.py +6 -6
  48. pulumi_gcp/composer/outputs.py +8 -8
  49. pulumi_gcp/compute/_inputs.py +756 -30
  50. pulumi_gcp/compute/firewall_policy_rule.py +0 -2
  51. pulumi_gcp/compute/get_backend_bucket_iam_policy.py +20 -2
  52. pulumi_gcp/compute/get_backend_service_iam_policy.py +20 -2
  53. pulumi_gcp/compute/get_disk_iam_policy.py +2 -2
  54. pulumi_gcp/compute/get_hc_vpn_gateway.py +45 -1
  55. pulumi_gcp/compute/get_image_iam_policy.py +2 -2
  56. pulumi_gcp/compute/get_instance_iam_policy.py +2 -2
  57. pulumi_gcp/compute/get_instance_template_iam_policy.py +2 -2
  58. pulumi_gcp/compute/get_machine_image_iam_policy.py +20 -2
  59. pulumi_gcp/compute/get_region_backend_service_iam_policy.py +22 -2
  60. pulumi_gcp/compute/get_region_disk_iam_policy.py +2 -2
  61. pulumi_gcp/compute/get_snapshot_iam_policy.py +2 -2
  62. pulumi_gcp/compute/get_subnetwork_iam_policy.py +2 -2
  63. pulumi_gcp/compute/ha_vpn_gateway.py +189 -2
  64. pulumi_gcp/compute/instance_template.py +14 -35
  65. pulumi_gcp/compute/outputs.py +796 -18
  66. pulumi_gcp/config/__init__.pyi +2 -0
  67. pulumi_gcp/config/vars.py +4 -0
  68. pulumi_gcp/container/_inputs.py +447 -3
  69. pulumi_gcp/container/outputs.py +469 -5
  70. pulumi_gcp/containeranalysis/get_note_iam_policy.py +2 -2
  71. pulumi_gcp/datacatalog/entry_group_iam_binding.py +8 -8
  72. pulumi_gcp/datacatalog/entry_group_iam_member.py +8 -8
  73. pulumi_gcp/datacatalog/entry_group_iam_policy.py +8 -8
  74. pulumi_gcp/datacatalog/get_entry_group_iam_policy.py +2 -2
  75. pulumi_gcp/datacatalog/get_policy_tag_iam_policy.py +2 -2
  76. pulumi_gcp/datacatalog/get_tag_template_iam_policy.py +2 -2
  77. pulumi_gcp/datacatalog/get_taxonomy_iam_policy.py +2 -2
  78. pulumi_gcp/datacatalog/policy_tag_iam_binding.py +8 -8
  79. pulumi_gcp/datacatalog/policy_tag_iam_member.py +8 -8
  80. pulumi_gcp/datacatalog/policy_tag_iam_policy.py +8 -8
  81. pulumi_gcp/datacatalog/tag_template_iam_binding.py +8 -8
  82. pulumi_gcp/datacatalog/tag_template_iam_member.py +8 -8
  83. pulumi_gcp/datacatalog/tag_template_iam_policy.py +8 -8
  84. pulumi_gcp/datacatalog/taxonomy_iam_binding.py +8 -8
  85. pulumi_gcp/datacatalog/taxonomy_iam_member.py +8 -8
  86. pulumi_gcp/datacatalog/taxonomy_iam_policy.py +8 -8
  87. pulumi_gcp/dataform/get_repository_iam_policy.py +22 -2
  88. pulumi_gcp/datafusion/get_instance_iam_policy.py +2 -2
  89. pulumi_gcp/dataplex/get_aspect_type_iam_policy.py +2 -2
  90. pulumi_gcp/dataplex/get_asset_iam_policy.py +2 -2
  91. pulumi_gcp/dataplex/get_datascan_iam_policy.py +2 -2
  92. pulumi_gcp/dataplex/get_entry_group_iam_policy.py +2 -2
  93. pulumi_gcp/dataplex/get_entry_type_iam_policy.py +2 -2
  94. pulumi_gcp/dataplex/get_lake_iam_policy.py +2 -2
  95. pulumi_gcp/dataplex/get_task_iam_policy.py +2 -2
  96. pulumi_gcp/dataplex/get_zone_iam_policy.py +2 -2
  97. pulumi_gcp/dataproc/get_autoscaling_policy_iam_policy.py +2 -2
  98. pulumi_gcp/dataproc/get_metastore_federation_iam_policy.py +2 -2
  99. pulumi_gcp/dataproc/get_metastore_service_iam_policy.py +2 -2
  100. pulumi_gcp/dataproc/metastore_federation_iam_binding.py +8 -8
  101. pulumi_gcp/dataproc/metastore_federation_iam_member.py +8 -8
  102. pulumi_gcp/dataproc/metastore_federation_iam_policy.py +8 -8
  103. pulumi_gcp/dataproc/metastore_service_iam_binding.py +8 -8
  104. pulumi_gcp/dataproc/metastore_service_iam_member.py +8 -8
  105. pulumi_gcp/dataproc/metastore_service_iam_policy.py +8 -8
  106. pulumi_gcp/dns/get_managed_zone_iam_policy.py +2 -2
  107. pulumi_gcp/endpoints/get_service_iam_policy.py +2 -2
  108. pulumi_gcp/eventarc/_inputs.py +29 -8
  109. pulumi_gcp/eventarc/google_channel_config.py +58 -46
  110. pulumi_gcp/eventarc/outputs.py +20 -6
  111. pulumi_gcp/eventarc/trigger.py +95 -72
  112. pulumi_gcp/filestore/backup.py +4 -4
  113. pulumi_gcp/firebase/__init__.py +1 -0
  114. pulumi_gcp/firebase/data_connect_service.py +937 -0
  115. pulumi_gcp/gemini/__init__.py +4 -0
  116. pulumi_gcp/gemini/data_sharing_with_google_setting.py +607 -0
  117. pulumi_gcp/gemini/gemini_gcp_enablement_setting.py +608 -0
  118. pulumi_gcp/gemini/get_repository_group_iam_policy.py +2 -2
  119. pulumi_gcp/gemini/logging_setting.py +42 -54
  120. pulumi_gcp/gemini/logging_setting_binding.py +722 -0
  121. pulumi_gcp/gemini/release_channel_setting.py +39 -43
  122. pulumi_gcp/gemini/release_channel_setting_binding.py +734 -0
  123. pulumi_gcp/gkebackup/get_backup_plan_iam_policy.py +2 -2
  124. pulumi_gcp/gkebackup/get_restore_plan_iam_policy.py +2 -2
  125. pulumi_gcp/gkehub/get_feature_iam_policy.py +2 -2
  126. pulumi_gcp/gkehub/get_membership_iam_policy.py +2 -2
  127. pulumi_gcp/gkehub/get_scope_iam_policy.py +2 -2
  128. pulumi_gcp/healthcare/get_consent_store_iam_policy.py +2 -2
  129. pulumi_gcp/iap/get_app_engine_service_iam_policy.py +2 -2
  130. pulumi_gcp/iap/get_app_engine_version_iam_policy.py +2 -2
  131. pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +2 -2
  132. pulumi_gcp/iap/get_tunnel_iam_policy.py +2 -2
  133. pulumi_gcp/iap/get_tunnel_instance_iam_policy.py +2 -2
  134. pulumi_gcp/iap/get_web_backend_service_iam_policy.py +2 -2
  135. pulumi_gcp/iap/get_web_iam_policy.py +2 -2
  136. pulumi_gcp/iap/get_web_region_backend_service_iam_policy.py +2 -2
  137. pulumi_gcp/iap/get_web_type_app_engine_iam_policy.py +2 -2
  138. pulumi_gcp/iap/get_web_type_compute_iam_policy.py +2 -2
  139. pulumi_gcp/kms/get_ekm_connection_iam_policy.py +2 -2
  140. pulumi_gcp/logging/get_log_view_iam_policy.py +2 -2
  141. pulumi_gcp/monitoring/_inputs.py +588 -0
  142. pulumi_gcp/monitoring/outputs.py +410 -0
  143. pulumi_gcp/netapp/__init__.py +1 -0
  144. pulumi_gcp/netapp/volume_quota_rule.py +895 -0
  145. pulumi_gcp/networksecurity/address_group_iam_binding.py +4 -4
  146. pulumi_gcp/networksecurity/address_group_iam_member.py +4 -4
  147. pulumi_gcp/networksecurity/address_group_iam_policy.py +4 -4
  148. pulumi_gcp/networkservices/authz_extension.py +8 -15
  149. pulumi_gcp/networkservices/mesh.py +79 -12
  150. pulumi_gcp/notebooks/get_instance_iam_policy.py +2 -2
  151. pulumi_gcp/notebooks/get_runtime_iam_policy.py +2 -2
  152. pulumi_gcp/provider.py +20 -0
  153. pulumi_gcp/pubsub/get_schema_iam_policy.py +2 -2
  154. pulumi_gcp/pubsub/get_topic_iam_policy.py +2 -2
  155. pulumi_gcp/pulumi-plugin.json +1 -1
  156. pulumi_gcp/runtimeconfig/get_config_iam_policy.py +20 -2
  157. pulumi_gcp/secretmanager/get_regional_secret_iam_policy.py +2 -2
  158. pulumi_gcp/secretmanager/get_secret_iam_policy.py +2 -2
  159. pulumi_gcp/securesourcemanager/get_instance_iam_policy.py +2 -2
  160. pulumi_gcp/securesourcemanager/get_repository_iam_policy.py +2 -2
  161. pulumi_gcp/securitycenter/get_source_iam_policy.py +2 -2
  162. pulumi_gcp/securitycenter/get_v2_organization_source_iam_policy.py +2 -2
  163. pulumi_gcp/securitycenter/mute_config.py +136 -3
  164. pulumi_gcp/securitycenter/v2_folder_notification_config.py +2 -14
  165. pulumi_gcp/securitycenter/v2_organization_notification_config.py +2 -14
  166. pulumi_gcp/securitycenter/v2_organization_source_iam_binding.py +8 -8
  167. pulumi_gcp/securitycenter/v2_organization_source_iam_member.py +8 -8
  168. pulumi_gcp/securitycenter/v2_organization_source_iam_policy.py +8 -8
  169. pulumi_gcp/securitycenter/v2_project_notification_config.py +2 -14
  170. pulumi_gcp/servicedirectory/get_namespace_iam_policy.py +18 -2
  171. pulumi_gcp/servicedirectory/get_service_iam_policy.py +18 -2
  172. pulumi_gcp/sourcerepo/get_repository_iam_policy.py +2 -2
  173. pulumi_gcp/spanner/instance.py +0 -46
  174. pulumi_gcp/sql/_inputs.py +6 -6
  175. pulumi_gcp/sql/outputs.py +4 -4
  176. pulumi_gcp/storage/bucket.py +30 -0
  177. pulumi_gcp/storage/get_bucket_iam_policy.py +2 -2
  178. pulumi_gcp/tags/get_tag_key_iam_policy.py +2 -2
  179. pulumi_gcp/tags/get_tag_value_iam_policy.py +2 -2
  180. pulumi_gcp/vertex/get_ai_endpoint_iam_policy.py +22 -2
  181. pulumi_gcp/vertex/get_ai_featurestore_entitytype_iam_policy.py +20 -2
  182. pulumi_gcp/vertex/get_ai_featurestore_iam_policy.py +22 -2
  183. pulumi_gcp/workbench/get_instance_iam_policy.py +2 -2
  184. pulumi_gcp/workstations/get_workstation_config_iam_policy.py +24 -2
  185. pulumi_gcp/workstations/get_workstation_iam_policy.py +26 -2
  186. {pulumi_gcp-8.20.0a1739946722.dist-info → pulumi_gcp-8.21.0a1740033009.dist-info}/METADATA +1 -1
  187. {pulumi_gcp-8.20.0a1739946722.dist-info → pulumi_gcp-8.21.0a1740033009.dist-info}/RECORD +189 -182
  188. {pulumi_gcp-8.20.0a1739946722.dist-info → pulumi_gcp-8.21.0a1740033009.dist-info}/WHEEL +0 -0
  189. {pulumi_gcp-8.20.0a1739946722.dist-info → pulumi_gcp-8.21.0a1740033009.dist-info}/top_level.txt +0 -0
@@ -207,6 +207,10 @@ __all__ = [
207
207
  'InstanceFromMachineImageReservationAffinitySpecificReservationArgsDict',
208
208
  'InstanceFromMachineImageSchedulingArgs',
209
209
  'InstanceFromMachineImageSchedulingArgsDict',
210
+ 'InstanceFromMachineImageSchedulingGracefulShutdownArgs',
211
+ 'InstanceFromMachineImageSchedulingGracefulShutdownArgsDict',
212
+ 'InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgs',
213
+ 'InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgsDict',
210
214
  'InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs',
211
215
  'InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgsDict',
212
216
  'InstanceFromMachineImageSchedulingMaxRunDurationArgs',
@@ -251,6 +255,10 @@ __all__ = [
251
255
  'InstanceFromTemplateReservationAffinitySpecificReservationArgsDict',
252
256
  'InstanceFromTemplateSchedulingArgs',
253
257
  'InstanceFromTemplateSchedulingArgsDict',
258
+ 'InstanceFromTemplateSchedulingGracefulShutdownArgs',
259
+ 'InstanceFromTemplateSchedulingGracefulShutdownArgsDict',
260
+ 'InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgs',
261
+ 'InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgsDict',
254
262
  'InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
255
263
  'InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict',
256
264
  'InstanceFromTemplateSchedulingMaxRunDurationArgs',
@@ -325,6 +333,10 @@ __all__ = [
325
333
  'InstanceReservationAffinitySpecificReservationArgsDict',
326
334
  'InstanceSchedulingArgs',
327
335
  'InstanceSchedulingArgsDict',
336
+ 'InstanceSchedulingGracefulShutdownArgs',
337
+ 'InstanceSchedulingGracefulShutdownArgsDict',
338
+ 'InstanceSchedulingGracefulShutdownMaxDurationArgs',
339
+ 'InstanceSchedulingGracefulShutdownMaxDurationArgsDict',
328
340
  'InstanceSchedulingLocalSsdRecoveryTimeoutArgs',
329
341
  'InstanceSchedulingLocalSsdRecoveryTimeoutArgsDict',
330
342
  'InstanceSchedulingMaxRunDurationArgs',
@@ -375,6 +387,10 @@ __all__ = [
375
387
  'InstanceTemplateReservationAffinitySpecificReservationArgsDict',
376
388
  'InstanceTemplateSchedulingArgs',
377
389
  'InstanceTemplateSchedulingArgsDict',
390
+ 'InstanceTemplateSchedulingGracefulShutdownArgs',
391
+ 'InstanceTemplateSchedulingGracefulShutdownArgsDict',
392
+ 'InstanceTemplateSchedulingGracefulShutdownMaxDurationArgs',
393
+ 'InstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict',
378
394
  'InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
379
395
  'InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict',
380
396
  'InstanceTemplateSchedulingMaxRunDurationArgs',
@@ -649,6 +665,10 @@ __all__ = [
649
665
  'RegionInstanceTemplateReservationAffinitySpecificReservationArgsDict',
650
666
  'RegionInstanceTemplateSchedulingArgs',
651
667
  'RegionInstanceTemplateSchedulingArgsDict',
668
+ 'RegionInstanceTemplateSchedulingGracefulShutdownArgs',
669
+ 'RegionInstanceTemplateSchedulingGracefulShutdownArgsDict',
670
+ 'RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgs',
671
+ 'RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict',
652
672
  'RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs',
653
673
  'RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict',
654
674
  'RegionInstanceTemplateSchedulingMaxRunDurationArgs',
@@ -12574,6 +12594,10 @@ if not MYPY:
12574
12594
  """
12575
12595
  Specifies the availability domain, which this instance should be scheduled on.
12576
12596
  """
12597
+ graceful_shutdown: NotRequired[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownArgsDict']]
12598
+ """
12599
+ Settings for the instance to perform a graceful shutdown.
12600
+ """
12577
12601
  host_error_timeout_seconds: NotRequired[pulumi.Input[int]]
12578
12602
  """
12579
12603
  Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
@@ -12626,6 +12650,7 @@ class InstanceFromMachineImageSchedulingArgs:
12626
12650
  def __init__(__self__, *,
12627
12651
  automatic_restart: Optional[pulumi.Input[bool]] = None,
12628
12652
  availability_domain: Optional[pulumi.Input[int]] = None,
12653
+ graceful_shutdown: Optional[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownArgs']] = None,
12629
12654
  host_error_timeout_seconds: Optional[pulumi.Input[int]] = None,
12630
12655
  instance_termination_action: Optional[pulumi.Input[str]] = None,
12631
12656
  local_ssd_recovery_timeout: Optional[pulumi.Input['InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs']] = None,
@@ -12640,6 +12665,7 @@ class InstanceFromMachineImageSchedulingArgs:
12640
12665
  """
12641
12666
  :param pulumi.Input[bool] automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).
12642
12667
  :param pulumi.Input[int] availability_domain: Specifies the availability domain, which this instance should be scheduled on.
12668
+ :param pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownArgs'] graceful_shutdown: Settings for the instance to perform a graceful shutdown.
12643
12669
  :param pulumi.Input[int] host_error_timeout_seconds: Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
12644
12670
  :param pulumi.Input[str] instance_termination_action: Specifies the action GCE should take when SPOT VM is preempted.
12645
12671
  :param pulumi.Input['InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while
@@ -12658,6 +12684,8 @@ class InstanceFromMachineImageSchedulingArgs:
12658
12684
  pulumi.set(__self__, "automatic_restart", automatic_restart)
12659
12685
  if availability_domain is not None:
12660
12686
  pulumi.set(__self__, "availability_domain", availability_domain)
12687
+ if graceful_shutdown is not None:
12688
+ pulumi.set(__self__, "graceful_shutdown", graceful_shutdown)
12661
12689
  if host_error_timeout_seconds is not None:
12662
12690
  pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds)
12663
12691
  if instance_termination_action is not None:
@@ -12705,6 +12733,18 @@ class InstanceFromMachineImageSchedulingArgs:
12705
12733
  def availability_domain(self, value: Optional[pulumi.Input[int]]):
12706
12734
  pulumi.set(self, "availability_domain", value)
12707
12735
 
12736
+ @property
12737
+ @pulumi.getter(name="gracefulShutdown")
12738
+ def graceful_shutdown(self) -> Optional[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownArgs']]:
12739
+ """
12740
+ Settings for the instance to perform a graceful shutdown.
12741
+ """
12742
+ return pulumi.get(self, "graceful_shutdown")
12743
+
12744
+ @graceful_shutdown.setter
12745
+ def graceful_shutdown(self, value: Optional[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownArgs']]):
12746
+ pulumi.set(self, "graceful_shutdown", value)
12747
+
12708
12748
  @property
12709
12749
  @pulumi.getter(name="hostErrorTimeoutSeconds")
12710
12750
  def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]:
@@ -12838,6 +12878,126 @@ class InstanceFromMachineImageSchedulingArgs:
12838
12878
  pulumi.set(self, "provisioning_model", value)
12839
12879
 
12840
12880
 
12881
+ if not MYPY:
12882
+ class InstanceFromMachineImageSchedulingGracefulShutdownArgsDict(TypedDict):
12883
+ enabled: pulumi.Input[bool]
12884
+ """
12885
+ Opts-in for graceful shutdown.
12886
+ """
12887
+ max_duration: NotRequired[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgsDict']]
12888
+ """
12889
+ The time allotted for the instance to gracefully shut down.
12890
+ If the graceful shutdown isn't complete after this time, then the instance
12891
+ transitions to the STOPPING state.
12892
+ """
12893
+ elif False:
12894
+ InstanceFromMachineImageSchedulingGracefulShutdownArgsDict: TypeAlias = Mapping[str, Any]
12895
+
12896
+ @pulumi.input_type
12897
+ class InstanceFromMachineImageSchedulingGracefulShutdownArgs:
12898
+ def __init__(__self__, *,
12899
+ enabled: pulumi.Input[bool],
12900
+ max_duration: Optional[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgs']] = None):
12901
+ """
12902
+ :param pulumi.Input[bool] enabled: Opts-in for graceful shutdown.
12903
+ :param pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgs'] max_duration: The time allotted for the instance to gracefully shut down.
12904
+ If the graceful shutdown isn't complete after this time, then the instance
12905
+ transitions to the STOPPING state.
12906
+ """
12907
+ pulumi.set(__self__, "enabled", enabled)
12908
+ if max_duration is not None:
12909
+ pulumi.set(__self__, "max_duration", max_duration)
12910
+
12911
+ @property
12912
+ @pulumi.getter
12913
+ def enabled(self) -> pulumi.Input[bool]:
12914
+ """
12915
+ Opts-in for graceful shutdown.
12916
+ """
12917
+ return pulumi.get(self, "enabled")
12918
+
12919
+ @enabled.setter
12920
+ def enabled(self, value: pulumi.Input[bool]):
12921
+ pulumi.set(self, "enabled", value)
12922
+
12923
+ @property
12924
+ @pulumi.getter(name="maxDuration")
12925
+ def max_duration(self) -> Optional[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgs']]:
12926
+ """
12927
+ The time allotted for the instance to gracefully shut down.
12928
+ If the graceful shutdown isn't complete after this time, then the instance
12929
+ transitions to the STOPPING state.
12930
+ """
12931
+ return pulumi.get(self, "max_duration")
12932
+
12933
+ @max_duration.setter
12934
+ def max_duration(self, value: Optional[pulumi.Input['InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgs']]):
12935
+ pulumi.set(self, "max_duration", value)
12936
+
12937
+
12938
+ if not MYPY:
12939
+ class InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgsDict(TypedDict):
12940
+ seconds: pulumi.Input[int]
12941
+ """
12942
+ Span of time at a resolution of a second.
12943
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).
12944
+ """
12945
+ nanos: NotRequired[pulumi.Input[int]]
12946
+ """
12947
+ Span of time that's a fraction of a second at nanosecond
12948
+ resolution. Durations less than one second are represented
12949
+ with a 0 seconds field and a positive nanos field. Must
12950
+ be from 0 to 999,999,999 inclusive.
12951
+ """
12952
+ elif False:
12953
+ InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgsDict: TypeAlias = Mapping[str, Any]
12954
+
12955
+ @pulumi.input_type
12956
+ class InstanceFromMachineImageSchedulingGracefulShutdownMaxDurationArgs:
12957
+ def __init__(__self__, *,
12958
+ seconds: pulumi.Input[int],
12959
+ nanos: Optional[pulumi.Input[int]] = None):
12960
+ """
12961
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
12962
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).
12963
+ :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
12964
+ resolution. Durations less than one second are represented
12965
+ with a 0 seconds field and a positive nanos field. Must
12966
+ be from 0 to 999,999,999 inclusive.
12967
+ """
12968
+ pulumi.set(__self__, "seconds", seconds)
12969
+ if nanos is not None:
12970
+ pulumi.set(__self__, "nanos", nanos)
12971
+
12972
+ @property
12973
+ @pulumi.getter
12974
+ def seconds(self) -> pulumi.Input[int]:
12975
+ """
12976
+ Span of time at a resolution of a second.
12977
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).
12978
+ """
12979
+ return pulumi.get(self, "seconds")
12980
+
12981
+ @seconds.setter
12982
+ def seconds(self, value: pulumi.Input[int]):
12983
+ pulumi.set(self, "seconds", value)
12984
+
12985
+ @property
12986
+ @pulumi.getter
12987
+ def nanos(self) -> Optional[pulumi.Input[int]]:
12988
+ """
12989
+ Span of time that's a fraction of a second at nanosecond
12990
+ resolution. Durations less than one second are represented
12991
+ with a 0 seconds field and a positive nanos field. Must
12992
+ be from 0 to 999,999,999 inclusive.
12993
+ """
12994
+ return pulumi.get(self, "nanos")
12995
+
12996
+ @nanos.setter
12997
+ def nanos(self, value: Optional[pulumi.Input[int]]):
12998
+ pulumi.set(self, "nanos", value)
12999
+
13000
+
12841
13001
  if not MYPY:
12842
13002
  class InstanceFromMachineImageSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
12843
13003
  seconds: pulumi.Input[int]
@@ -14800,6 +14960,10 @@ if not MYPY:
14800
14960
  """
14801
14961
  Specifies the availability domain, which this instance should be scheduled on.
14802
14962
  """
14963
+ graceful_shutdown: NotRequired[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownArgsDict']]
14964
+ """
14965
+ Settings for the instance to perform a graceful shutdown.
14966
+ """
14803
14967
  host_error_timeout_seconds: NotRequired[pulumi.Input[int]]
14804
14968
  """
14805
14969
  Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
@@ -14852,6 +15016,7 @@ class InstanceFromTemplateSchedulingArgs:
14852
15016
  def __init__(__self__, *,
14853
15017
  automatic_restart: Optional[pulumi.Input[bool]] = None,
14854
15018
  availability_domain: Optional[pulumi.Input[int]] = None,
15019
+ graceful_shutdown: Optional[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownArgs']] = None,
14855
15020
  host_error_timeout_seconds: Optional[pulumi.Input[int]] = None,
14856
15021
  instance_termination_action: Optional[pulumi.Input[str]] = None,
14857
15022
  local_ssd_recovery_timeout: Optional[pulumi.Input['InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs']] = None,
@@ -14866,6 +15031,7 @@ class InstanceFromTemplateSchedulingArgs:
14866
15031
  """
14867
15032
  :param pulumi.Input[bool] automatic_restart: Specifies if the instance should be restarted if it was terminated by Compute Engine (not a user).
14868
15033
  :param pulumi.Input[int] availability_domain: Specifies the availability domain, which this instance should be scheduled on.
15034
+ :param pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownArgs'] graceful_shutdown: Settings for the instance to perform a graceful shutdown.
14869
15035
  :param pulumi.Input[int] host_error_timeout_seconds: Specify the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
14870
15036
  :param pulumi.Input[str] instance_termination_action: Specifies the action GCE should take when SPOT VM is preempted.
14871
15037
  :param pulumi.Input['InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while
@@ -14884,6 +15050,8 @@ class InstanceFromTemplateSchedulingArgs:
14884
15050
  pulumi.set(__self__, "automatic_restart", automatic_restart)
14885
15051
  if availability_domain is not None:
14886
15052
  pulumi.set(__self__, "availability_domain", availability_domain)
15053
+ if graceful_shutdown is not None:
15054
+ pulumi.set(__self__, "graceful_shutdown", graceful_shutdown)
14887
15055
  if host_error_timeout_seconds is not None:
14888
15056
  pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds)
14889
15057
  if instance_termination_action is not None:
@@ -14931,6 +15099,18 @@ class InstanceFromTemplateSchedulingArgs:
14931
15099
  def availability_domain(self, value: Optional[pulumi.Input[int]]):
14932
15100
  pulumi.set(self, "availability_domain", value)
14933
15101
 
15102
+ @property
15103
+ @pulumi.getter(name="gracefulShutdown")
15104
+ def graceful_shutdown(self) -> Optional[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownArgs']]:
15105
+ """
15106
+ Settings for the instance to perform a graceful shutdown.
15107
+ """
15108
+ return pulumi.get(self, "graceful_shutdown")
15109
+
15110
+ @graceful_shutdown.setter
15111
+ def graceful_shutdown(self, value: Optional[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownArgs']]):
15112
+ pulumi.set(self, "graceful_shutdown", value)
15113
+
14934
15114
  @property
14935
15115
  @pulumi.getter(name="hostErrorTimeoutSeconds")
14936
15116
  def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]:
@@ -15064,6 +15244,126 @@ class InstanceFromTemplateSchedulingArgs:
15064
15244
  pulumi.set(self, "provisioning_model", value)
15065
15245
 
15066
15246
 
15247
+ if not MYPY:
15248
+ class InstanceFromTemplateSchedulingGracefulShutdownArgsDict(TypedDict):
15249
+ enabled: pulumi.Input[bool]
15250
+ """
15251
+ Opts-in for graceful shutdown.
15252
+ """
15253
+ max_duration: NotRequired[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgsDict']]
15254
+ """
15255
+ The time allotted for the instance to gracefully shut down.
15256
+ If the graceful shutdown isn't complete after this time, then the instance
15257
+ transitions to the STOPPING state.
15258
+ """
15259
+ elif False:
15260
+ InstanceFromTemplateSchedulingGracefulShutdownArgsDict: TypeAlias = Mapping[str, Any]
15261
+
15262
+ @pulumi.input_type
15263
+ class InstanceFromTemplateSchedulingGracefulShutdownArgs:
15264
+ def __init__(__self__, *,
15265
+ enabled: pulumi.Input[bool],
15266
+ max_duration: Optional[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgs']] = None):
15267
+ """
15268
+ :param pulumi.Input[bool] enabled: Opts-in for graceful shutdown.
15269
+ :param pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgs'] max_duration: The time allotted for the instance to gracefully shut down.
15270
+ If the graceful shutdown isn't complete after this time, then the instance
15271
+ transitions to the STOPPING state.
15272
+ """
15273
+ pulumi.set(__self__, "enabled", enabled)
15274
+ if max_duration is not None:
15275
+ pulumi.set(__self__, "max_duration", max_duration)
15276
+
15277
+ @property
15278
+ @pulumi.getter
15279
+ def enabled(self) -> pulumi.Input[bool]:
15280
+ """
15281
+ Opts-in for graceful shutdown.
15282
+ """
15283
+ return pulumi.get(self, "enabled")
15284
+
15285
+ @enabled.setter
15286
+ def enabled(self, value: pulumi.Input[bool]):
15287
+ pulumi.set(self, "enabled", value)
15288
+
15289
+ @property
15290
+ @pulumi.getter(name="maxDuration")
15291
+ def max_duration(self) -> Optional[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgs']]:
15292
+ """
15293
+ The time allotted for the instance to gracefully shut down.
15294
+ If the graceful shutdown isn't complete after this time, then the instance
15295
+ transitions to the STOPPING state.
15296
+ """
15297
+ return pulumi.get(self, "max_duration")
15298
+
15299
+ @max_duration.setter
15300
+ def max_duration(self, value: Optional[pulumi.Input['InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgs']]):
15301
+ pulumi.set(self, "max_duration", value)
15302
+
15303
+
15304
+ if not MYPY:
15305
+ class InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgsDict(TypedDict):
15306
+ seconds: pulumi.Input[int]
15307
+ """
15308
+ Span of time at a resolution of a second.
15309
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).
15310
+ """
15311
+ nanos: NotRequired[pulumi.Input[int]]
15312
+ """
15313
+ Span of time that's a fraction of a second at nanosecond
15314
+ resolution. Durations less than one second are represented
15315
+ with a 0 seconds field and a positive nanos field. Must
15316
+ be from 0 to 999,999,999 inclusive.
15317
+ """
15318
+ elif False:
15319
+ InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgsDict: TypeAlias = Mapping[str, Any]
15320
+
15321
+ @pulumi.input_type
15322
+ class InstanceFromTemplateSchedulingGracefulShutdownMaxDurationArgs:
15323
+ def __init__(__self__, *,
15324
+ seconds: pulumi.Input[int],
15325
+ nanos: Optional[pulumi.Input[int]] = None):
15326
+ """
15327
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
15328
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).
15329
+ :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
15330
+ resolution. Durations less than one second are represented
15331
+ with a 0 seconds field and a positive nanos field. Must
15332
+ be from 0 to 999,999,999 inclusive.
15333
+ """
15334
+ pulumi.set(__self__, "seconds", seconds)
15335
+ if nanos is not None:
15336
+ pulumi.set(__self__, "nanos", nanos)
15337
+
15338
+ @property
15339
+ @pulumi.getter
15340
+ def seconds(self) -> pulumi.Input[int]:
15341
+ """
15342
+ Span of time at a resolution of a second.
15343
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).
15344
+ """
15345
+ return pulumi.get(self, "seconds")
15346
+
15347
+ @seconds.setter
15348
+ def seconds(self, value: pulumi.Input[int]):
15349
+ pulumi.set(self, "seconds", value)
15350
+
15351
+ @property
15352
+ @pulumi.getter
15353
+ def nanos(self) -> Optional[pulumi.Input[int]]:
15354
+ """
15355
+ Span of time that's a fraction of a second at nanosecond
15356
+ resolution. Durations less than one second are represented
15357
+ with a 0 seconds field and a positive nanos field. Must
15358
+ be from 0 to 999,999,999 inclusive.
15359
+ """
15360
+ return pulumi.get(self, "nanos")
15361
+
15362
+ @nanos.setter
15363
+ def nanos(self, value: Optional[pulumi.Input[int]]):
15364
+ pulumi.set(self, "nanos", value)
15365
+
15366
+
15067
15367
  if not MYPY:
15068
15368
  class InstanceFromTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
15069
15369
  seconds: pulumi.Input[int]
@@ -17653,6 +17953,10 @@ if not MYPY:
17653
17953
  """
17654
17954
  Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
17655
17955
  """
17956
+ graceful_shutdown: NotRequired[pulumi.Input['InstanceSchedulingGracefulShutdownArgsDict']]
17957
+ """
17958
+ Settings for the instance to perform a graceful shutdown. Structure is documented below.
17959
+ """
17656
17960
  host_error_timeout_seconds: NotRequired[pulumi.Input[int]]
17657
17961
  """
17658
17962
  Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
@@ -17719,6 +18023,7 @@ class InstanceSchedulingArgs:
17719
18023
  def __init__(__self__, *,
17720
18024
  automatic_restart: Optional[pulumi.Input[bool]] = None,
17721
18025
  availability_domain: Optional[pulumi.Input[int]] = None,
18026
+ graceful_shutdown: Optional[pulumi.Input['InstanceSchedulingGracefulShutdownArgs']] = None,
17722
18027
  host_error_timeout_seconds: Optional[pulumi.Input[int]] = None,
17723
18028
  instance_termination_action: Optional[pulumi.Input[str]] = None,
17724
18029
  local_ssd_recovery_timeout: Optional[pulumi.Input['InstanceSchedulingLocalSsdRecoveryTimeoutArgs']] = None,
@@ -17735,6 +18040,7 @@ class InstanceSchedulingArgs:
17735
18040
  restarted if it was terminated by Compute Engine (not a user).
17736
18041
  Defaults to true.
17737
18042
  :param pulumi.Input[int] availability_domain: Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
18043
+ :param pulumi.Input['InstanceSchedulingGracefulShutdownArgs'] graceful_shutdown: Settings for the instance to perform a graceful shutdown. Structure is documented below.
17738
18044
  :param pulumi.Input[int] host_error_timeout_seconds: Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
17739
18045
  :param pulumi.Input[str] instance_termination_action: Describe the type of termination action for VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)
17740
18046
  :param pulumi.Input['InstanceSchedulingLocalSsdRecoveryTimeoutArgs'] local_ssd_recovery_timeout: Specifies the maximum amount of time a Local Ssd Vm should wait while
@@ -17765,6 +18071,8 @@ class InstanceSchedulingArgs:
17765
18071
  pulumi.set(__self__, "automatic_restart", automatic_restart)
17766
18072
  if availability_domain is not None:
17767
18073
  pulumi.set(__self__, "availability_domain", availability_domain)
18074
+ if graceful_shutdown is not None:
18075
+ pulumi.set(__self__, "graceful_shutdown", graceful_shutdown)
17768
18076
  if host_error_timeout_seconds is not None:
17769
18077
  pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds)
17770
18078
  if instance_termination_action is not None:
@@ -17814,6 +18122,18 @@ class InstanceSchedulingArgs:
17814
18122
  def availability_domain(self, value: Optional[pulumi.Input[int]]):
17815
18123
  pulumi.set(self, "availability_domain", value)
17816
18124
 
18125
+ @property
18126
+ @pulumi.getter(name="gracefulShutdown")
18127
+ def graceful_shutdown(self) -> Optional[pulumi.Input['InstanceSchedulingGracefulShutdownArgs']]:
18128
+ """
18129
+ Settings for the instance to perform a graceful shutdown. Structure is documented below.
18130
+ """
18131
+ return pulumi.get(self, "graceful_shutdown")
18132
+
18133
+ @graceful_shutdown.setter
18134
+ def graceful_shutdown(self, value: Optional[pulumi.Input['InstanceSchedulingGracefulShutdownArgs']]):
18135
+ pulumi.set(self, "graceful_shutdown", value)
18136
+
17817
18137
  @property
17818
18138
  @pulumi.getter(name="hostErrorTimeoutSeconds")
17819
18139
  def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]:
@@ -17962,34 +18282,91 @@ class InstanceSchedulingArgs:
17962
18282
 
17963
18283
 
17964
18284
  if not MYPY:
17965
- class InstanceSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
18285
+ class InstanceSchedulingGracefulShutdownArgsDict(TypedDict):
18286
+ enabled: pulumi.Input[bool]
18287
+ """
18288
+ Opts-in for graceful shutdown.
18289
+ """
18290
+ max_duration: NotRequired[pulumi.Input['InstanceSchedulingGracefulShutdownMaxDurationArgsDict']]
18291
+ """
18292
+ The time allotted for the instance to gracefully shut down.
18293
+ If the graceful shutdown isn't complete after this time, then the instance
18294
+ transitions to the STOPPING state. Structure is documented below:
18295
+ """
18296
+ elif False:
18297
+ InstanceSchedulingGracefulShutdownArgsDict: TypeAlias = Mapping[str, Any]
18298
+
18299
+ @pulumi.input_type
18300
+ class InstanceSchedulingGracefulShutdownArgs:
18301
+ def __init__(__self__, *,
18302
+ enabled: pulumi.Input[bool],
18303
+ max_duration: Optional[pulumi.Input['InstanceSchedulingGracefulShutdownMaxDurationArgs']] = None):
18304
+ """
18305
+ :param pulumi.Input[bool] enabled: Opts-in for graceful shutdown.
18306
+ :param pulumi.Input['InstanceSchedulingGracefulShutdownMaxDurationArgs'] max_duration: The time allotted for the instance to gracefully shut down.
18307
+ If the graceful shutdown isn't complete after this time, then the instance
18308
+ transitions to the STOPPING state. Structure is documented below:
18309
+ """
18310
+ pulumi.set(__self__, "enabled", enabled)
18311
+ if max_duration is not None:
18312
+ pulumi.set(__self__, "max_duration", max_duration)
18313
+
18314
+ @property
18315
+ @pulumi.getter
18316
+ def enabled(self) -> pulumi.Input[bool]:
18317
+ """
18318
+ Opts-in for graceful shutdown.
18319
+ """
18320
+ return pulumi.get(self, "enabled")
18321
+
18322
+ @enabled.setter
18323
+ def enabled(self, value: pulumi.Input[bool]):
18324
+ pulumi.set(self, "enabled", value)
18325
+
18326
+ @property
18327
+ @pulumi.getter(name="maxDuration")
18328
+ def max_duration(self) -> Optional[pulumi.Input['InstanceSchedulingGracefulShutdownMaxDurationArgs']]:
18329
+ """
18330
+ The time allotted for the instance to gracefully shut down.
18331
+ If the graceful shutdown isn't complete after this time, then the instance
18332
+ transitions to the STOPPING state. Structure is documented below:
18333
+ """
18334
+ return pulumi.get(self, "max_duration")
18335
+
18336
+ @max_duration.setter
18337
+ def max_duration(self, value: Optional[pulumi.Input['InstanceSchedulingGracefulShutdownMaxDurationArgs']]):
18338
+ pulumi.set(self, "max_duration", value)
18339
+
18340
+
18341
+ if not MYPY:
18342
+ class InstanceSchedulingGracefulShutdownMaxDurationArgsDict(TypedDict):
17966
18343
  seconds: pulumi.Input[int]
17967
18344
  """
17968
18345
  Span of time at a resolution of a second.
17969
- Must be from 0 to 315,576,000,000 inclusive.
18346
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
17970
18347
  """
17971
18348
  nanos: NotRequired[pulumi.Input[int]]
17972
18349
  """
17973
18350
  Span of time that's a fraction of a second at nanosecond
17974
- resolution. Durations less than one second are represented
17975
- with a 0 seconds field and a positive nanos field. Must
17976
- be from 0 to 999,999,999 inclusive.
18351
+ resolution. Durations less than one second are represented with a 0
18352
+ `seconds` field and a positive `nanos` field. Must be from 0 to
18353
+ 999,999,999 inclusive.
17977
18354
  """
17978
18355
  elif False:
17979
- InstanceSchedulingLocalSsdRecoveryTimeoutArgsDict: TypeAlias = Mapping[str, Any]
18356
+ InstanceSchedulingGracefulShutdownMaxDurationArgsDict: TypeAlias = Mapping[str, Any]
17980
18357
 
17981
18358
  @pulumi.input_type
17982
- class InstanceSchedulingLocalSsdRecoveryTimeoutArgs:
18359
+ class InstanceSchedulingGracefulShutdownMaxDurationArgs:
17983
18360
  def __init__(__self__, *,
17984
18361
  seconds: pulumi.Input[int],
17985
18362
  nanos: Optional[pulumi.Input[int]] = None):
17986
18363
  """
17987
18364
  :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
17988
- Must be from 0 to 315,576,000,000 inclusive.
18365
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
17989
18366
  :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
17990
- resolution. Durations less than one second are represented
17991
- with a 0 seconds field and a positive nanos field. Must
17992
- be from 0 to 999,999,999 inclusive.
18367
+ resolution. Durations less than one second are represented with a 0
18368
+ `seconds` field and a positive `nanos` field. Must be from 0 to
18369
+ 999,999,999 inclusive.
17993
18370
  """
17994
18371
  pulumi.set(__self__, "seconds", seconds)
17995
18372
  if nanos is not None:
@@ -18000,7 +18377,7 @@ class InstanceSchedulingLocalSsdRecoveryTimeoutArgs:
18000
18377
  def seconds(self) -> pulumi.Input[int]:
18001
18378
  """
18002
18379
  Span of time at a resolution of a second.
18003
- Must be from 0 to 315,576,000,000 inclusive.
18380
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
18004
18381
  """
18005
18382
  return pulumi.get(self, "seconds")
18006
18383
 
@@ -18013,9 +18390,75 @@ class InstanceSchedulingLocalSsdRecoveryTimeoutArgs:
18013
18390
  def nanos(self) -> Optional[pulumi.Input[int]]:
18014
18391
  """
18015
18392
  Span of time that's a fraction of a second at nanosecond
18016
- resolution. Durations less than one second are represented
18017
- with a 0 seconds field and a positive nanos field. Must
18018
- be from 0 to 999,999,999 inclusive.
18393
+ resolution. Durations less than one second are represented with a 0
18394
+ `seconds` field and a positive `nanos` field. Must be from 0 to
18395
+ 999,999,999 inclusive.
18396
+ """
18397
+ return pulumi.get(self, "nanos")
18398
+
18399
+ @nanos.setter
18400
+ def nanos(self, value: Optional[pulumi.Input[int]]):
18401
+ pulumi.set(self, "nanos", value)
18402
+
18403
+
18404
+ if not MYPY:
18405
+ class InstanceSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
18406
+ seconds: pulumi.Input[int]
18407
+ """
18408
+ Span of time at a resolution of a second. Must be from 0 to
18409
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
18410
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
18411
+ """
18412
+ nanos: NotRequired[pulumi.Input[int]]
18413
+ """
18414
+ Span of time that's a fraction of a second at nanosecond
18415
+ resolution. Durations less than one second are represented with a 0
18416
+ `seconds` field and a positive `nanos` field. Must be from 0 to
18417
+ 999,999,999 inclusive.
18418
+ """
18419
+ elif False:
18420
+ InstanceSchedulingLocalSsdRecoveryTimeoutArgsDict: TypeAlias = Mapping[str, Any]
18421
+
18422
+ @pulumi.input_type
18423
+ class InstanceSchedulingLocalSsdRecoveryTimeoutArgs:
18424
+ def __init__(__self__, *,
18425
+ seconds: pulumi.Input[int],
18426
+ nanos: Optional[pulumi.Input[int]] = None):
18427
+ """
18428
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second. Must be from 0 to
18429
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
18430
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
18431
+ :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
18432
+ resolution. Durations less than one second are represented with a 0
18433
+ `seconds` field and a positive `nanos` field. Must be from 0 to
18434
+ 999,999,999 inclusive.
18435
+ """
18436
+ pulumi.set(__self__, "seconds", seconds)
18437
+ if nanos is not None:
18438
+ pulumi.set(__self__, "nanos", nanos)
18439
+
18440
+ @property
18441
+ @pulumi.getter
18442
+ def seconds(self) -> pulumi.Input[int]:
18443
+ """
18444
+ Span of time at a resolution of a second. Must be from 0 to
18445
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
18446
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
18447
+ """
18448
+ return pulumi.get(self, "seconds")
18449
+
18450
+ @seconds.setter
18451
+ def seconds(self, value: pulumi.Input[int]):
18452
+ pulumi.set(self, "seconds", value)
18453
+
18454
+ @property
18455
+ @pulumi.getter
18456
+ def nanos(self) -> Optional[pulumi.Input[int]]:
18457
+ """
18458
+ Span of time that's a fraction of a second at nanosecond
18459
+ resolution. Durations less than one second are represented with a 0
18460
+ `seconds` field and a positive `nanos` field. Must be from 0 to
18461
+ 999,999,999 inclusive.
18019
18462
  """
18020
18463
  return pulumi.get(self, "nanos")
18021
18464
 
@@ -20261,6 +20704,10 @@ if not MYPY:
20261
20704
  """
20262
20705
  Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
20263
20706
  """
20707
+ graceful_shutdown: NotRequired[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownArgsDict']]
20708
+ """
20709
+ Settings for the instance to perform a graceful shutdown. Structure is documented below.
20710
+ """
20264
20711
  host_error_timeout_seconds: NotRequired[pulumi.Input[int]]
20265
20712
  """
20266
20713
  Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
@@ -20326,6 +20773,7 @@ class InstanceTemplateSchedulingArgs:
20326
20773
  def __init__(__self__, *,
20327
20774
  automatic_restart: Optional[pulumi.Input[bool]] = None,
20328
20775
  availability_domain: Optional[pulumi.Input[int]] = None,
20776
+ graceful_shutdown: Optional[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownArgs']] = None,
20329
20777
  host_error_timeout_seconds: Optional[pulumi.Input[int]] = None,
20330
20778
  instance_termination_action: Optional[pulumi.Input[str]] = None,
20331
20779
  local_ssd_recovery_timeouts: Optional[pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]]] = None,
@@ -20342,6 +20790,7 @@ class InstanceTemplateSchedulingArgs:
20342
20790
  automatically restarted if it is terminated by Compute Engine (not
20343
20791
  terminated by a user). This defaults to true.
20344
20792
  :param pulumi.Input[int] availability_domain: Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
20793
+ :param pulumi.Input['InstanceTemplateSchedulingGracefulShutdownArgs'] graceful_shutdown: Settings for the instance to perform a graceful shutdown. Structure is documented below.
20345
20794
  :param pulumi.Input[int] host_error_timeout_seconds: Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
20346
20795
  :param pulumi.Input[str] instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)
20347
20796
  :param pulumi.Input[Sequence[pulumi.Input['InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while
@@ -20371,6 +20820,8 @@ class InstanceTemplateSchedulingArgs:
20371
20820
  pulumi.set(__self__, "automatic_restart", automatic_restart)
20372
20821
  if availability_domain is not None:
20373
20822
  pulumi.set(__self__, "availability_domain", availability_domain)
20823
+ if graceful_shutdown is not None:
20824
+ pulumi.set(__self__, "graceful_shutdown", graceful_shutdown)
20374
20825
  if host_error_timeout_seconds is not None:
20375
20826
  pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds)
20376
20827
  if instance_termination_action is not None:
@@ -20420,6 +20871,18 @@ class InstanceTemplateSchedulingArgs:
20420
20871
  def availability_domain(self, value: Optional[pulumi.Input[int]]):
20421
20872
  pulumi.set(self, "availability_domain", value)
20422
20873
 
20874
+ @property
20875
+ @pulumi.getter(name="gracefulShutdown")
20876
+ def graceful_shutdown(self) -> Optional[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownArgs']]:
20877
+ """
20878
+ Settings for the instance to perform a graceful shutdown. Structure is documented below.
20879
+ """
20880
+ return pulumi.get(self, "graceful_shutdown")
20881
+
20882
+ @graceful_shutdown.setter
20883
+ def graceful_shutdown(self, value: Optional[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownArgs']]):
20884
+ pulumi.set(self, "graceful_shutdown", value)
20885
+
20423
20886
  @property
20424
20887
  @pulumi.getter(name="hostErrorTimeoutSeconds")
20425
20888
  def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]:
@@ -20567,34 +21030,91 @@ class InstanceTemplateSchedulingArgs:
20567
21030
 
20568
21031
 
20569
21032
  if not MYPY:
20570
- class InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
21033
+ class InstanceTemplateSchedulingGracefulShutdownArgsDict(TypedDict):
21034
+ enabled: pulumi.Input[bool]
21035
+ """
21036
+ Opts-in for graceful shutdown.
21037
+ """
21038
+ max_duration: NotRequired[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict']]
21039
+ """
21040
+ The time allotted for the instance to gracefully shut down.
21041
+ If the graceful shutdown isn't complete after this time, then the instance
21042
+ transitions to the STOPPING state. Structure is documented below:
21043
+ """
21044
+ elif False:
21045
+ InstanceTemplateSchedulingGracefulShutdownArgsDict: TypeAlias = Mapping[str, Any]
21046
+
21047
+ @pulumi.input_type
21048
+ class InstanceTemplateSchedulingGracefulShutdownArgs:
21049
+ def __init__(__self__, *,
21050
+ enabled: pulumi.Input[bool],
21051
+ max_duration: Optional[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownMaxDurationArgs']] = None):
21052
+ """
21053
+ :param pulumi.Input[bool] enabled: Opts-in for graceful shutdown.
21054
+ :param pulumi.Input['InstanceTemplateSchedulingGracefulShutdownMaxDurationArgs'] max_duration: The time allotted for the instance to gracefully shut down.
21055
+ If the graceful shutdown isn't complete after this time, then the instance
21056
+ transitions to the STOPPING state. Structure is documented below:
21057
+ """
21058
+ pulumi.set(__self__, "enabled", enabled)
21059
+ if max_duration is not None:
21060
+ pulumi.set(__self__, "max_duration", max_duration)
21061
+
21062
+ @property
21063
+ @pulumi.getter
21064
+ def enabled(self) -> pulumi.Input[bool]:
21065
+ """
21066
+ Opts-in for graceful shutdown.
21067
+ """
21068
+ return pulumi.get(self, "enabled")
21069
+
21070
+ @enabled.setter
21071
+ def enabled(self, value: pulumi.Input[bool]):
21072
+ pulumi.set(self, "enabled", value)
21073
+
21074
+ @property
21075
+ @pulumi.getter(name="maxDuration")
21076
+ def max_duration(self) -> Optional[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownMaxDurationArgs']]:
21077
+ """
21078
+ The time allotted for the instance to gracefully shut down.
21079
+ If the graceful shutdown isn't complete after this time, then the instance
21080
+ transitions to the STOPPING state. Structure is documented below:
21081
+ """
21082
+ return pulumi.get(self, "max_duration")
21083
+
21084
+ @max_duration.setter
21085
+ def max_duration(self, value: Optional[pulumi.Input['InstanceTemplateSchedulingGracefulShutdownMaxDurationArgs']]):
21086
+ pulumi.set(self, "max_duration", value)
21087
+
21088
+
21089
+ if not MYPY:
21090
+ class InstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict(TypedDict):
20571
21091
  seconds: pulumi.Input[int]
20572
21092
  """
20573
21093
  Span of time at a resolution of a second.
20574
- Must be from 0 to 315,576,000,000 inclusive.
21094
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
20575
21095
  """
20576
21096
  nanos: NotRequired[pulumi.Input[int]]
20577
21097
  """
20578
21098
  Span of time that's a fraction of a second at nanosecond
20579
- resolution. Durations less than one second are represented
20580
- with a 0 seconds field and a positive nanos field. Must
20581
- be from 0 to 999,999,999 inclusive.
21099
+ resolution. Durations less than one second are represented with a 0
21100
+ `seconds` field and a positive `nanos` field. Must be from 0 to
21101
+ 999,999,999 inclusive.
20582
21102
  """
20583
21103
  elif False:
20584
- InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict: TypeAlias = Mapping[str, Any]
21104
+ InstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict: TypeAlias = Mapping[str, Any]
20585
21105
 
20586
21106
  @pulumi.input_type
20587
- class InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs:
21107
+ class InstanceTemplateSchedulingGracefulShutdownMaxDurationArgs:
20588
21108
  def __init__(__self__, *,
20589
21109
  seconds: pulumi.Input[int],
20590
21110
  nanos: Optional[pulumi.Input[int]] = None):
20591
21111
  """
20592
21112
  :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
20593
- Must be from 0 to 315,576,000,000 inclusive.
21113
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
20594
21114
  :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
20595
- resolution. Durations less than one second are represented
20596
- with a 0 seconds field and a positive nanos field. Must
20597
- be from 0 to 999,999,999 inclusive.
21115
+ resolution. Durations less than one second are represented with a 0
21116
+ `seconds` field and a positive `nanos` field. Must be from 0 to
21117
+ 999,999,999 inclusive.
20598
21118
  """
20599
21119
  pulumi.set(__self__, "seconds", seconds)
20600
21120
  if nanos is not None:
@@ -20605,7 +21125,7 @@ class InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs:
20605
21125
  def seconds(self) -> pulumi.Input[int]:
20606
21126
  """
20607
21127
  Span of time at a resolution of a second.
20608
- Must be from 0 to 315,576,000,000 inclusive.
21128
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
20609
21129
  """
20610
21130
  return pulumi.get(self, "seconds")
20611
21131
 
@@ -20618,9 +21138,75 @@ class InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs:
20618
21138
  def nanos(self) -> Optional[pulumi.Input[int]]:
20619
21139
  """
20620
21140
  Span of time that's a fraction of a second at nanosecond
20621
- resolution. Durations less than one second are represented
20622
- with a 0 seconds field and a positive nanos field. Must
20623
- be from 0 to 999,999,999 inclusive.
21141
+ resolution. Durations less than one second are represented with a 0
21142
+ `seconds` field and a positive `nanos` field. Must be from 0 to
21143
+ 999,999,999 inclusive.
21144
+ """
21145
+ return pulumi.get(self, "nanos")
21146
+
21147
+ @nanos.setter
21148
+ def nanos(self, value: Optional[pulumi.Input[int]]):
21149
+ pulumi.set(self, "nanos", value)
21150
+
21151
+
21152
+ if not MYPY:
21153
+ class InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
21154
+ seconds: pulumi.Input[int]
21155
+ """
21156
+ Span of time at a resolution of a second. Must be from 0 to
21157
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
21158
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
21159
+ """
21160
+ nanos: NotRequired[pulumi.Input[int]]
21161
+ """
21162
+ Span of time that's a fraction of a second at nanosecond
21163
+ resolution. Durations less than one second are represented with a 0
21164
+ `seconds` field and a positive `nanos` field. Must be from 0 to
21165
+ 999,999,999 inclusive.
21166
+ """
21167
+ elif False:
21168
+ InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict: TypeAlias = Mapping[str, Any]
21169
+
21170
+ @pulumi.input_type
21171
+ class InstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs:
21172
+ def __init__(__self__, *,
21173
+ seconds: pulumi.Input[int],
21174
+ nanos: Optional[pulumi.Input[int]] = None):
21175
+ """
21176
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second. Must be from 0 to
21177
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
21178
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
21179
+ :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
21180
+ resolution. Durations less than one second are represented with a 0
21181
+ `seconds` field and a positive `nanos` field. Must be from 0 to
21182
+ 999,999,999 inclusive.
21183
+ """
21184
+ pulumi.set(__self__, "seconds", seconds)
21185
+ if nanos is not None:
21186
+ pulumi.set(__self__, "nanos", nanos)
21187
+
21188
+ @property
21189
+ @pulumi.getter
21190
+ def seconds(self) -> pulumi.Input[int]:
21191
+ """
21192
+ Span of time at a resolution of a second. Must be from 0 to
21193
+ 315,576,000,000 inclusive. Note: these bounds are computed from: 60
21194
+ sec/min * 60 min/hr * 24 hr/day * 365.25 days/year * 10000 years.
21195
+ """
21196
+ return pulumi.get(self, "seconds")
21197
+
21198
+ @seconds.setter
21199
+ def seconds(self, value: pulumi.Input[int]):
21200
+ pulumi.set(self, "seconds", value)
21201
+
21202
+ @property
21203
+ @pulumi.getter
21204
+ def nanos(self) -> Optional[pulumi.Input[int]]:
21205
+ """
21206
+ Span of time that's a fraction of a second at nanosecond
21207
+ resolution. Durations less than one second are represented with a 0
21208
+ `seconds` field and a positive `nanos` field. Must be from 0 to
21209
+ 999,999,999 inclusive.
20624
21210
  """
20625
21211
  return pulumi.get(self, "nanos")
20626
21212
 
@@ -34168,6 +34754,10 @@ if not MYPY:
34168
34754
  """
34169
34755
  Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
34170
34756
  """
34757
+ graceful_shutdown: NotRequired[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownArgsDict']]
34758
+ """
34759
+ Settings for the instance to perform a graceful shutdown.
34760
+ """
34171
34761
  host_error_timeout_seconds: NotRequired[pulumi.Input[int]]
34172
34762
  """
34173
34763
  Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
@@ -34233,6 +34823,7 @@ class RegionInstanceTemplateSchedulingArgs:
34233
34823
  def __init__(__self__, *,
34234
34824
  automatic_restart: Optional[pulumi.Input[bool]] = None,
34235
34825
  availability_domain: Optional[pulumi.Input[int]] = None,
34826
+ graceful_shutdown: Optional[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownArgs']] = None,
34236
34827
  host_error_timeout_seconds: Optional[pulumi.Input[int]] = None,
34237
34828
  instance_termination_action: Optional[pulumi.Input[str]] = None,
34238
34829
  local_ssd_recovery_timeouts: Optional[pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]]] = None,
@@ -34249,6 +34840,7 @@ class RegionInstanceTemplateSchedulingArgs:
34249
34840
  automatically restarted if it is terminated by Compute Engine (not
34250
34841
  terminated by a user). This defaults to true.
34251
34842
  :param pulumi.Input[int] availability_domain: Specifies the availability domain to place the instance in. The value must be a number between 1 and the number of availability domains specified in the spread placement policy attached to the instance.
34843
+ :param pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownArgs'] graceful_shutdown: Settings for the instance to perform a graceful shutdown.
34252
34844
  :param pulumi.Input[int] host_error_timeout_seconds: Specifies the time in seconds for host error detection, the value must be within the range of [90, 330] with the increment of 30, if unset, the default behavior of host error recovery will be used.
34253
34845
  :param pulumi.Input[str] instance_termination_action: Describe the type of termination action for `SPOT` VM. Can be `STOP` or `DELETE`. Read more on [here](https://cloud.google.com/compute/docs/instances/create-use-spot)
34254
34846
  :param pulumi.Input[Sequence[pulumi.Input['RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgs']]] local_ssd_recovery_timeouts: Specifies the maximum amount of time a Local Ssd Vm should wait while
@@ -34278,6 +34870,8 @@ class RegionInstanceTemplateSchedulingArgs:
34278
34870
  pulumi.set(__self__, "automatic_restart", automatic_restart)
34279
34871
  if availability_domain is not None:
34280
34872
  pulumi.set(__self__, "availability_domain", availability_domain)
34873
+ if graceful_shutdown is not None:
34874
+ pulumi.set(__self__, "graceful_shutdown", graceful_shutdown)
34281
34875
  if host_error_timeout_seconds is not None:
34282
34876
  pulumi.set(__self__, "host_error_timeout_seconds", host_error_timeout_seconds)
34283
34877
  if instance_termination_action is not None:
@@ -34327,6 +34921,18 @@ class RegionInstanceTemplateSchedulingArgs:
34327
34921
  def availability_domain(self, value: Optional[pulumi.Input[int]]):
34328
34922
  pulumi.set(self, "availability_domain", value)
34329
34923
 
34924
+ @property
34925
+ @pulumi.getter(name="gracefulShutdown")
34926
+ def graceful_shutdown(self) -> Optional[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownArgs']]:
34927
+ """
34928
+ Settings for the instance to perform a graceful shutdown.
34929
+ """
34930
+ return pulumi.get(self, "graceful_shutdown")
34931
+
34932
+ @graceful_shutdown.setter
34933
+ def graceful_shutdown(self, value: Optional[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownArgs']]):
34934
+ pulumi.set(self, "graceful_shutdown", value)
34935
+
34330
34936
  @property
34331
34937
  @pulumi.getter(name="hostErrorTimeoutSeconds")
34332
34938
  def host_error_timeout_seconds(self) -> Optional[pulumi.Input[int]]:
@@ -34473,6 +35079,126 @@ class RegionInstanceTemplateSchedulingArgs:
34473
35079
  pulumi.set(self, "provisioning_model", value)
34474
35080
 
34475
35081
 
35082
+ if not MYPY:
35083
+ class RegionInstanceTemplateSchedulingGracefulShutdownArgsDict(TypedDict):
35084
+ enabled: pulumi.Input[bool]
35085
+ """
35086
+ Opts-in for graceful shutdown.
35087
+ """
35088
+ max_duration: NotRequired[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict']]
35089
+ """
35090
+ The time allotted for the instance to gracefully shut down.
35091
+ If the graceful shutdown isn't complete after this time, then the instance
35092
+ transitions to the STOPPING state. Structure is documented below:
35093
+ """
35094
+ elif False:
35095
+ RegionInstanceTemplateSchedulingGracefulShutdownArgsDict: TypeAlias = Mapping[str, Any]
35096
+
35097
+ @pulumi.input_type
35098
+ class RegionInstanceTemplateSchedulingGracefulShutdownArgs:
35099
+ def __init__(__self__, *,
35100
+ enabled: pulumi.Input[bool],
35101
+ max_duration: Optional[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgs']] = None):
35102
+ """
35103
+ :param pulumi.Input[bool] enabled: Opts-in for graceful shutdown.
35104
+ :param pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgs'] max_duration: The time allotted for the instance to gracefully shut down.
35105
+ If the graceful shutdown isn't complete after this time, then the instance
35106
+ transitions to the STOPPING state. Structure is documented below:
35107
+ """
35108
+ pulumi.set(__self__, "enabled", enabled)
35109
+ if max_duration is not None:
35110
+ pulumi.set(__self__, "max_duration", max_duration)
35111
+
35112
+ @property
35113
+ @pulumi.getter
35114
+ def enabled(self) -> pulumi.Input[bool]:
35115
+ """
35116
+ Opts-in for graceful shutdown.
35117
+ """
35118
+ return pulumi.get(self, "enabled")
35119
+
35120
+ @enabled.setter
35121
+ def enabled(self, value: pulumi.Input[bool]):
35122
+ pulumi.set(self, "enabled", value)
35123
+
35124
+ @property
35125
+ @pulumi.getter(name="maxDuration")
35126
+ def max_duration(self) -> Optional[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgs']]:
35127
+ """
35128
+ The time allotted for the instance to gracefully shut down.
35129
+ If the graceful shutdown isn't complete after this time, then the instance
35130
+ transitions to the STOPPING state. Structure is documented below:
35131
+ """
35132
+ return pulumi.get(self, "max_duration")
35133
+
35134
+ @max_duration.setter
35135
+ def max_duration(self, value: Optional[pulumi.Input['RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgs']]):
35136
+ pulumi.set(self, "max_duration", value)
35137
+
35138
+
35139
+ if not MYPY:
35140
+ class RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict(TypedDict):
35141
+ seconds: pulumi.Input[int]
35142
+ """
35143
+ Span of time at a resolution of a second.
35144
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
35145
+ """
35146
+ nanos: NotRequired[pulumi.Input[int]]
35147
+ """
35148
+ Span of time that's a fraction of a second at nanosecond
35149
+ resolution. Durations less than one second are represented with a 0
35150
+ `seconds` field and a positive `nanos` field. Must be from 0 to
35151
+ 999,999,999 inclusive.
35152
+ """
35153
+ elif False:
35154
+ RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgsDict: TypeAlias = Mapping[str, Any]
35155
+
35156
+ @pulumi.input_type
35157
+ class RegionInstanceTemplateSchedulingGracefulShutdownMaxDurationArgs:
35158
+ def __init__(__self__, *,
35159
+ seconds: pulumi.Input[int],
35160
+ nanos: Optional[pulumi.Input[int]] = None):
35161
+ """
35162
+ :param pulumi.Input[int] seconds: Span of time at a resolution of a second.
35163
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
35164
+ :param pulumi.Input[int] nanos: Span of time that's a fraction of a second at nanosecond
35165
+ resolution. Durations less than one second are represented with a 0
35166
+ `seconds` field and a positive `nanos` field. Must be from 0 to
35167
+ 999,999,999 inclusive.
35168
+ """
35169
+ pulumi.set(__self__, "seconds", seconds)
35170
+ if nanos is not None:
35171
+ pulumi.set(__self__, "nanos", nanos)
35172
+
35173
+ @property
35174
+ @pulumi.getter
35175
+ def seconds(self) -> pulumi.Input[int]:
35176
+ """
35177
+ Span of time at a resolution of a second.
35178
+ The value must be between 1 and 3600, which is 3,600 seconds (one hour).`
35179
+ """
35180
+ return pulumi.get(self, "seconds")
35181
+
35182
+ @seconds.setter
35183
+ def seconds(self, value: pulumi.Input[int]):
35184
+ pulumi.set(self, "seconds", value)
35185
+
35186
+ @property
35187
+ @pulumi.getter
35188
+ def nanos(self) -> Optional[pulumi.Input[int]]:
35189
+ """
35190
+ Span of time that's a fraction of a second at nanosecond
35191
+ resolution. Durations less than one second are represented with a 0
35192
+ `seconds` field and a positive `nanos` field. Must be from 0 to
35193
+ 999,999,999 inclusive.
35194
+ """
35195
+ return pulumi.get(self, "nanos")
35196
+
35197
+ @nanos.setter
35198
+ def nanos(self, value: Optional[pulumi.Input[int]]):
35199
+ pulumi.set(self, "nanos", value)
35200
+
35201
+
34476
35202
  if not MYPY:
34477
35203
  class RegionInstanceTemplateSchedulingLocalSsdRecoveryTimeoutArgsDict(TypedDict):
34478
35204
  seconds: pulumi.Input[int]