pulumi-gcp 8.21.0a1741156431__py3-none-any.whl → 8.22.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 (110) hide show
  1. pulumi_gcp/__init__.py +96 -0
  2. pulumi_gcp/alloydb/_inputs.py +66 -0
  3. pulumi_gcp/alloydb/cluster.py +148 -0
  4. pulumi_gcp/alloydb/instance.py +28 -28
  5. pulumi_gcp/alloydb/outputs.py +95 -0
  6. pulumi_gcp/apihub/__init__.py +1 -0
  7. pulumi_gcp/apihub/host_project_registration.py +535 -0
  8. pulumi_gcp/backupdisasterrecovery/_inputs.py +3 -3
  9. pulumi_gcp/backupdisasterrecovery/outputs.py +4 -4
  10. pulumi_gcp/bigquery/table.py +1 -1
  11. pulumi_gcp/certificatemanager/certificate.py +53 -7
  12. pulumi_gcp/certificatemanager/outputs.py +8 -2
  13. pulumi_gcp/compute/__init__.py +6 -0
  14. pulumi_gcp/compute/_inputs.py +1370 -17
  15. pulumi_gcp/compute/backend_service.py +209 -14
  16. pulumi_gcp/compute/ca_external_account_key.py +48 -3
  17. pulumi_gcp/compute/disk.py +403 -0
  18. pulumi_gcp/compute/firewall_policy_association.py +28 -2
  19. pulumi_gcp/compute/get_backend_service.py +12 -1
  20. pulumi_gcp/compute/get_disk.py +78 -1
  21. pulumi_gcp/compute/get_instant_snapshot_iam_policy.py +182 -0
  22. pulumi_gcp/compute/get_region_disk.py +23 -1
  23. pulumi_gcp/compute/get_region_ssl_policy.py +203 -0
  24. pulumi_gcp/compute/instant_snapshot.py +796 -0
  25. pulumi_gcp/compute/instant_snapshot_iam_binding.py +1087 -0
  26. pulumi_gcp/compute/instant_snapshot_iam_member.py +1087 -0
  27. pulumi_gcp/compute/instant_snapshot_iam_policy.py +906 -0
  28. pulumi_gcp/compute/outputs.py +1952 -29
  29. pulumi_gcp/compute/region_backend_service.py +207 -14
  30. pulumi_gcp/compute/region_disk.py +114 -0
  31. pulumi_gcp/compute/route.py +228 -2
  32. pulumi_gcp/compute/shared_vpc_service_project.py +0 -4
  33. pulumi_gcp/compute/subnetwork.py +147 -0
  34. pulumi_gcp/compute/url_map.py +8 -0
  35. pulumi_gcp/container/_inputs.py +6 -6
  36. pulumi_gcp/container/outputs.py +8 -8
  37. pulumi_gcp/datacatalog/entry.py +4 -0
  38. pulumi_gcp/datacatalog/tag.py +4 -0
  39. pulumi_gcp/dataproc/_inputs.py +12 -15
  40. pulumi_gcp/dataproc/outputs.py +8 -10
  41. pulumi_gcp/datastream/_inputs.py +273 -0
  42. pulumi_gcp/datastream/connection_profile.py +54 -2
  43. pulumi_gcp/datastream/outputs.py +224 -0
  44. pulumi_gcp/discoveryengine/target_site.py +4 -4
  45. pulumi_gcp/eventarc/__init__.py +2 -0
  46. pulumi_gcp/eventarc/_inputs.py +80 -0
  47. pulumi_gcp/eventarc/channel.py +85 -93
  48. pulumi_gcp/eventarc/google_api_source.py +997 -0
  49. pulumi_gcp/eventarc/message_bus.py +927 -0
  50. pulumi_gcp/eventarc/outputs.py +82 -0
  51. pulumi_gcp/firebase/data_connect_service.py +40 -2
  52. pulumi_gcp/gemini/__init__.py +1 -0
  53. pulumi_gcp/gemini/data_sharing_with_google_setting_binding.py +20 -8
  54. pulumi_gcp/gemini/gemini_gcp_enablement_setting.py +6 -0
  55. pulumi_gcp/gemini/gemini_gcp_enablement_setting_binding.py +734 -0
  56. pulumi_gcp/gemini/logging_setting_binding.py +7 -7
  57. pulumi_gcp/iam/__init__.py +2 -0
  58. pulumi_gcp/iam/_inputs.py +84 -27
  59. pulumi_gcp/iam/folders_policy_binding.py +10 -26
  60. pulumi_gcp/iam/oauth_client.py +979 -0
  61. pulumi_gcp/iam/oauth_client_credential.py +641 -0
  62. pulumi_gcp/iam/organizations_policy_binding.py +8 -24
  63. pulumi_gcp/iam/outputs.py +56 -18
  64. pulumi_gcp/iam/principal_access_boundary_policy.py +58 -22
  65. pulumi_gcp/iam/projects_policy_binding.py +8 -24
  66. pulumi_gcp/iam/workforce_pool_provider.py +2 -2
  67. pulumi_gcp/kms/crypto_key_version.py +14 -7
  68. pulumi_gcp/memorystore/__init__.py +1 -0
  69. pulumi_gcp/memorystore/get_instance.py +425 -0
  70. pulumi_gcp/memorystore/outputs.py +582 -0
  71. pulumi_gcp/monitoring/_inputs.py +15 -18
  72. pulumi_gcp/monitoring/alert_policy.py +46 -0
  73. pulumi_gcp/monitoring/outputs.py +10 -12
  74. pulumi_gcp/networkconnectivity/hub.py +84 -0
  75. pulumi_gcp/networksecurity/__init__.py +1 -0
  76. pulumi_gcp/networksecurity/_inputs.py +30 -18
  77. pulumi_gcp/networksecurity/backend_authentication_config.py +847 -0
  78. pulumi_gcp/networksecurity/intercept_deployment.py +178 -94
  79. pulumi_gcp/networksecurity/intercept_deployment_group.py +161 -77
  80. pulumi_gcp/networksecurity/intercept_endpoint_group.py +161 -66
  81. pulumi_gcp/networksecurity/intercept_endpoint_group_association.py +137 -80
  82. pulumi_gcp/networksecurity/mirroring_deployment.py +178 -94
  83. pulumi_gcp/networksecurity/mirroring_deployment_group.py +161 -77
  84. pulumi_gcp/networksecurity/mirroring_endpoint_group.py +161 -80
  85. pulumi_gcp/networksecurity/mirroring_endpoint_group_association.py +137 -105
  86. pulumi_gcp/networksecurity/outputs.py +20 -12
  87. pulumi_gcp/networkservices/endpoint_policy.py +12 -0
  88. pulumi_gcp/networkservices/grpc_route.py +128 -12
  89. pulumi_gcp/networkservices/http_route.py +16 -0
  90. pulumi_gcp/networkservices/mesh.py +16 -0
  91. pulumi_gcp/networkservices/service_binding.py +14 -0
  92. pulumi_gcp/networkservices/tcp_route.py +16 -0
  93. pulumi_gcp/networkservices/tls_route.py +12 -0
  94. pulumi_gcp/notebooks/location.py +4 -0
  95. pulumi_gcp/pulumi-plugin.json +1 -1
  96. pulumi_gcp/storage/__init__.py +1 -0
  97. pulumi_gcp/storage/_inputs.py +74 -0
  98. pulumi_gcp/storage/anywhere_cache.py +552 -0
  99. pulumi_gcp/storage/outputs.py +65 -0
  100. pulumi_gcp/storage/transfer_job.py +67 -0
  101. pulumi_gcp/tpu/_inputs.py +21 -1
  102. pulumi_gcp/tpu/outputs.py +13 -1
  103. pulumi_gcp/tpu/v2_vm.py +2 -0
  104. pulumi_gcp/vmwareengine/_inputs.py +6 -0
  105. pulumi_gcp/vmwareengine/outputs.py +8 -0
  106. pulumi_gcp/workstations/workstation_cluster.py +137 -1
  107. {pulumi_gcp-8.21.0a1741156431.dist-info → pulumi_gcp-8.22.0.dist-info}/METADATA +1 -1
  108. {pulumi_gcp-8.21.0a1741156431.dist-info → pulumi_gcp-8.22.0.dist-info}/RECORD +110 -95
  109. {pulumi_gcp-8.21.0a1741156431.dist-info → pulumi_gcp-8.22.0.dist-info}/WHEEL +1 -1
  110. {pulumi_gcp-8.21.0a1741156431.dist-info → pulumi_gcp-8.22.0.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,7 @@ class TransferJobArgs:
23
23
  def __init__(__self__, *,
24
24
  description: pulumi.Input[str],
25
25
  event_stream: Optional[pulumi.Input['TransferJobEventStreamArgs']] = None,
26
+ logging_config: Optional[pulumi.Input['TransferJobLoggingConfigArgs']] = None,
26
27
  name: Optional[pulumi.Input[str]] = None,
27
28
  notification_config: Optional[pulumi.Input['TransferJobNotificationConfigArgs']] = None,
28
29
  project: Optional[pulumi.Input[str]] = None,
@@ -34,6 +35,7 @@ class TransferJobArgs:
34
35
  The set of arguments for constructing a TransferJob resource.
35
36
  :param pulumi.Input[str] description: Unique description to identify the Transfer Job.
36
37
  :param pulumi.Input['TransferJobEventStreamArgs'] event_stream: Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files. Structure documented below Either `event_stream` or `schedule` must be set.
38
+ :param pulumi.Input['TransferJobLoggingConfigArgs'] logging_config: Logging configuration. Structure documented below.
37
39
  :param pulumi.Input[str] name: The name of the Transfer Job. This name must start with "transferJobs/" prefix and end with a letter or a number, and should be no more than 128 characters ( `transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For transfers involving PosixFilesystem, this name must start with transferJobs/OPI specifically ( `transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For all other transfer types, this name must not start with transferJobs/OPI. Default the provider will assign a random unique name with `transferJobs/{{name}}` format, where `name` is a numeric value.
38
40
  :param pulumi.Input['TransferJobNotificationConfigArgs'] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below.
39
41
  :param pulumi.Input[str] project: The project in which the resource belongs. If it
@@ -48,6 +50,8 @@ class TransferJobArgs:
48
50
  pulumi.set(__self__, "description", description)
49
51
  if event_stream is not None:
50
52
  pulumi.set(__self__, "event_stream", event_stream)
53
+ if logging_config is not None:
54
+ pulumi.set(__self__, "logging_config", logging_config)
51
55
  if name is not None:
52
56
  pulumi.set(__self__, "name", name)
53
57
  if notification_config is not None:
@@ -87,6 +91,18 @@ class TransferJobArgs:
87
91
  def event_stream(self, value: Optional[pulumi.Input['TransferJobEventStreamArgs']]):
88
92
  pulumi.set(self, "event_stream", value)
89
93
 
94
+ @property
95
+ @pulumi.getter(name="loggingConfig")
96
+ def logging_config(self) -> Optional[pulumi.Input['TransferJobLoggingConfigArgs']]:
97
+ """
98
+ Logging configuration. Structure documented below.
99
+ """
100
+ return pulumi.get(self, "logging_config")
101
+
102
+ @logging_config.setter
103
+ def logging_config(self, value: Optional[pulumi.Input['TransferJobLoggingConfigArgs']]):
104
+ pulumi.set(self, "logging_config", value)
105
+
90
106
  @property
91
107
  @pulumi.getter
92
108
  def name(self) -> Optional[pulumi.Input[str]]:
@@ -183,6 +199,7 @@ class _TransferJobState:
183
199
  description: Optional[pulumi.Input[str]] = None,
184
200
  event_stream: Optional[pulumi.Input['TransferJobEventStreamArgs']] = None,
185
201
  last_modification_time: Optional[pulumi.Input[str]] = None,
202
+ logging_config: Optional[pulumi.Input['TransferJobLoggingConfigArgs']] = None,
186
203
  name: Optional[pulumi.Input[str]] = None,
187
204
  notification_config: Optional[pulumi.Input['TransferJobNotificationConfigArgs']] = None,
188
205
  project: Optional[pulumi.Input[str]] = None,
@@ -197,6 +214,7 @@ class _TransferJobState:
197
214
  :param pulumi.Input[str] description: Unique description to identify the Transfer Job.
198
215
  :param pulumi.Input['TransferJobEventStreamArgs'] event_stream: Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files. Structure documented below Either `event_stream` or `schedule` must be set.
199
216
  :param pulumi.Input[str] last_modification_time: When the Transfer Job was last modified.
217
+ :param pulumi.Input['TransferJobLoggingConfigArgs'] logging_config: Logging configuration. Structure documented below.
200
218
  :param pulumi.Input[str] name: The name of the Transfer Job. This name must start with "transferJobs/" prefix and end with a letter or a number, and should be no more than 128 characters ( `transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For transfers involving PosixFilesystem, this name must start with transferJobs/OPI specifically ( `transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For all other transfer types, this name must not start with transferJobs/OPI. Default the provider will assign a random unique name with `transferJobs/{{name}}` format, where `name` is a numeric value.
201
219
  :param pulumi.Input['TransferJobNotificationConfigArgs'] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below.
202
220
  :param pulumi.Input[str] project: The project in which the resource belongs. If it
@@ -218,6 +236,8 @@ class _TransferJobState:
218
236
  pulumi.set(__self__, "event_stream", event_stream)
219
237
  if last_modification_time is not None:
220
238
  pulumi.set(__self__, "last_modification_time", last_modification_time)
239
+ if logging_config is not None:
240
+ pulumi.set(__self__, "logging_config", logging_config)
221
241
  if name is not None:
222
242
  pulumi.set(__self__, "name", name)
223
243
  if notification_config is not None:
@@ -293,6 +313,18 @@ class _TransferJobState:
293
313
  def last_modification_time(self, value: Optional[pulumi.Input[str]]):
294
314
  pulumi.set(self, "last_modification_time", value)
295
315
 
316
+ @property
317
+ @pulumi.getter(name="loggingConfig")
318
+ def logging_config(self) -> Optional[pulumi.Input['TransferJobLoggingConfigArgs']]:
319
+ """
320
+ Logging configuration. Structure documented below.
321
+ """
322
+ return pulumi.get(self, "logging_config")
323
+
324
+ @logging_config.setter
325
+ def logging_config(self, value: Optional[pulumi.Input['TransferJobLoggingConfigArgs']]):
326
+ pulumi.set(self, "logging_config", value)
327
+
296
328
  @property
297
329
  @pulumi.getter
298
330
  def name(self) -> Optional[pulumi.Input[str]]:
@@ -388,6 +420,7 @@ class TransferJob(pulumi.CustomResource):
388
420
  opts: Optional[pulumi.ResourceOptions] = None,
389
421
  description: Optional[pulumi.Input[str]] = None,
390
422
  event_stream: Optional[pulumi.Input[Union['TransferJobEventStreamArgs', 'TransferJobEventStreamArgsDict']]] = None,
423
+ logging_config: Optional[pulumi.Input[Union['TransferJobLoggingConfigArgs', 'TransferJobLoggingConfigArgsDict']]] = None,
391
424
  name: Optional[pulumi.Input[str]] = None,
392
425
  notification_config: Optional[pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']]] = None,
393
426
  project: Optional[pulumi.Input[str]] = None,
@@ -480,6 +513,16 @@ class TransferJob(pulumi.CustomResource):
480
513
  ],
481
514
  "payload_format": "JSON",
482
515
  },
516
+ logging_config={
517
+ "log_actions": [
518
+ "COPY",
519
+ "DELETE",
520
+ ],
521
+ "log_action_states": [
522
+ "SUCCEEDED",
523
+ "FAILED",
524
+ ],
525
+ },
483
526
  opts = pulumi.ResourceOptions(depends_on=[
484
527
  s3_backup_bucket_bucket_iam_member,
485
528
  notification_config,
@@ -502,6 +545,7 @@ class TransferJob(pulumi.CustomResource):
502
545
  :param pulumi.ResourceOptions opts: Options for the resource.
503
546
  :param pulumi.Input[str] description: Unique description to identify the Transfer Job.
504
547
  :param pulumi.Input[Union['TransferJobEventStreamArgs', 'TransferJobEventStreamArgsDict']] event_stream: Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files. Structure documented below Either `event_stream` or `schedule` must be set.
548
+ :param pulumi.Input[Union['TransferJobLoggingConfigArgs', 'TransferJobLoggingConfigArgsDict']] logging_config: Logging configuration. Structure documented below.
505
549
  :param pulumi.Input[str] name: The name of the Transfer Job. This name must start with "transferJobs/" prefix and end with a letter or a number, and should be no more than 128 characters ( `transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For transfers involving PosixFilesystem, this name must start with transferJobs/OPI specifically ( `transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For all other transfer types, this name must not start with transferJobs/OPI. Default the provider will assign a random unique name with `transferJobs/{{name}}` format, where `name` is a numeric value.
506
550
  :param pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below.
507
551
  :param pulumi.Input[str] project: The project in which the resource belongs. If it
@@ -603,6 +647,16 @@ class TransferJob(pulumi.CustomResource):
603
647
  ],
604
648
  "payload_format": "JSON",
605
649
  },
650
+ logging_config={
651
+ "log_actions": [
652
+ "COPY",
653
+ "DELETE",
654
+ ],
655
+ "log_action_states": [
656
+ "SUCCEEDED",
657
+ "FAILED",
658
+ ],
659
+ },
606
660
  opts = pulumi.ResourceOptions(depends_on=[
607
661
  s3_backup_bucket_bucket_iam_member,
608
662
  notification_config,
@@ -638,6 +692,7 @@ class TransferJob(pulumi.CustomResource):
638
692
  opts: Optional[pulumi.ResourceOptions] = None,
639
693
  description: Optional[pulumi.Input[str]] = None,
640
694
  event_stream: Optional[pulumi.Input[Union['TransferJobEventStreamArgs', 'TransferJobEventStreamArgsDict']]] = None,
695
+ logging_config: Optional[pulumi.Input[Union['TransferJobLoggingConfigArgs', 'TransferJobLoggingConfigArgsDict']]] = None,
641
696
  name: Optional[pulumi.Input[str]] = None,
642
697
  notification_config: Optional[pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']]] = None,
643
698
  project: Optional[pulumi.Input[str]] = None,
@@ -658,6 +713,7 @@ class TransferJob(pulumi.CustomResource):
658
713
  raise TypeError("Missing required property 'description'")
659
714
  __props__.__dict__["description"] = description
660
715
  __props__.__dict__["event_stream"] = event_stream
716
+ __props__.__dict__["logging_config"] = logging_config
661
717
  __props__.__dict__["name"] = name
662
718
  __props__.__dict__["notification_config"] = notification_config
663
719
  __props__.__dict__["project"] = project
@@ -683,6 +739,7 @@ class TransferJob(pulumi.CustomResource):
683
739
  description: Optional[pulumi.Input[str]] = None,
684
740
  event_stream: Optional[pulumi.Input[Union['TransferJobEventStreamArgs', 'TransferJobEventStreamArgsDict']]] = None,
685
741
  last_modification_time: Optional[pulumi.Input[str]] = None,
742
+ logging_config: Optional[pulumi.Input[Union['TransferJobLoggingConfigArgs', 'TransferJobLoggingConfigArgsDict']]] = None,
686
743
  name: Optional[pulumi.Input[str]] = None,
687
744
  notification_config: Optional[pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']]] = None,
688
745
  project: Optional[pulumi.Input[str]] = None,
@@ -702,6 +759,7 @@ class TransferJob(pulumi.CustomResource):
702
759
  :param pulumi.Input[str] description: Unique description to identify the Transfer Job.
703
760
  :param pulumi.Input[Union['TransferJobEventStreamArgs', 'TransferJobEventStreamArgsDict']] event_stream: Specifies the Event-driven transfer options. Event-driven transfers listen to an event stream to transfer updated files. Structure documented below Either `event_stream` or `schedule` must be set.
704
761
  :param pulumi.Input[str] last_modification_time: When the Transfer Job was last modified.
762
+ :param pulumi.Input[Union['TransferJobLoggingConfigArgs', 'TransferJobLoggingConfigArgsDict']] logging_config: Logging configuration. Structure documented below.
705
763
  :param pulumi.Input[str] name: The name of the Transfer Job. This name must start with "transferJobs/" prefix and end with a letter or a number, and should be no more than 128 characters ( `transferJobs/^(?!OPI)[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For transfers involving PosixFilesystem, this name must start with transferJobs/OPI specifically ( `transferJobs/OPI^[A-Za-z0-9-._~]*[A-Za-z0-9]$` ). For all other transfer types, this name must not start with transferJobs/OPI. Default the provider will assign a random unique name with `transferJobs/{{name}}` format, where `name` is a numeric value.
706
764
  :param pulumi.Input[Union['TransferJobNotificationConfigArgs', 'TransferJobNotificationConfigArgsDict']] notification_config: Notification configuration. This is not supported for transfers involving PosixFilesystem. Structure documented below.
707
765
  :param pulumi.Input[str] project: The project in which the resource belongs. If it
@@ -722,6 +780,7 @@ class TransferJob(pulumi.CustomResource):
722
780
  __props__.__dict__["description"] = description
723
781
  __props__.__dict__["event_stream"] = event_stream
724
782
  __props__.__dict__["last_modification_time"] = last_modification_time
783
+ __props__.__dict__["logging_config"] = logging_config
725
784
  __props__.__dict__["name"] = name
726
785
  __props__.__dict__["notification_config"] = notification_config
727
786
  __props__.__dict__["project"] = project
@@ -771,6 +830,14 @@ class TransferJob(pulumi.CustomResource):
771
830
  """
772
831
  return pulumi.get(self, "last_modification_time")
773
832
 
833
+ @property
834
+ @pulumi.getter(name="loggingConfig")
835
+ def logging_config(self) -> pulumi.Output[Optional['outputs.TransferJobLoggingConfig']]:
836
+ """
837
+ Logging configuration. Structure documented below.
838
+ """
839
+ return pulumi.get(self, "logging_config")
840
+
774
841
  @property
775
842
  @pulumi.getter
776
843
  def name(self) -> pulumi.Output[str]:
pulumi_gcp/tpu/_inputs.py CHANGED
@@ -830,6 +830,10 @@ if not MYPY:
830
830
  """
831
831
  Whether the node is created under a reservation.
832
832
  """
833
+ spot: NotRequired[pulumi.Input[bool]]
834
+ """
835
+ Optional. Defines whether the node is Spot VM.
836
+ """
833
837
  elif False:
834
838
  V2VmSchedulingConfigArgsDict: TypeAlias = Mapping[str, Any]
835
839
 
@@ -837,15 +841,19 @@ elif False:
837
841
  class V2VmSchedulingConfigArgs:
838
842
  def __init__(__self__, *,
839
843
  preemptible: Optional[pulumi.Input[bool]] = None,
840
- reserved: Optional[pulumi.Input[bool]] = None):
844
+ reserved: Optional[pulumi.Input[bool]] = None,
845
+ spot: Optional[pulumi.Input[bool]] = None):
841
846
  """
842
847
  :param pulumi.Input[bool] preemptible: Defines whether the node is preemptible.
843
848
  :param pulumi.Input[bool] reserved: Whether the node is created under a reservation.
849
+ :param pulumi.Input[bool] spot: Optional. Defines whether the node is Spot VM.
844
850
  """
845
851
  if preemptible is not None:
846
852
  pulumi.set(__self__, "preemptible", preemptible)
847
853
  if reserved is not None:
848
854
  pulumi.set(__self__, "reserved", reserved)
855
+ if spot is not None:
856
+ pulumi.set(__self__, "spot", spot)
849
857
 
850
858
  @property
851
859
  @pulumi.getter
@@ -871,6 +879,18 @@ class V2VmSchedulingConfigArgs:
871
879
  def reserved(self, value: Optional[pulumi.Input[bool]]):
872
880
  pulumi.set(self, "reserved", value)
873
881
 
882
+ @property
883
+ @pulumi.getter
884
+ def spot(self) -> Optional[pulumi.Input[bool]]:
885
+ """
886
+ Optional. Defines whether the node is Spot VM.
887
+ """
888
+ return pulumi.get(self, "spot")
889
+
890
+ @spot.setter
891
+ def spot(self, value: Optional[pulumi.Input[bool]]):
892
+ pulumi.set(self, "spot", value)
893
+
874
894
 
875
895
  if not MYPY:
876
896
  class V2VmServiceAccountArgsDict(TypedDict):
pulumi_gcp/tpu/outputs.py CHANGED
@@ -666,15 +666,19 @@ class V2VmNetworkEndpointAccessConfig(dict):
666
666
  class V2VmSchedulingConfig(dict):
667
667
  def __init__(__self__, *,
668
668
  preemptible: Optional[bool] = None,
669
- reserved: Optional[bool] = None):
669
+ reserved: Optional[bool] = None,
670
+ spot: Optional[bool] = None):
670
671
  """
671
672
  :param bool preemptible: Defines whether the node is preemptible.
672
673
  :param bool reserved: Whether the node is created under a reservation.
674
+ :param bool spot: Optional. Defines whether the node is Spot VM.
673
675
  """
674
676
  if preemptible is not None:
675
677
  pulumi.set(__self__, "preemptible", preemptible)
676
678
  if reserved is not None:
677
679
  pulumi.set(__self__, "reserved", reserved)
680
+ if spot is not None:
681
+ pulumi.set(__self__, "spot", spot)
678
682
 
679
683
  @property
680
684
  @pulumi.getter
@@ -692,6 +696,14 @@ class V2VmSchedulingConfig(dict):
692
696
  """
693
697
  return pulumi.get(self, "reserved")
694
698
 
699
+ @property
700
+ @pulumi.getter
701
+ def spot(self) -> Optional[bool]:
702
+ """
703
+ Optional. Defines whether the node is Spot VM.
704
+ """
705
+ return pulumi.get(self, "spot")
706
+
695
707
 
696
708
  @pulumi.output_type
697
709
  class V2VmServiceAccount(dict):
pulumi_gcp/tpu/v2_vm.py CHANGED
@@ -919,6 +919,7 @@ class V2Vm(pulumi.CustomResource):
919
919
  },
920
920
  scheduling_config={
921
921
  "preemptible": True,
922
+ "spot": True,
922
923
  },
923
924
  shielded_instance_config={
924
925
  "enable_secure_boot": True,
@@ -1082,6 +1083,7 @@ class V2Vm(pulumi.CustomResource):
1082
1083
  },
1083
1084
  scheduling_config={
1084
1085
  "preemptible": True,
1086
+ "spot": True,
1085
1087
  },
1086
1088
  shielded_instance_config={
1087
1089
  "enable_secure_boot": True,
@@ -1593,10 +1593,12 @@ if not MYPY:
1593
1593
  preferred_location: NotRequired[pulumi.Input[str]]
1594
1594
  """
1595
1595
  Zone that will remain operational when connection between the two zones is lost.
1596
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1596
1597
  """
1597
1598
  secondary_location: NotRequired[pulumi.Input[str]]
1598
1599
  """
1599
1600
  Additional zone for a higher level of availability and load balancing.
1601
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1600
1602
  """
1601
1603
  elif False:
1602
1604
  PrivateCloudManagementClusterStretchedClusterConfigArgsDict: TypeAlias = Mapping[str, Any]
@@ -1608,7 +1610,9 @@ class PrivateCloudManagementClusterStretchedClusterConfigArgs:
1608
1610
  secondary_location: Optional[pulumi.Input[str]] = None):
1609
1611
  """
1610
1612
  :param pulumi.Input[str] preferred_location: Zone that will remain operational when connection between the two zones is lost.
1613
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1611
1614
  :param pulumi.Input[str] secondary_location: Additional zone for a higher level of availability and load balancing.
1615
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1612
1616
  """
1613
1617
  if preferred_location is not None:
1614
1618
  pulumi.set(__self__, "preferred_location", preferred_location)
@@ -1620,6 +1624,7 @@ class PrivateCloudManagementClusterStretchedClusterConfigArgs:
1620
1624
  def preferred_location(self) -> Optional[pulumi.Input[str]]:
1621
1625
  """
1622
1626
  Zone that will remain operational when connection between the two zones is lost.
1627
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1623
1628
  """
1624
1629
  return pulumi.get(self, "preferred_location")
1625
1630
 
@@ -1632,6 +1637,7 @@ class PrivateCloudManagementClusterStretchedClusterConfigArgs:
1632
1637
  def secondary_location(self) -> Optional[pulumi.Input[str]]:
1633
1638
  """
1634
1639
  Additional zone for a higher level of availability and load balancing.
1640
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1635
1641
  """
1636
1642
  return pulumi.get(self, "secondary_location")
1637
1643
 
@@ -1338,7 +1338,9 @@ class PrivateCloudManagementClusterStretchedClusterConfig(dict):
1338
1338
  secondary_location: Optional[str] = None):
1339
1339
  """
1340
1340
  :param str preferred_location: Zone that will remain operational when connection between the two zones is lost.
1341
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1341
1342
  :param str secondary_location: Additional zone for a higher level of availability and load balancing.
1343
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1342
1344
  """
1343
1345
  if preferred_location is not None:
1344
1346
  pulumi.set(__self__, "preferred_location", preferred_location)
@@ -1350,6 +1352,7 @@ class PrivateCloudManagementClusterStretchedClusterConfig(dict):
1350
1352
  def preferred_location(self) -> Optional[str]:
1351
1353
  """
1352
1354
  Zone that will remain operational when connection between the two zones is lost.
1355
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1353
1356
  """
1354
1357
  return pulumi.get(self, "preferred_location")
1355
1358
 
@@ -1358,6 +1361,7 @@ class PrivateCloudManagementClusterStretchedClusterConfig(dict):
1358
1361
  def secondary_location(self) -> Optional[str]:
1359
1362
  """
1360
1363
  Additional zone for a higher level of availability and load balancing.
1364
+ Specify the zone in the following format: projects/{project}/locations/{location}.
1361
1365
  """
1362
1366
  return pulumi.get(self, "secondary_location")
1363
1367
 
@@ -2513,7 +2517,9 @@ class GetPrivateCloudManagementClusterStretchedClusterConfigResult(dict):
2513
2517
  secondary_location: str):
2514
2518
  """
2515
2519
  :param str preferred_location: Zone that will remain operational when connection between the two zones is lost.
2520
+ Specify the zone in the following format: projects/{project}/locations/{location}.
2516
2521
  :param str secondary_location: Additional zone for a higher level of availability and load balancing.
2522
+ Specify the zone in the following format: projects/{project}/locations/{location}.
2517
2523
  """
2518
2524
  pulumi.set(__self__, "preferred_location", preferred_location)
2519
2525
  pulumi.set(__self__, "secondary_location", secondary_location)
@@ -2523,6 +2529,7 @@ class GetPrivateCloudManagementClusterStretchedClusterConfigResult(dict):
2523
2529
  def preferred_location(self) -> str:
2524
2530
  """
2525
2531
  Zone that will remain operational when connection between the two zones is lost.
2532
+ Specify the zone in the following format: projects/{project}/locations/{location}.
2526
2533
  """
2527
2534
  return pulumi.get(self, "preferred_location")
2528
2535
 
@@ -2531,6 +2538,7 @@ class GetPrivateCloudManagementClusterStretchedClusterConfigResult(dict):
2531
2538
  def secondary_location(self) -> str:
2532
2539
  """
2533
2540
  Additional zone for a higher level of availability and load balancing.
2541
+ Specify the zone in the following format: projects/{project}/locations/{location}.
2534
2542
  """
2535
2543
  return pulumi.get(self, "secondary_location")
2536
2544
 
@@ -30,7 +30,8 @@ class WorkstationClusterArgs:
30
30
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
31
31
  location: Optional[pulumi.Input[str]] = None,
32
32
  private_cluster_config: Optional[pulumi.Input['WorkstationClusterPrivateClusterConfigArgs']] = None,
33
- project: Optional[pulumi.Input[str]] = None):
33
+ project: Optional[pulumi.Input[str]] = None,
34
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
34
35
  """
35
36
  The set of arguments for constructing a WorkstationCluster resource.
36
37
  :param pulumi.Input[str] network: The relative resource name of the VPC network on which the instance can be accessed.
@@ -55,6 +56,10 @@ class WorkstationClusterArgs:
55
56
  Structure is documented below.
56
57
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
57
58
  If it is not provided, the provider project is used.
59
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Resource manager tags bound to this resource.
60
+ For example:
61
+ "123/environment": "production",
62
+ "123/costCenter": "marketing"
58
63
  """
59
64
  pulumi.set(__self__, "network", network)
60
65
  pulumi.set(__self__, "subnetwork", subnetwork)
@@ -73,6 +78,8 @@ class WorkstationClusterArgs:
73
78
  pulumi.set(__self__, "private_cluster_config", private_cluster_config)
74
79
  if project is not None:
75
80
  pulumi.set(__self__, "project", project)
81
+ if tags is not None:
82
+ pulumi.set(__self__, "tags", tags)
76
83
 
77
84
  @property
78
85
  @pulumi.getter
@@ -206,6 +213,21 @@ class WorkstationClusterArgs:
206
213
  def project(self, value: Optional[pulumi.Input[str]]):
207
214
  pulumi.set(self, "project", value)
208
215
 
216
+ @property
217
+ @pulumi.getter
218
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
219
+ """
220
+ Resource manager tags bound to this resource.
221
+ For example:
222
+ "123/environment": "production",
223
+ "123/costCenter": "marketing"
224
+ """
225
+ return pulumi.get(self, "tags")
226
+
227
+ @tags.setter
228
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
229
+ pulumi.set(self, "tags", value)
230
+
209
231
 
210
232
  @pulumi.input_type
211
233
  class _WorkstationClusterState:
@@ -228,6 +250,7 @@ class _WorkstationClusterState:
228
250
  project: Optional[pulumi.Input[str]] = None,
229
251
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
230
252
  subnetwork: Optional[pulumi.Input[str]] = None,
253
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
231
254
  uid: Optional[pulumi.Input[str]] = None,
232
255
  workstation_cluster_id: Optional[pulumi.Input[str]] = None):
233
256
  """
@@ -263,6 +286,10 @@ class _WorkstationClusterState:
263
286
  and default labels configured on the provider.
264
287
  :param pulumi.Input[str] subnetwork: Name of the Compute Engine subnetwork in which instances associated with this cluster will be created.
265
288
  Must be part of the subnetwork specified for this cluster.
289
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Resource manager tags bound to this resource.
290
+ For example:
291
+ "123/environment": "production",
292
+ "123/costCenter": "marketing"
266
293
  :param pulumi.Input[str] uid: The system-generated UID of the resource.
267
294
  :param pulumi.Input[str] workstation_cluster_id: ID to use for the workstation cluster.
268
295
 
@@ -305,6 +332,8 @@ class _WorkstationClusterState:
305
332
  pulumi.set(__self__, "pulumi_labels", pulumi_labels)
306
333
  if subnetwork is not None:
307
334
  pulumi.set(__self__, "subnetwork", subnetwork)
335
+ if tags is not None:
336
+ pulumi.set(__self__, "tags", tags)
308
337
  if uid is not None:
309
338
  pulumi.set(__self__, "uid", uid)
310
339
  if workstation_cluster_id is not None:
@@ -537,6 +566,21 @@ class _WorkstationClusterState:
537
566
  def subnetwork(self, value: Optional[pulumi.Input[str]]):
538
567
  pulumi.set(self, "subnetwork", value)
539
568
 
569
+ @property
570
+ @pulumi.getter
571
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
572
+ """
573
+ Resource manager tags bound to this resource.
574
+ For example:
575
+ "123/environment": "production",
576
+ "123/costCenter": "marketing"
577
+ """
578
+ return pulumi.get(self, "tags")
579
+
580
+ @tags.setter
581
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
582
+ pulumi.set(self, "tags", value)
583
+
540
584
  @property
541
585
  @pulumi.getter
542
586
  def uid(self) -> Optional[pulumi.Input[str]]:
@@ -579,6 +623,7 @@ class WorkstationCluster(pulumi.CustomResource):
579
623
  private_cluster_config: Optional[pulumi.Input[Union['WorkstationClusterPrivateClusterConfigArgs', 'WorkstationClusterPrivateClusterConfigArgsDict']]] = None,
580
624
  project: Optional[pulumi.Input[str]] = None,
581
625
  subnetwork: Optional[pulumi.Input[str]] = None,
626
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
582
627
  workstation_cluster_id: Optional[pulumi.Input[str]] = None,
583
628
  __props__=None):
584
629
  """
@@ -674,6 +719,40 @@ class WorkstationCluster(pulumi.CustomResource):
674
719
  })
675
720
  project = gcp.organizations.get_project()
676
721
  ```
722
+ ### Workstation Cluster Tags
723
+
724
+ ```python
725
+ import pulumi
726
+ import pulumi_gcp as gcp
727
+
728
+ project = gcp.organizations.get_project()
729
+ tag_key = gcp.tags.TagKey("tag_key",
730
+ parent=f"projects/{project.number}",
731
+ short_name="keyname")
732
+ tag_value = gcp.tags.TagValue("tag_value",
733
+ parent=tag_key.name.apply(lambda name: f"tagKeys/{name}"),
734
+ short_name="valuename")
735
+ default_network = gcp.compute.Network("default",
736
+ name="workstation-cluster-tags",
737
+ auto_create_subnetworks=False)
738
+ default_subnetwork = gcp.compute.Subnetwork("default",
739
+ name="workstation-cluster-tags",
740
+ ip_cidr_range="10.0.0.0/24",
741
+ region="us-central1",
742
+ network=default_network.name)
743
+ default = gcp.workstations.WorkstationCluster("default",
744
+ workstation_cluster_id="workstation-cluster-tags",
745
+ network=default_network.id,
746
+ subnetwork=default_subnetwork.id,
747
+ location="us-central1",
748
+ tags=pulumi.Output.all(
749
+ tagKeyShort_name=tag_key.short_name,
750
+ tagValueShort_name=tag_value.short_name
751
+ ).apply(lambda resolved_outputs: {
752
+ f"{project.project_id}/{resolved_outputs['tagKeyShort_name']}": resolved_outputs['tagValueShort_name'],
753
+ })
754
+ )
755
+ ```
677
756
 
678
757
  ## Import
679
758
 
@@ -719,6 +798,10 @@ class WorkstationCluster(pulumi.CustomResource):
719
798
  If it is not provided, the provider project is used.
720
799
  :param pulumi.Input[str] subnetwork: Name of the Compute Engine subnetwork in which instances associated with this cluster will be created.
721
800
  Must be part of the subnetwork specified for this cluster.
801
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Resource manager tags bound to this resource.
802
+ For example:
803
+ "123/environment": "production",
804
+ "123/costCenter": "marketing"
722
805
  :param pulumi.Input[str] workstation_cluster_id: ID to use for the workstation cluster.
723
806
 
724
807
 
@@ -823,6 +906,40 @@ class WorkstationCluster(pulumi.CustomResource):
823
906
  })
824
907
  project = gcp.organizations.get_project()
825
908
  ```
909
+ ### Workstation Cluster Tags
910
+
911
+ ```python
912
+ import pulumi
913
+ import pulumi_gcp as gcp
914
+
915
+ project = gcp.organizations.get_project()
916
+ tag_key = gcp.tags.TagKey("tag_key",
917
+ parent=f"projects/{project.number}",
918
+ short_name="keyname")
919
+ tag_value = gcp.tags.TagValue("tag_value",
920
+ parent=tag_key.name.apply(lambda name: f"tagKeys/{name}"),
921
+ short_name="valuename")
922
+ default_network = gcp.compute.Network("default",
923
+ name="workstation-cluster-tags",
924
+ auto_create_subnetworks=False)
925
+ default_subnetwork = gcp.compute.Subnetwork("default",
926
+ name="workstation-cluster-tags",
927
+ ip_cidr_range="10.0.0.0/24",
928
+ region="us-central1",
929
+ network=default_network.name)
930
+ default = gcp.workstations.WorkstationCluster("default",
931
+ workstation_cluster_id="workstation-cluster-tags",
932
+ network=default_network.id,
933
+ subnetwork=default_subnetwork.id,
934
+ location="us-central1",
935
+ tags=pulumi.Output.all(
936
+ tagKeyShort_name=tag_key.short_name,
937
+ tagValueShort_name=tag_value.short_name
938
+ ).apply(lambda resolved_outputs: {
939
+ f"{project.project_id}/{resolved_outputs['tagKeyShort_name']}": resolved_outputs['tagValueShort_name'],
940
+ })
941
+ )
942
+ ```
826
943
 
827
944
  ## Import
828
945
 
@@ -872,6 +989,7 @@ class WorkstationCluster(pulumi.CustomResource):
872
989
  private_cluster_config: Optional[pulumi.Input[Union['WorkstationClusterPrivateClusterConfigArgs', 'WorkstationClusterPrivateClusterConfigArgsDict']]] = None,
873
990
  project: Optional[pulumi.Input[str]] = None,
874
991
  subnetwork: Optional[pulumi.Input[str]] = None,
992
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
875
993
  workstation_cluster_id: Optional[pulumi.Input[str]] = None,
876
994
  __props__=None):
877
995
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
@@ -895,6 +1013,7 @@ class WorkstationCluster(pulumi.CustomResource):
895
1013
  if subnetwork is None and not opts.urn:
896
1014
  raise TypeError("Missing required property 'subnetwork'")
897
1015
  __props__.__dict__["subnetwork"] = subnetwork
1016
+ __props__.__dict__["tags"] = tags
898
1017
  if workstation_cluster_id is None and not opts.urn:
899
1018
  raise TypeError("Missing required property 'workstation_cluster_id'")
900
1019
  __props__.__dict__["workstation_cluster_id"] = workstation_cluster_id
@@ -938,6 +1057,7 @@ class WorkstationCluster(pulumi.CustomResource):
938
1057
  project: Optional[pulumi.Input[str]] = None,
939
1058
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
940
1059
  subnetwork: Optional[pulumi.Input[str]] = None,
1060
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
941
1061
  uid: Optional[pulumi.Input[str]] = None,
942
1062
  workstation_cluster_id: Optional[pulumi.Input[str]] = None) -> 'WorkstationCluster':
943
1063
  """
@@ -978,6 +1098,10 @@ class WorkstationCluster(pulumi.CustomResource):
978
1098
  and default labels configured on the provider.
979
1099
  :param pulumi.Input[str] subnetwork: Name of the Compute Engine subnetwork in which instances associated with this cluster will be created.
980
1100
  Must be part of the subnetwork specified for this cluster.
1101
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: Resource manager tags bound to this resource.
1102
+ For example:
1103
+ "123/environment": "production",
1104
+ "123/costCenter": "marketing"
981
1105
  :param pulumi.Input[str] uid: The system-generated UID of the resource.
982
1106
  :param pulumi.Input[str] workstation_cluster_id: ID to use for the workstation cluster.
983
1107
 
@@ -1006,6 +1130,7 @@ class WorkstationCluster(pulumi.CustomResource):
1006
1130
  __props__.__dict__["project"] = project
1007
1131
  __props__.__dict__["pulumi_labels"] = pulumi_labels
1008
1132
  __props__.__dict__["subnetwork"] = subnetwork
1133
+ __props__.__dict__["tags"] = tags
1009
1134
  __props__.__dict__["uid"] = uid
1010
1135
  __props__.__dict__["workstation_cluster_id"] = workstation_cluster_id
1011
1136
  return WorkstationCluster(resource_name, opts=opts, __props__=__props__)
@@ -1165,6 +1290,17 @@ class WorkstationCluster(pulumi.CustomResource):
1165
1290
  """
1166
1291
  return pulumi.get(self, "subnetwork")
1167
1292
 
1293
+ @property
1294
+ @pulumi.getter
1295
+ def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
1296
+ """
1297
+ Resource manager tags bound to this resource.
1298
+ For example:
1299
+ "123/environment": "production",
1300
+ "123/costCenter": "marketing"
1301
+ """
1302
+ return pulumi.get(self, "tags")
1303
+
1168
1304
  @property
1169
1305
  @pulumi.getter
1170
1306
  def uid(self) -> pulumi.Output[str]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pulumi_gcp
3
- Version: 8.21.0a1741156431
3
+ Version: 8.22.0
4
4
  Summary: A Pulumi package for creating and managing Google Cloud Platform resources.
5
5
  License: Apache-2.0
6
6
  Project-URL: Homepage, https://pulumi.io