pulumi-gcp 7.15.0a1711038061__py3-none-any.whl → 7.16.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 (83) hide show
  1. pulumi_gcp/__init__.py +102 -0
  2. pulumi_gcp/accesscontextmanager/__init__.py +1 -0
  3. pulumi_gcp/accesscontextmanager/_inputs.py +74 -58
  4. pulumi_gcp/accesscontextmanager/outputs.py +74 -58
  5. pulumi_gcp/accesscontextmanager/service_perimeter.py +0 -2
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_resource.py +345 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +80 -0
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +86 -0
  9. pulumi_gcp/accesscontextmanager/service_perimeter_resource.py +4 -2
  10. pulumi_gcp/apphub/__init__.py +15 -0
  11. pulumi_gcp/apphub/_inputs.py +1016 -0
  12. pulumi_gcp/apphub/application.py +775 -0
  13. pulumi_gcp/apphub/get_discovered_service.py +180 -0
  14. pulumi_gcp/apphub/get_discovered_workload.py +180 -0
  15. pulumi_gcp/apphub/outputs.py +1206 -0
  16. pulumi_gcp/apphub/service.py +1121 -0
  17. pulumi_gcp/apphub/service_project_attachment.py +516 -0
  18. pulumi_gcp/apphub/workload.py +1197 -0
  19. pulumi_gcp/cloudquota/__init__.py +10 -0
  20. pulumi_gcp/cloudquota/get_s_quota_info.py +322 -0
  21. pulumi_gcp/cloudquota/get_s_quota_infos.py +136 -0
  22. pulumi_gcp/cloudquota/outputs.py +375 -0
  23. pulumi_gcp/cloudrunv2/_inputs.py +85 -4
  24. pulumi_gcp/cloudrunv2/get_service.py +11 -1
  25. pulumi_gcp/cloudrunv2/outputs.py +165 -6
  26. pulumi_gcp/cloudrunv2/service.py +60 -6
  27. pulumi_gcp/composer/_inputs.py +16 -0
  28. pulumi_gcp/composer/outputs.py +23 -0
  29. pulumi_gcp/compute/_inputs.py +109 -11
  30. pulumi_gcp/compute/outputs.py +144 -13
  31. pulumi_gcp/compute/region_network_endpoint_group.py +30 -0
  32. pulumi_gcp/compute/region_url_map.py +152 -0
  33. pulumi_gcp/config/__init__.pyi +4 -0
  34. pulumi_gcp/config/vars.py +8 -0
  35. pulumi_gcp/dataform/repository.py +4 -74
  36. pulumi_gcp/firebase/__init__.py +1 -0
  37. pulumi_gcp/firebase/android_app.py +41 -40
  38. pulumi_gcp/firebase/app_check_device_check_config.py +572 -0
  39. pulumi_gcp/firestore/_inputs.py +69 -0
  40. pulumi_gcp/firestore/database.py +206 -0
  41. pulumi_gcp/firestore/index.py +34 -48
  42. pulumi_gcp/firestore/outputs.py +80 -0
  43. pulumi_gcp/gkeonprem/_inputs.py +1 -3
  44. pulumi_gcp/gkeonprem/outputs.py +1 -3
  45. pulumi_gcp/gkeonprem/v_mware_cluster.py +2 -0
  46. pulumi_gcp/iap/__init__.py +5 -0
  47. pulumi_gcp/iap/_inputs.py +100 -0
  48. pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +172 -0
  49. pulumi_gcp/iap/outputs.py +76 -0
  50. pulumi_gcp/iap/tunnel_dest_group.py +524 -0
  51. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +858 -0
  52. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +858 -0
  53. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +760 -0
  54. pulumi_gcp/kms/__init__.py +1 -0
  55. pulumi_gcp/kms/_inputs.py +246 -0
  56. pulumi_gcp/kms/ekm_connection.py +610 -0
  57. pulumi_gcp/kms/outputs.py +242 -0
  58. pulumi_gcp/monitoring/_inputs.py +2 -0
  59. pulumi_gcp/monitoring/outputs.py +2 -0
  60. pulumi_gcp/networksecurity/__init__.py +1 -0
  61. pulumi_gcp/networksecurity/firewall_endpoint.py +48 -0
  62. pulumi_gcp/networksecurity/firewall_endpoint_association.py +753 -0
  63. pulumi_gcp/notebooks/instance.py +8 -0
  64. pulumi_gcp/orgpolicy/policy.py +2 -2
  65. pulumi_gcp/provider.py +40 -0
  66. pulumi_gcp/pubsub/_inputs.py +108 -0
  67. pulumi_gcp/pubsub/get_topic.py +11 -1
  68. pulumi_gcp/pubsub/outputs.py +213 -0
  69. pulumi_gcp/pubsub/subscription.py +4 -4
  70. pulumi_gcp/pubsub/topic.py +92 -0
  71. pulumi_gcp/securityposture/posture.py +2 -2
  72. pulumi_gcp/securityposture/posture_deployment.py +2 -2
  73. pulumi_gcp/storage/_inputs.py +72 -15
  74. pulumi_gcp/storage/bucket.py +54 -0
  75. pulumi_gcp/storage/get_bucket.py +11 -1
  76. pulumi_gcp/storage/outputs.py +110 -14
  77. pulumi_gcp/workstations/_inputs.py +247 -4
  78. pulumi_gcp/workstations/outputs.py +261 -5
  79. pulumi_gcp/workstations/workstation_config.py +160 -0
  80. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/METADATA +1 -1
  81. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/RECORD +83 -61
  82. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/WHEEL +0 -0
  83. {pulumi_gcp-7.15.0a1711038061.dist-info → pulumi_gcp-7.16.0.dist-info}/top_level.txt +0 -0
@@ -24,6 +24,7 @@ __all__ = [
24
24
  'BucketObjectCustomerEncryption',
25
25
  'BucketObjectRetention',
26
26
  'BucketRetentionPolicy',
27
+ 'BucketSoftDeletePolicy',
27
28
  'BucketVersioning',
28
29
  'BucketWebsite',
29
30
  'DefaultObjectAccessControlProjectTeam',
@@ -67,6 +68,7 @@ __all__ = [
67
68
  'GetBucketObjectCustomerEncryptionResult',
68
69
  'GetBucketObjectRetentionResult',
69
70
  'GetBucketRetentionPolicyResult',
71
+ 'GetBucketSoftDeletePolicyResult',
70
72
  'GetBucketVersioningResult',
71
73
  'GetBucketWebsiteResult',
72
74
  ]
@@ -849,6 +851,56 @@ class BucketRetentionPolicy(dict):
849
851
  return pulumi.get(self, "is_locked")
850
852
 
851
853
 
854
+ @pulumi.output_type
855
+ class BucketSoftDeletePolicy(dict):
856
+ @staticmethod
857
+ def __key_warning(key: str):
858
+ suggest = None
859
+ if key == "effectiveTime":
860
+ suggest = "effective_time"
861
+ elif key == "retentionDurationSeconds":
862
+ suggest = "retention_duration_seconds"
863
+
864
+ if suggest:
865
+ pulumi.log.warn(f"Key '{key}' not found in BucketSoftDeletePolicy. Access the value via the '{suggest}' property getter instead.")
866
+
867
+ def __getitem__(self, key: str) -> Any:
868
+ BucketSoftDeletePolicy.__key_warning(key)
869
+ return super().__getitem__(key)
870
+
871
+ def get(self, key: str, default = None) -> Any:
872
+ BucketSoftDeletePolicy.__key_warning(key)
873
+ return super().get(key, default)
874
+
875
+ def __init__(__self__, *,
876
+ effective_time: Optional[str] = None,
877
+ retention_duration_seconds: Optional[int] = None):
878
+ """
879
+ :param str effective_time: Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format.
880
+ :param int retention_duration_seconds: The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Default value is 604800. The value must be in between 604800(7 days) and 7776000(90 days). **Note**: To disable the soft delete policy on a bucket, This field must be set to 0.
881
+ """
882
+ if effective_time is not None:
883
+ pulumi.set(__self__, "effective_time", effective_time)
884
+ if retention_duration_seconds is not None:
885
+ pulumi.set(__self__, "retention_duration_seconds", retention_duration_seconds)
886
+
887
+ @property
888
+ @pulumi.getter(name="effectiveTime")
889
+ def effective_time(self) -> Optional[str]:
890
+ """
891
+ Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format.
892
+ """
893
+ return pulumi.get(self, "effective_time")
894
+
895
+ @property
896
+ @pulumi.getter(name="retentionDurationSeconds")
897
+ def retention_duration_seconds(self) -> Optional[int]:
898
+ """
899
+ The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Default value is 604800. The value must be in between 604800(7 days) and 7776000(90 days). **Note**: To disable the soft delete policy on a bucket, This field must be set to 0.
900
+ """
901
+ return pulumi.get(self, "retention_duration_seconds")
902
+
903
+
852
904
  @pulumi.output_type
853
905
  class BucketVersioning(dict):
854
906
  def __init__(__self__, *,
@@ -2042,10 +2094,12 @@ class TransferJobTransferSpecAzureBlobStorageDataSource(dict):
2042
2094
  @staticmethod
2043
2095
  def __key_warning(key: str):
2044
2096
  suggest = None
2045
- if key == "azureCredentials":
2046
- suggest = "azure_credentials"
2047
- elif key == "storageAccount":
2097
+ if key == "storageAccount":
2048
2098
  suggest = "storage_account"
2099
+ elif key == "azureCredentials":
2100
+ suggest = "azure_credentials"
2101
+ elif key == "credentialsSecret":
2102
+ suggest = "credentials_secret"
2049
2103
 
2050
2104
  if suggest:
2051
2105
  pulumi.log.warn(f"Key '{key}' not found in TransferJobTransferSpecAzureBlobStorageDataSource. Access the value via the '{suggest}' property getter instead.")
@@ -2059,30 +2113,27 @@ class TransferJobTransferSpecAzureBlobStorageDataSource(dict):
2059
2113
  return super().get(key, default)
2060
2114
 
2061
2115
  def __init__(__self__, *,
2062
- azure_credentials: 'outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials',
2063
2116
  container: str,
2064
2117
  storage_account: str,
2118
+ azure_credentials: Optional['outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials'] = None,
2119
+ credentials_secret: Optional[str] = None,
2065
2120
  path: Optional[str] = None):
2066
2121
  """
2067
- :param 'TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs' azure_credentials: Credentials used to authenticate API requests to Azure block.
2068
2122
  :param str container: The container to transfer from the Azure Storage account.`
2069
2123
  :param str storage_account: The name of the Azure Storage account.
2124
+ :param 'TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs' azure_credentials: Credentials used to authenticate API requests to Azure block.
2125
+ :param str credentials_secret: Full Resource name of a secret in Secret Manager containing [SAS Credentials in JSON form](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#azureblobstoragedata:~:text=begin%!w(MISSING)ith%!a(MISSING)%27/%!-(MISSING),credentialsSecret,-string). Service Agent for Storage Transfer must have permissions to access secret. If credentials_secret is specified, do not specify azure_credentials.`,
2070
2126
  :param str path: Root path to transfer objects. Must be an empty string or full path name that ends with a '/'. This field is treated as an object prefix. As such, it should generally not begin with a '/'.
2071
2127
  """
2072
- pulumi.set(__self__, "azure_credentials", azure_credentials)
2073
2128
  pulumi.set(__self__, "container", container)
2074
2129
  pulumi.set(__self__, "storage_account", storage_account)
2130
+ if azure_credentials is not None:
2131
+ pulumi.set(__self__, "azure_credentials", azure_credentials)
2132
+ if credentials_secret is not None:
2133
+ pulumi.set(__self__, "credentials_secret", credentials_secret)
2075
2134
  if path is not None:
2076
2135
  pulumi.set(__self__, "path", path)
2077
2136
 
2078
- @property
2079
- @pulumi.getter(name="azureCredentials")
2080
- def azure_credentials(self) -> 'outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials':
2081
- """
2082
- Credentials used to authenticate API requests to Azure block.
2083
- """
2084
- return pulumi.get(self, "azure_credentials")
2085
-
2086
2137
  @property
2087
2138
  @pulumi.getter
2088
2139
  def container(self) -> str:
@@ -2099,6 +2150,22 @@ class TransferJobTransferSpecAzureBlobStorageDataSource(dict):
2099
2150
  """
2100
2151
  return pulumi.get(self, "storage_account")
2101
2152
 
2153
+ @property
2154
+ @pulumi.getter(name="azureCredentials")
2155
+ def azure_credentials(self) -> Optional['outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials']:
2156
+ """
2157
+ Credentials used to authenticate API requests to Azure block.
2158
+ """
2159
+ return pulumi.get(self, "azure_credentials")
2160
+
2161
+ @property
2162
+ @pulumi.getter(name="credentialsSecret")
2163
+ def credentials_secret(self) -> Optional[str]:
2164
+ """
2165
+ Full Resource name of a secret in Secret Manager containing [SAS Credentials in JSON form](https://cloud.google.com/storage-transfer/docs/reference/rest/v1/TransferSpec#azureblobstoragedata:~:text=begin%!w(MISSING)ith%!a(MISSING)%27/%!-(MISSING),credentialsSecret,-string). Service Agent for Storage Transfer must have permissions to access secret. If credentials_secret is specified, do not specify azure_credentials.`,
2166
+ """
2167
+ return pulumi.get(self, "credentials_secret")
2168
+
2102
2169
  @property
2103
2170
  @pulumi.getter
2104
2171
  def path(self) -> Optional[str]:
@@ -3025,6 +3092,35 @@ class GetBucketRetentionPolicyResult(dict):
3025
3092
  return pulumi.get(self, "retention_period")
3026
3093
 
3027
3094
 
3095
+ @pulumi.output_type
3096
+ class GetBucketSoftDeletePolicyResult(dict):
3097
+ def __init__(__self__, *,
3098
+ effective_time: str,
3099
+ retention_duration_seconds: int):
3100
+ """
3101
+ :param str effective_time: Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format.
3102
+ :param int retention_duration_seconds: The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Default value is 604800.
3103
+ """
3104
+ pulumi.set(__self__, "effective_time", effective_time)
3105
+ pulumi.set(__self__, "retention_duration_seconds", retention_duration_seconds)
3106
+
3107
+ @property
3108
+ @pulumi.getter(name="effectiveTime")
3109
+ def effective_time(self) -> str:
3110
+ """
3111
+ Server-determined value that indicates the time from which the policy, or one with a greater retention, was effective. This value is in RFC 3339 format.
3112
+ """
3113
+ return pulumi.get(self, "effective_time")
3114
+
3115
+ @property
3116
+ @pulumi.getter(name="retentionDurationSeconds")
3117
+ def retention_duration_seconds(self) -> int:
3118
+ """
3119
+ The duration in seconds that soft-deleted objects in the bucket will be retained and cannot be permanently deleted. Default value is 604800.
3120
+ """
3121
+ return pulumi.get(self, "retention_duration_seconds")
3122
+
3123
+
3028
3124
  @pulumi.output_type
3029
3125
  class GetBucketVersioningResult(dict):
3030
3126
  def __init__(__self__, *,
@@ -16,9 +16,13 @@ __all__ = [
16
16
  'WorkstationConfigConditionArgs',
17
17
  'WorkstationConfigContainerArgs',
18
18
  'WorkstationConfigEncryptionKeyArgs',
19
+ 'WorkstationConfigEphemeralDirectoryArgs',
20
+ 'WorkstationConfigEphemeralDirectoryGcePdArgs',
19
21
  'WorkstationConfigHostArgs',
20
22
  'WorkstationConfigHostGceInstanceArgs',
21
23
  'WorkstationConfigHostGceInstanceAcceleratorArgs',
24
+ 'WorkstationConfigHostGceInstanceBoostConfigArgs',
25
+ 'WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs',
22
26
  'WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs',
23
27
  'WorkstationConfigHostGceInstanceShieldedInstanceConfigArgs',
24
28
  'WorkstationConfigIamBindingConditionArgs',
@@ -400,6 +404,128 @@ class WorkstationConfigEncryptionKeyArgs:
400
404
  pulumi.set(self, "kms_key_service_account", value)
401
405
 
402
406
 
407
+ @pulumi.input_type
408
+ class WorkstationConfigEphemeralDirectoryArgs:
409
+ def __init__(__self__, *,
410
+ gce_pd: Optional[pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs']] = None,
411
+ mount_path: Optional[pulumi.Input[str]] = None):
412
+ """
413
+ :param pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs'] gce_pd: An EphemeralDirectory backed by a Compute Engine persistent disk.
414
+ Structure is documented below.
415
+ :param pulumi.Input[str] mount_path: Location of this directory in the running workstation.
416
+ """
417
+ if gce_pd is not None:
418
+ pulumi.set(__self__, "gce_pd", gce_pd)
419
+ if mount_path is not None:
420
+ pulumi.set(__self__, "mount_path", mount_path)
421
+
422
+ @property
423
+ @pulumi.getter(name="gcePd")
424
+ def gce_pd(self) -> Optional[pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs']]:
425
+ """
426
+ An EphemeralDirectory backed by a Compute Engine persistent disk.
427
+ Structure is documented below.
428
+ """
429
+ return pulumi.get(self, "gce_pd")
430
+
431
+ @gce_pd.setter
432
+ def gce_pd(self, value: Optional[pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs']]):
433
+ pulumi.set(self, "gce_pd", value)
434
+
435
+ @property
436
+ @pulumi.getter(name="mountPath")
437
+ def mount_path(self) -> Optional[pulumi.Input[str]]:
438
+ """
439
+ Location of this directory in the running workstation.
440
+ """
441
+ return pulumi.get(self, "mount_path")
442
+
443
+ @mount_path.setter
444
+ def mount_path(self, value: Optional[pulumi.Input[str]]):
445
+ pulumi.set(self, "mount_path", value)
446
+
447
+
448
+ @pulumi.input_type
449
+ class WorkstationConfigEphemeralDirectoryGcePdArgs:
450
+ def __init__(__self__, *,
451
+ disk_type: Optional[pulumi.Input[str]] = None,
452
+ read_only: Optional[pulumi.Input[bool]] = None,
453
+ source_image: Optional[pulumi.Input[str]] = None,
454
+ source_snapshot: Optional[pulumi.Input[str]] = None):
455
+ """
456
+ :param pulumi.Input[str] disk_type: Type of the disk to use. Defaults to `"pd-standard"`.
457
+ :param pulumi.Input[bool] read_only: Whether the disk is read only. If true, the disk may be shared by multiple VMs and `sourceSnapshot` must be set.
458
+ :param pulumi.Input[str] source_image: Name of the disk image to use as the source for the disk.
459
+ Must be empty `sourceSnapshot` is set.
460
+ Updating `sourceImage` will update content in the ephemeral directory after the workstation is restarted.
461
+ :param pulumi.Input[str] source_snapshot: Name of the snapshot to use as the source for the disk.
462
+ Must be empty if `sourceImage` is set.
463
+ Must be empty if `read_only` is false.
464
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
465
+ """
466
+ if disk_type is not None:
467
+ pulumi.set(__self__, "disk_type", disk_type)
468
+ if read_only is not None:
469
+ pulumi.set(__self__, "read_only", read_only)
470
+ if source_image is not None:
471
+ pulumi.set(__self__, "source_image", source_image)
472
+ if source_snapshot is not None:
473
+ pulumi.set(__self__, "source_snapshot", source_snapshot)
474
+
475
+ @property
476
+ @pulumi.getter(name="diskType")
477
+ def disk_type(self) -> Optional[pulumi.Input[str]]:
478
+ """
479
+ Type of the disk to use. Defaults to `"pd-standard"`.
480
+ """
481
+ return pulumi.get(self, "disk_type")
482
+
483
+ @disk_type.setter
484
+ def disk_type(self, value: Optional[pulumi.Input[str]]):
485
+ pulumi.set(self, "disk_type", value)
486
+
487
+ @property
488
+ @pulumi.getter(name="readOnly")
489
+ def read_only(self) -> Optional[pulumi.Input[bool]]:
490
+ """
491
+ Whether the disk is read only. If true, the disk may be shared by multiple VMs and `sourceSnapshot` must be set.
492
+ """
493
+ return pulumi.get(self, "read_only")
494
+
495
+ @read_only.setter
496
+ def read_only(self, value: Optional[pulumi.Input[bool]]):
497
+ pulumi.set(self, "read_only", value)
498
+
499
+ @property
500
+ @pulumi.getter(name="sourceImage")
501
+ def source_image(self) -> Optional[pulumi.Input[str]]:
502
+ """
503
+ Name of the disk image to use as the source for the disk.
504
+ Must be empty `sourceSnapshot` is set.
505
+ Updating `sourceImage` will update content in the ephemeral directory after the workstation is restarted.
506
+ """
507
+ return pulumi.get(self, "source_image")
508
+
509
+ @source_image.setter
510
+ def source_image(self, value: Optional[pulumi.Input[str]]):
511
+ pulumi.set(self, "source_image", value)
512
+
513
+ @property
514
+ @pulumi.getter(name="sourceSnapshot")
515
+ def source_snapshot(self) -> Optional[pulumi.Input[str]]:
516
+ """
517
+ Name of the snapshot to use as the source for the disk.
518
+ Must be empty if `sourceImage` is set.
519
+ Must be empty if `read_only` is false.
520
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
521
+ """
522
+ return pulumi.get(self, "source_snapshot")
523
+
524
+ @source_snapshot.setter
525
+ def source_snapshot(self, value: Optional[pulumi.Input[str]]):
526
+ pulumi.set(self, "source_snapshot", value)
527
+
528
+
403
529
  @pulumi.input_type
404
530
  class WorkstationConfigHostArgs:
405
531
  def __init__(__self__, *,
@@ -429,6 +555,7 @@ class WorkstationConfigHostArgs:
429
555
  class WorkstationConfigHostGceInstanceArgs:
430
556
  def __init__(__self__, *,
431
557
  accelerators: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceAcceleratorArgs']]]] = None,
558
+ boost_configs: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigArgs']]]] = None,
432
559
  boot_disk_size_gb: Optional[pulumi.Input[int]] = None,
433
560
  confidential_instance_config: Optional[pulumi.Input['WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs']] = None,
434
561
  disable_public_ip_addresses: Optional[pulumi.Input[bool]] = None,
@@ -443,6 +570,8 @@ class WorkstationConfigHostGceInstanceArgs:
443
570
  """
444
571
  :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceAcceleratorArgs']]] accelerators: An accelerator card attached to the instance.
445
572
  Structure is documented below.
573
+ :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigArgs']]] boost_configs: A list of the boost configurations that workstations created using this workstation configuration are allowed to use.
574
+ Structure is documented below.
446
575
  :param pulumi.Input[int] boot_disk_size_gb: Size of the boot disk in GB.
447
576
  :param pulumi.Input['WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs'] confidential_instance_config: A set of Compute Engine Confidential VM instance options.
448
577
  Structure is documented below.
@@ -460,6 +589,8 @@ class WorkstationConfigHostGceInstanceArgs:
460
589
  """
461
590
  if accelerators is not None:
462
591
  pulumi.set(__self__, "accelerators", accelerators)
592
+ if boost_configs is not None:
593
+ pulumi.set(__self__, "boost_configs", boost_configs)
463
594
  if boot_disk_size_gb is not None:
464
595
  pulumi.set(__self__, "boot_disk_size_gb", boot_disk_size_gb)
465
596
  if confidential_instance_config is not None:
@@ -496,6 +627,19 @@ class WorkstationConfigHostGceInstanceArgs:
496
627
  def accelerators(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceAcceleratorArgs']]]]):
497
628
  pulumi.set(self, "accelerators", value)
498
629
 
630
+ @property
631
+ @pulumi.getter(name="boostConfigs")
632
+ def boost_configs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigArgs']]]]:
633
+ """
634
+ A list of the boost configurations that workstations created using this workstation configuration are allowed to use.
635
+ Structure is documented below.
636
+ """
637
+ return pulumi.get(self, "boost_configs")
638
+
639
+ @boost_configs.setter
640
+ def boost_configs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigArgs']]]]):
641
+ pulumi.set(self, "boost_configs", value)
642
+
499
643
  @property
500
644
  @pulumi.getter(name="bootDiskSizeGb")
501
645
  def boot_disk_size_gb(self) -> Optional[pulumi.Input[int]]:
@@ -669,6 +813,99 @@ class WorkstationConfigHostGceInstanceAcceleratorArgs:
669
813
  pulumi.set(self, "type", value)
670
814
 
671
815
 
816
+ @pulumi.input_type
817
+ class WorkstationConfigHostGceInstanceBoostConfigArgs:
818
+ def __init__(__self__, *,
819
+ id: pulumi.Input[str],
820
+ accelerators: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs']]]] = None,
821
+ machine_type: Optional[pulumi.Input[str]] = None):
822
+ """
823
+ :param pulumi.Input[str] id: The id to be used for the boost config.
824
+ :param pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs']]] accelerators: An accelerator card attached to the boost instance.
825
+ Structure is documented below.
826
+ :param pulumi.Input[str] machine_type: The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
827
+ """
828
+ pulumi.set(__self__, "id", id)
829
+ if accelerators is not None:
830
+ pulumi.set(__self__, "accelerators", accelerators)
831
+ if machine_type is not None:
832
+ pulumi.set(__self__, "machine_type", machine_type)
833
+
834
+ @property
835
+ @pulumi.getter
836
+ def id(self) -> pulumi.Input[str]:
837
+ """
838
+ The id to be used for the boost config.
839
+ """
840
+ return pulumi.get(self, "id")
841
+
842
+ @id.setter
843
+ def id(self, value: pulumi.Input[str]):
844
+ pulumi.set(self, "id", value)
845
+
846
+ @property
847
+ @pulumi.getter
848
+ def accelerators(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs']]]]:
849
+ """
850
+ An accelerator card attached to the boost instance.
851
+ Structure is documented below.
852
+ """
853
+ return pulumi.get(self, "accelerators")
854
+
855
+ @accelerators.setter
856
+ def accelerators(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs']]]]):
857
+ pulumi.set(self, "accelerators", value)
858
+
859
+ @property
860
+ @pulumi.getter(name="machineType")
861
+ def machine_type(self) -> Optional[pulumi.Input[str]]:
862
+ """
863
+ The type of machine that boosted VM instances will use—for example, e2-standard-4. For more information about machine types that Cloud Workstations supports, see the list of available machine types https://cloud.google.com/workstations/docs/available-machine-types. Defaults to e2-standard-4.
864
+ """
865
+ return pulumi.get(self, "machine_type")
866
+
867
+ @machine_type.setter
868
+ def machine_type(self, value: Optional[pulumi.Input[str]]):
869
+ pulumi.set(self, "machine_type", value)
870
+
871
+
872
+ @pulumi.input_type
873
+ class WorkstationConfigHostGceInstanceBoostConfigAcceleratorArgs:
874
+ def __init__(__self__, *,
875
+ count: pulumi.Input[int],
876
+ type: pulumi.Input[str]):
877
+ """
878
+ :param pulumi.Input[int] count: Number of accelerator cards exposed to the instance.
879
+ :param pulumi.Input[str] type: Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
880
+ """
881
+ pulumi.set(__self__, "count", count)
882
+ pulumi.set(__self__, "type", type)
883
+
884
+ @property
885
+ @pulumi.getter
886
+ def count(self) -> pulumi.Input[int]:
887
+ """
888
+ Number of accelerator cards exposed to the instance.
889
+ """
890
+ return pulumi.get(self, "count")
891
+
892
+ @count.setter
893
+ def count(self, value: pulumi.Input[int]):
894
+ pulumi.set(self, "count", value)
895
+
896
+ @property
897
+ @pulumi.getter
898
+ def type(self) -> pulumi.Input[str]:
899
+ """
900
+ Type of accelerator resource to attach to the instance, for example, "nvidia-tesla-p100".
901
+ """
902
+ return pulumi.get(self, "type")
903
+
904
+ @type.setter
905
+ def type(self, value: pulumi.Input[str]):
906
+ pulumi.set(self, "type", value)
907
+
908
+
672
909
  @pulumi.input_type
673
910
  class WorkstationConfigHostGceInstanceConfidentialInstanceConfigArgs:
674
911
  def __init__(__self__, *,
@@ -875,13 +1112,16 @@ class WorkstationConfigPersistentDirectoryGcePdArgs:
875
1112
  size_gb: Optional[pulumi.Input[int]] = None,
876
1113
  source_snapshot: Optional[pulumi.Input[str]] = None):
877
1114
  """
878
- :param pulumi.Input[str] disk_type: The type of the persistent disk for the home directory. Defaults to `pd-standard`.
1115
+ :param pulumi.Input[str] disk_type: Type of the disk to use. Defaults to `"pd-standard"`.
879
1116
  :param pulumi.Input[str] fs_type: Type of file system that the disk should be formatted with. The workstation image must support this file system type. Must be empty if `sourceSnapshot` is set. Defaults to `ext4`.
880
1117
  :param pulumi.Input[str] reclaim_policy: Whether the persistent disk should be deleted when the workstation is deleted. Valid values are `DELETE` and `RETAIN`. Defaults to `DELETE`.
881
1118
  Possible values are: `DELETE`, `RETAIN`.
882
1119
  :param pulumi.Input[int] size_gb: The GB capacity of a persistent home directory for each workstation created with this configuration. Must be empty if `sourceSnapshot` is set.
883
1120
  Valid values are `10`, `50`, `100`, `200`, `500`, or `1000`. Defaults to `200`. If less than `200` GB, the `diskType` must be `pd-balanced` or `pd-ssd`.
884
- :param pulumi.Input[str] source_snapshot: Name of the snapshot to use as the source for the disk. This can be the snapshot's `self_link`, `id`, or a string in the format of `projects/{project}/global/snapshots/{snapshot}`. If set, `sizeGb` and `fsType` must be empty. Can only be updated if it has an existing value.
1121
+ :param pulumi.Input[str] source_snapshot: Name of the snapshot to use as the source for the disk.
1122
+ Must be empty if `sourceImage` is set.
1123
+ Must be empty if `read_only` is false.
1124
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
885
1125
  """
886
1126
  if disk_type is not None:
887
1127
  pulumi.set(__self__, "disk_type", disk_type)
@@ -898,7 +1138,7 @@ class WorkstationConfigPersistentDirectoryGcePdArgs:
898
1138
  @pulumi.getter(name="diskType")
899
1139
  def disk_type(self) -> Optional[pulumi.Input[str]]:
900
1140
  """
901
- The type of the persistent disk for the home directory. Defaults to `pd-standard`.
1141
+ Type of the disk to use. Defaults to `"pd-standard"`.
902
1142
  """
903
1143
  return pulumi.get(self, "disk_type")
904
1144
 
@@ -948,7 +1188,10 @@ class WorkstationConfigPersistentDirectoryGcePdArgs:
948
1188
  @pulumi.getter(name="sourceSnapshot")
949
1189
  def source_snapshot(self) -> Optional[pulumi.Input[str]]:
950
1190
  """
951
- Name of the snapshot to use as the source for the disk. This can be the snapshot's `self_link`, `id`, or a string in the format of `projects/{project}/global/snapshots/{snapshot}`. If set, `sizeGb` and `fsType` must be empty. Can only be updated if it has an existing value.
1191
+ Name of the snapshot to use as the source for the disk.
1192
+ Must be empty if `sourceImage` is set.
1193
+ Must be empty if `read_only` is false.
1194
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
952
1195
  """
953
1196
  return pulumi.get(self, "source_snapshot")
954
1197