pulumi-gcp 7.15.0a1711031093__py3-none-any.whl → 7.15.0a1711123513__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 (62) hide show
  1. pulumi_gcp/__init__.py +94 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +74 -58
  3. pulumi_gcp/accesscontextmanager/outputs.py +74 -58
  4. pulumi_gcp/accesscontextmanager/service_perimeter.py +0 -2
  5. pulumi_gcp/apphub/__init__.py +15 -0
  6. pulumi_gcp/apphub/_inputs.py +1016 -0
  7. pulumi_gcp/apphub/application.py +775 -0
  8. pulumi_gcp/apphub/get_discovered_service.py +180 -0
  9. pulumi_gcp/apphub/get_discovered_workload.py +180 -0
  10. pulumi_gcp/apphub/outputs.py +1206 -0
  11. pulumi_gcp/apphub/service.py +1121 -0
  12. pulumi_gcp/apphub/service_project_attachment.py +516 -0
  13. pulumi_gcp/apphub/workload.py +1197 -0
  14. pulumi_gcp/cloudquota/__init__.py +9 -0
  15. pulumi_gcp/cloudquota/get_s_quota_info.py +322 -0
  16. pulumi_gcp/cloudquota/outputs.py +105 -0
  17. pulumi_gcp/cloudrunv2/_inputs.py +26 -2
  18. pulumi_gcp/cloudrunv2/get_service.py +11 -1
  19. pulumi_gcp/cloudrunv2/outputs.py +58 -2
  20. pulumi_gcp/cloudrunv2/service.py +54 -0
  21. pulumi_gcp/compute/_inputs.py +4 -4
  22. pulumi_gcp/compute/outputs.py +4 -4
  23. pulumi_gcp/compute/region_network_endpoint_group.py +30 -0
  24. pulumi_gcp/config/__init__.pyi +4 -0
  25. pulumi_gcp/config/vars.py +8 -0
  26. pulumi_gcp/firebase/__init__.py +1 -0
  27. pulumi_gcp/firebase/app_check_device_check_config.py +572 -0
  28. pulumi_gcp/firestore/_inputs.py +69 -0
  29. pulumi_gcp/firestore/database.py +206 -0
  30. pulumi_gcp/firestore/outputs.py +80 -0
  31. pulumi_gcp/gkeonprem/_inputs.py +1 -3
  32. pulumi_gcp/gkeonprem/outputs.py +1 -3
  33. pulumi_gcp/gkeonprem/v_mware_cluster.py +2 -0
  34. pulumi_gcp/iap/__init__.py +5 -0
  35. pulumi_gcp/iap/_inputs.py +100 -0
  36. pulumi_gcp/iap/get_tunnel_dest_group_iam_policy.py +172 -0
  37. pulumi_gcp/iap/outputs.py +76 -0
  38. pulumi_gcp/iap/tunnel_dest_group.py +524 -0
  39. pulumi_gcp/iap/tunnel_dest_group_iam_binding.py +858 -0
  40. pulumi_gcp/iap/tunnel_dest_group_iam_member.py +858 -0
  41. pulumi_gcp/iap/tunnel_dest_group_iam_policy.py +760 -0
  42. pulumi_gcp/kms/__init__.py +1 -0
  43. pulumi_gcp/kms/_inputs.py +246 -0
  44. pulumi_gcp/kms/ekm_connection.py +610 -0
  45. pulumi_gcp/kms/outputs.py +242 -0
  46. pulumi_gcp/networksecurity/__init__.py +1 -0
  47. pulumi_gcp/networksecurity/firewall_endpoint_association.py +753 -0
  48. pulumi_gcp/notebooks/instance.py +8 -0
  49. pulumi_gcp/orgpolicy/policy.py +2 -2
  50. pulumi_gcp/provider.py +40 -0
  51. pulumi_gcp/pubsub/subscription.py +4 -4
  52. pulumi_gcp/securityposture/posture.py +2 -2
  53. pulumi_gcp/securityposture/posture_deployment.py +2 -2
  54. pulumi_gcp/storage/_inputs.py +32 -15
  55. pulumi_gcp/storage/outputs.py +29 -14
  56. pulumi_gcp/workstations/_inputs.py +134 -4
  57. pulumi_gcp/workstations/outputs.py +152 -4
  58. pulumi_gcp/workstations/workstation_config.py +54 -0
  59. {pulumi_gcp-7.15.0a1711031093.dist-info → pulumi_gcp-7.15.0a1711123513.dist-info}/METADATA +1 -1
  60. {pulumi_gcp-7.15.0a1711031093.dist-info → pulumi_gcp-7.15.0a1711123513.dist-info}/RECORD +62 -42
  61. {pulumi_gcp-7.15.0a1711031093.dist-info → pulumi_gcp-7.15.0a1711123513.dist-info}/WHEEL +0 -0
  62. {pulumi_gcp-7.15.0a1711031093.dist-info → pulumi_gcp-7.15.0a1711123513.dist-info}/top_level.txt +0 -0
@@ -1507,6 +1507,10 @@ class Instance(pulumi.CustomResource):
1507
1507
  "https://www.googleapis.com/auth/cloud-platform",
1508
1508
  "https://www.googleapis.com/auth/userinfo.email",
1509
1509
  ],
1510
+ tags=[
1511
+ "foo",
1512
+ "bar",
1513
+ ],
1510
1514
  disk_encryption="CMEK",
1511
1515
  kms_key="my-crypto-key",
1512
1516
  desired_state="ACTIVE")
@@ -1757,6 +1761,10 @@ class Instance(pulumi.CustomResource):
1757
1761
  "https://www.googleapis.com/auth/cloud-platform",
1758
1762
  "https://www.googleapis.com/auth/userinfo.email",
1759
1763
  ],
1764
+ tags=[
1765
+ "foo",
1766
+ "bar",
1767
+ ],
1760
1768
  disk_encryption="CMEK",
1761
1769
  kms_key="my-crypto-key",
1762
1770
  desired_state="ACTIVE")
@@ -306,7 +306,7 @@ class Policy(pulumi.CustomResource):
306
306
  import pulumi_gcp as gcp
307
307
 
308
308
  constraint = gcp.orgpolicy.CustomConstraint("constraint",
309
- name="custom.disableGkeAutoUpgrade_75223",
309
+ name="custom.disableGkeAutoUpgrade_41819",
310
310
  parent="organizations/123456789",
311
311
  display_name="Disable GKE auto upgrade",
312
312
  description="Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.",
@@ -468,7 +468,7 @@ class Policy(pulumi.CustomResource):
468
468
  import pulumi_gcp as gcp
469
469
 
470
470
  constraint = gcp.orgpolicy.CustomConstraint("constraint",
471
- name="custom.disableGkeAutoUpgrade_75223",
471
+ name="custom.disableGkeAutoUpgrade_41819",
472
472
  parent="organizations/123456789",
473
473
  display_name="Disable GKE auto upgrade",
474
474
  description="Only allow GKE NodePool resource to be created or updated if AutoUpgrade is not enabled where this custom constraint is enforced.",
pulumi_gcp/provider.py CHANGED
@@ -25,6 +25,7 @@ class ProviderArgs:
25
25
  apigee_custom_endpoint: Optional[pulumi.Input[str]] = None,
26
26
  apikeys_custom_endpoint: Optional[pulumi.Input[str]] = None,
27
27
  app_engine_custom_endpoint: Optional[pulumi.Input[str]] = None,
28
+ apphub_custom_endpoint: Optional[pulumi.Input[str]] = None,
28
29
  artifact_registry_custom_endpoint: Optional[pulumi.Input[str]] = None,
29
30
  assured_workloads_custom_endpoint: Optional[pulumi.Input[str]] = None,
30
31
  backup_dr_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -50,6 +51,7 @@ class ProviderArgs:
50
51
  cloud_functions_custom_endpoint: Optional[pulumi.Input[str]] = None,
51
52
  cloud_identity_custom_endpoint: Optional[pulumi.Input[str]] = None,
52
53
  cloud_ids_custom_endpoint: Optional[pulumi.Input[str]] = None,
54
+ cloud_quotas_custom_endpoint: Optional[pulumi.Input[str]] = None,
53
55
  cloud_resource_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
54
56
  cloud_run_custom_endpoint: Optional[pulumi.Input[str]] = None,
55
57
  cloud_run_v2_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -202,6 +204,8 @@ class ProviderArgs:
202
204
  pulumi.set(__self__, "apikeys_custom_endpoint", apikeys_custom_endpoint)
203
205
  if app_engine_custom_endpoint is not None:
204
206
  pulumi.set(__self__, "app_engine_custom_endpoint", app_engine_custom_endpoint)
207
+ if apphub_custom_endpoint is not None:
208
+ pulumi.set(__self__, "apphub_custom_endpoint", apphub_custom_endpoint)
205
209
  if artifact_registry_custom_endpoint is not None:
206
210
  pulumi.set(__self__, "artifact_registry_custom_endpoint", artifact_registry_custom_endpoint)
207
211
  if assured_workloads_custom_endpoint is not None:
@@ -252,6 +256,8 @@ class ProviderArgs:
252
256
  pulumi.set(__self__, "cloud_identity_custom_endpoint", cloud_identity_custom_endpoint)
253
257
  if cloud_ids_custom_endpoint is not None:
254
258
  pulumi.set(__self__, "cloud_ids_custom_endpoint", cloud_ids_custom_endpoint)
259
+ if cloud_quotas_custom_endpoint is not None:
260
+ pulumi.set(__self__, "cloud_quotas_custom_endpoint", cloud_quotas_custom_endpoint)
255
261
  if cloud_resource_manager_custom_endpoint is not None:
256
262
  pulumi.set(__self__, "cloud_resource_manager_custom_endpoint", cloud_resource_manager_custom_endpoint)
257
263
  if cloud_run_custom_endpoint is not None:
@@ -607,6 +613,15 @@ class ProviderArgs:
607
613
  def app_engine_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
608
614
  pulumi.set(self, "app_engine_custom_endpoint", value)
609
615
 
616
+ @property
617
+ @pulumi.getter(name="apphubCustomEndpoint")
618
+ def apphub_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
619
+ return pulumi.get(self, "apphub_custom_endpoint")
620
+
621
+ @apphub_custom_endpoint.setter
622
+ def apphub_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
623
+ pulumi.set(self, "apphub_custom_endpoint", value)
624
+
610
625
  @property
611
626
  @pulumi.getter(name="artifactRegistryCustomEndpoint")
612
627
  def artifact_registry_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
@@ -832,6 +847,15 @@ class ProviderArgs:
832
847
  def cloud_ids_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
833
848
  pulumi.set(self, "cloud_ids_custom_endpoint", value)
834
849
 
850
+ @property
851
+ @pulumi.getter(name="cloudQuotasCustomEndpoint")
852
+ def cloud_quotas_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
853
+ return pulumi.get(self, "cloud_quotas_custom_endpoint")
854
+
855
+ @cloud_quotas_custom_endpoint.setter
856
+ def cloud_quotas_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
857
+ pulumi.set(self, "cloud_quotas_custom_endpoint", value)
858
+
835
859
  @property
836
860
  @pulumi.getter(name="cloudResourceManagerCustomEndpoint")
837
861
  def cloud_resource_manager_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
@@ -2009,6 +2033,7 @@ class Provider(pulumi.ProviderResource):
2009
2033
  apigee_custom_endpoint: Optional[pulumi.Input[str]] = None,
2010
2034
  apikeys_custom_endpoint: Optional[pulumi.Input[str]] = None,
2011
2035
  app_engine_custom_endpoint: Optional[pulumi.Input[str]] = None,
2036
+ apphub_custom_endpoint: Optional[pulumi.Input[str]] = None,
2012
2037
  artifact_registry_custom_endpoint: Optional[pulumi.Input[str]] = None,
2013
2038
  assured_workloads_custom_endpoint: Optional[pulumi.Input[str]] = None,
2014
2039
  backup_dr_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2034,6 +2059,7 @@ class Provider(pulumi.ProviderResource):
2034
2059
  cloud_functions_custom_endpoint: Optional[pulumi.Input[str]] = None,
2035
2060
  cloud_identity_custom_endpoint: Optional[pulumi.Input[str]] = None,
2036
2061
  cloud_ids_custom_endpoint: Optional[pulumi.Input[str]] = None,
2062
+ cloud_quotas_custom_endpoint: Optional[pulumi.Input[str]] = None,
2037
2063
  cloud_resource_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2038
2064
  cloud_run_custom_endpoint: Optional[pulumi.Input[str]] = None,
2039
2065
  cloud_run_v2_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2210,6 +2236,7 @@ class Provider(pulumi.ProviderResource):
2210
2236
  apigee_custom_endpoint: Optional[pulumi.Input[str]] = None,
2211
2237
  apikeys_custom_endpoint: Optional[pulumi.Input[str]] = None,
2212
2238
  app_engine_custom_endpoint: Optional[pulumi.Input[str]] = None,
2239
+ apphub_custom_endpoint: Optional[pulumi.Input[str]] = None,
2213
2240
  artifact_registry_custom_endpoint: Optional[pulumi.Input[str]] = None,
2214
2241
  assured_workloads_custom_endpoint: Optional[pulumi.Input[str]] = None,
2215
2242
  backup_dr_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2235,6 +2262,7 @@ class Provider(pulumi.ProviderResource):
2235
2262
  cloud_functions_custom_endpoint: Optional[pulumi.Input[str]] = None,
2236
2263
  cloud_identity_custom_endpoint: Optional[pulumi.Input[str]] = None,
2237
2264
  cloud_ids_custom_endpoint: Optional[pulumi.Input[str]] = None,
2265
+ cloud_quotas_custom_endpoint: Optional[pulumi.Input[str]] = None,
2238
2266
  cloud_resource_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2239
2267
  cloud_run_custom_endpoint: Optional[pulumi.Input[str]] = None,
2240
2268
  cloud_run_v2_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2383,6 +2411,7 @@ class Provider(pulumi.ProviderResource):
2383
2411
  __props__.__dict__["apigee_custom_endpoint"] = apigee_custom_endpoint
2384
2412
  __props__.__dict__["apikeys_custom_endpoint"] = apikeys_custom_endpoint
2385
2413
  __props__.__dict__["app_engine_custom_endpoint"] = app_engine_custom_endpoint
2414
+ __props__.__dict__["apphub_custom_endpoint"] = apphub_custom_endpoint
2386
2415
  __props__.__dict__["artifact_registry_custom_endpoint"] = artifact_registry_custom_endpoint
2387
2416
  __props__.__dict__["assured_workloads_custom_endpoint"] = assured_workloads_custom_endpoint
2388
2417
  __props__.__dict__["backup_dr_custom_endpoint"] = backup_dr_custom_endpoint
@@ -2408,6 +2437,7 @@ class Provider(pulumi.ProviderResource):
2408
2437
  __props__.__dict__["cloud_functions_custom_endpoint"] = cloud_functions_custom_endpoint
2409
2438
  __props__.__dict__["cloud_identity_custom_endpoint"] = cloud_identity_custom_endpoint
2410
2439
  __props__.__dict__["cloud_ids_custom_endpoint"] = cloud_ids_custom_endpoint
2440
+ __props__.__dict__["cloud_quotas_custom_endpoint"] = cloud_quotas_custom_endpoint
2411
2441
  __props__.__dict__["cloud_resource_manager_custom_endpoint"] = cloud_resource_manager_custom_endpoint
2412
2442
  __props__.__dict__["cloud_run_custom_endpoint"] = cloud_run_custom_endpoint
2413
2443
  __props__.__dict__["cloud_run_v2_custom_endpoint"] = cloud_run_v2_custom_endpoint
@@ -2594,6 +2624,11 @@ class Provider(pulumi.ProviderResource):
2594
2624
  def app_engine_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
2595
2625
  return pulumi.get(self, "app_engine_custom_endpoint")
2596
2626
 
2627
+ @property
2628
+ @pulumi.getter(name="apphubCustomEndpoint")
2629
+ def apphub_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
2630
+ return pulumi.get(self, "apphub_custom_endpoint")
2631
+
2597
2632
  @property
2598
2633
  @pulumi.getter(name="artifactRegistryCustomEndpoint")
2599
2634
  def artifact_registry_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
@@ -2714,6 +2749,11 @@ class Provider(pulumi.ProviderResource):
2714
2749
  def cloud_ids_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
2715
2750
  return pulumi.get(self, "cloud_ids_custom_endpoint")
2716
2751
 
2752
+ @property
2753
+ @pulumi.getter(name="cloudQuotasCustomEndpoint")
2754
+ def cloud_quotas_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
2755
+ return pulumi.get(self, "cloud_quotas_custom_endpoint")
2756
+
2717
2757
  @property
2718
2758
  @pulumi.getter(name="cloudResourceManagerCustomEndpoint")
2719
2759
  def cloud_resource_manager_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
@@ -1051,7 +1051,7 @@ class Subscription(pulumi.CustomResource):
1051
1051
  cloud_storage_config=gcp.pubsub.SubscriptionCloudStorageConfigArgs(
1052
1052
  bucket=example.name,
1053
1053
  filename_prefix="pre-",
1054
- filename_suffix="-_41819",
1054
+ filename_suffix="-_75092",
1055
1055
  max_bytes=1000,
1056
1056
  max_duration="300s",
1057
1057
  ))
@@ -1080,7 +1080,7 @@ class Subscription(pulumi.CustomResource):
1080
1080
  cloud_storage_config=gcp.pubsub.SubscriptionCloudStorageConfigArgs(
1081
1081
  bucket=example.name,
1082
1082
  filename_prefix="pre-",
1083
- filename_suffix="-_75092",
1083
+ filename_suffix="-_2605",
1084
1084
  max_bytes=1000,
1085
1085
  max_duration="300s",
1086
1086
  avro_config=gcp.pubsub.SubscriptionCloudStorageConfigAvroConfigArgs(
@@ -1392,7 +1392,7 @@ class Subscription(pulumi.CustomResource):
1392
1392
  cloud_storage_config=gcp.pubsub.SubscriptionCloudStorageConfigArgs(
1393
1393
  bucket=example.name,
1394
1394
  filename_prefix="pre-",
1395
- filename_suffix="-_41819",
1395
+ filename_suffix="-_75092",
1396
1396
  max_bytes=1000,
1397
1397
  max_duration="300s",
1398
1398
  ))
@@ -1421,7 +1421,7 @@ class Subscription(pulumi.CustomResource):
1421
1421
  cloud_storage_config=gcp.pubsub.SubscriptionCloudStorageConfigArgs(
1422
1422
  bucket=example.name,
1423
1423
  filename_prefix="pre-",
1424
- filename_suffix="-_75092",
1424
+ filename_suffix="-_2605",
1425
1425
  max_bytes=1000,
1426
1426
  max_duration="300s",
1427
1427
  avro_config=gcp.pubsub.SubscriptionCloudStorageConfigAvroConfigArgs(
@@ -357,7 +357,7 @@ class Posture(pulumi.CustomResource):
357
357
  import pulumi_gcp as gcp
358
358
 
359
359
  posture1 = gcp.securityposture.Posture("posture1",
360
- posture_id="posture_1",
360
+ posture_id="posture_example",
361
361
  parent="organizations/123456789",
362
362
  location="global",
363
363
  state="ACTIVE",
@@ -511,7 +511,7 @@ class Posture(pulumi.CustomResource):
511
511
  import pulumi_gcp as gcp
512
512
 
513
513
  posture1 = gcp.securityposture.Posture("posture1",
514
- posture_id="posture_1",
514
+ posture_id="posture_example",
515
515
  parent="organizations/123456789",
516
516
  location="global",
517
517
  state="ACTIVE",
@@ -467,7 +467,7 @@ class PostureDeployment(pulumi.CustomResource):
467
467
  import pulumi
468
468
  import pulumi_gcp as gcp
469
469
 
470
- posture1 = gcp.securityposture.Posture("posture1",
470
+ posture1 = gcp.securityposture.Posture("posture_1",
471
471
  posture_id="posture_1",
472
472
  parent="organizations/123456789",
473
473
  location="global",
@@ -555,7 +555,7 @@ class PostureDeployment(pulumi.CustomResource):
555
555
  import pulumi
556
556
  import pulumi_gcp as gcp
557
557
 
558
- posture1 = gcp.securityposture.Posture("posture1",
558
+ posture1 = gcp.securityposture.Posture("posture_1",
559
559
  posture_id="posture_1",
560
560
  parent="organizations/123456789",
561
561
  location="global",
@@ -1944,34 +1944,27 @@ class TransferJobTransferSpecAwsS3DataSourceAwsAccessKeyArgs:
1944
1944
  @pulumi.input_type
1945
1945
  class TransferJobTransferSpecAzureBlobStorageDataSourceArgs:
1946
1946
  def __init__(__self__, *,
1947
- azure_credentials: pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs'],
1948
1947
  container: pulumi.Input[str],
1949
1948
  storage_account: pulumi.Input[str],
1949
+ azure_credentials: Optional[pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs']] = None,
1950
+ credentials_secret: Optional[pulumi.Input[str]] = None,
1950
1951
  path: Optional[pulumi.Input[str]] = None):
1951
1952
  """
1952
- :param pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs'] azure_credentials: Credentials used to authenticate API requests to Azure block.
1953
1953
  :param pulumi.Input[str] container: The container to transfer from the Azure Storage account.`
1954
1954
  :param pulumi.Input[str] storage_account: The name of the Azure Storage account.
1955
+ :param pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs'] azure_credentials: Credentials used to authenticate API requests to Azure block.
1956
+ :param pulumi.Input[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.`,
1955
1957
  :param pulumi.Input[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 '/'.
1956
1958
  """
1957
- pulumi.set(__self__, "azure_credentials", azure_credentials)
1958
1959
  pulumi.set(__self__, "container", container)
1959
1960
  pulumi.set(__self__, "storage_account", storage_account)
1961
+ if azure_credentials is not None:
1962
+ pulumi.set(__self__, "azure_credentials", azure_credentials)
1963
+ if credentials_secret is not None:
1964
+ pulumi.set(__self__, "credentials_secret", credentials_secret)
1960
1965
  if path is not None:
1961
1966
  pulumi.set(__self__, "path", path)
1962
1967
 
1963
- @property
1964
- @pulumi.getter(name="azureCredentials")
1965
- def azure_credentials(self) -> pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs']:
1966
- """
1967
- Credentials used to authenticate API requests to Azure block.
1968
- """
1969
- return pulumi.get(self, "azure_credentials")
1970
-
1971
- @azure_credentials.setter
1972
- def azure_credentials(self, value: pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs']):
1973
- pulumi.set(self, "azure_credentials", value)
1974
-
1975
1968
  @property
1976
1969
  @pulumi.getter
1977
1970
  def container(self) -> pulumi.Input[str]:
@@ -1996,6 +1989,30 @@ class TransferJobTransferSpecAzureBlobStorageDataSourceArgs:
1996
1989
  def storage_account(self, value: pulumi.Input[str]):
1997
1990
  pulumi.set(self, "storage_account", value)
1998
1991
 
1992
+ @property
1993
+ @pulumi.getter(name="azureCredentials")
1994
+ def azure_credentials(self) -> Optional[pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs']]:
1995
+ """
1996
+ Credentials used to authenticate API requests to Azure block.
1997
+ """
1998
+ return pulumi.get(self, "azure_credentials")
1999
+
2000
+ @azure_credentials.setter
2001
+ def azure_credentials(self, value: Optional[pulumi.Input['TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs']]):
2002
+ pulumi.set(self, "azure_credentials", value)
2003
+
2004
+ @property
2005
+ @pulumi.getter(name="credentialsSecret")
2006
+ def credentials_secret(self) -> Optional[pulumi.Input[str]]:
2007
+ """
2008
+ 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.`,
2009
+ """
2010
+ return pulumi.get(self, "credentials_secret")
2011
+
2012
+ @credentials_secret.setter
2013
+ def credentials_secret(self, value: Optional[pulumi.Input[str]]):
2014
+ pulumi.set(self, "credentials_secret", value)
2015
+
1999
2016
  @property
2000
2017
  @pulumi.getter
2001
2018
  def path(self) -> Optional[pulumi.Input[str]]:
@@ -2042,10 +2042,12 @@ class TransferJobTransferSpecAzureBlobStorageDataSource(dict):
2042
2042
  @staticmethod
2043
2043
  def __key_warning(key: str):
2044
2044
  suggest = None
2045
- if key == "azureCredentials":
2046
- suggest = "azure_credentials"
2047
- elif key == "storageAccount":
2045
+ if key == "storageAccount":
2048
2046
  suggest = "storage_account"
2047
+ elif key == "azureCredentials":
2048
+ suggest = "azure_credentials"
2049
+ elif key == "credentialsSecret":
2050
+ suggest = "credentials_secret"
2049
2051
 
2050
2052
  if suggest:
2051
2053
  pulumi.log.warn(f"Key '{key}' not found in TransferJobTransferSpecAzureBlobStorageDataSource. Access the value via the '{suggest}' property getter instead.")
@@ -2059,30 +2061,27 @@ class TransferJobTransferSpecAzureBlobStorageDataSource(dict):
2059
2061
  return super().get(key, default)
2060
2062
 
2061
2063
  def __init__(__self__, *,
2062
- azure_credentials: 'outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials',
2063
2064
  container: str,
2064
2065
  storage_account: str,
2066
+ azure_credentials: Optional['outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials'] = None,
2067
+ credentials_secret: Optional[str] = None,
2065
2068
  path: Optional[str] = None):
2066
2069
  """
2067
- :param 'TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs' azure_credentials: Credentials used to authenticate API requests to Azure block.
2068
2070
  :param str container: The container to transfer from the Azure Storage account.`
2069
2071
  :param str storage_account: The name of the Azure Storage account.
2072
+ :param 'TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentialsArgs' azure_credentials: Credentials used to authenticate API requests to Azure block.
2073
+ :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
2074
  :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
2075
  """
2072
- pulumi.set(__self__, "azure_credentials", azure_credentials)
2073
2076
  pulumi.set(__self__, "container", container)
2074
2077
  pulumi.set(__self__, "storage_account", storage_account)
2078
+ if azure_credentials is not None:
2079
+ pulumi.set(__self__, "azure_credentials", azure_credentials)
2080
+ if credentials_secret is not None:
2081
+ pulumi.set(__self__, "credentials_secret", credentials_secret)
2075
2082
  if path is not None:
2076
2083
  pulumi.set(__self__, "path", path)
2077
2084
 
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
2085
  @property
2087
2086
  @pulumi.getter
2088
2087
  def container(self) -> str:
@@ -2099,6 +2098,22 @@ class TransferJobTransferSpecAzureBlobStorageDataSource(dict):
2099
2098
  """
2100
2099
  return pulumi.get(self, "storage_account")
2101
2100
 
2101
+ @property
2102
+ @pulumi.getter(name="azureCredentials")
2103
+ def azure_credentials(self) -> Optional['outputs.TransferJobTransferSpecAzureBlobStorageDataSourceAzureCredentials']:
2104
+ """
2105
+ Credentials used to authenticate API requests to Azure block.
2106
+ """
2107
+ return pulumi.get(self, "azure_credentials")
2108
+
2109
+ @property
2110
+ @pulumi.getter(name="credentialsSecret")
2111
+ def credentials_secret(self) -> Optional[str]:
2112
+ """
2113
+ 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.`,
2114
+ """
2115
+ return pulumi.get(self, "credentials_secret")
2116
+
2102
2117
  @property
2103
2118
  @pulumi.getter
2104
2119
  def path(self) -> Optional[str]:
@@ -16,6 +16,8 @@ __all__ = [
16
16
  'WorkstationConfigConditionArgs',
17
17
  'WorkstationConfigContainerArgs',
18
18
  'WorkstationConfigEncryptionKeyArgs',
19
+ 'WorkstationConfigEphemeralDirectoryArgs',
20
+ 'WorkstationConfigEphemeralDirectoryGcePdArgs',
19
21
  'WorkstationConfigHostArgs',
20
22
  'WorkstationConfigHostGceInstanceArgs',
21
23
  'WorkstationConfigHostGceInstanceAcceleratorArgs',
@@ -400,6 +402,128 @@ class WorkstationConfigEncryptionKeyArgs:
400
402
  pulumi.set(self, "kms_key_service_account", value)
401
403
 
402
404
 
405
+ @pulumi.input_type
406
+ class WorkstationConfigEphemeralDirectoryArgs:
407
+ def __init__(__self__, *,
408
+ gce_pd: Optional[pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs']] = None,
409
+ mount_path: Optional[pulumi.Input[str]] = None):
410
+ """
411
+ :param pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs'] gce_pd: An EphemeralDirectory backed by a Compute Engine persistent disk.
412
+ Structure is documented below.
413
+ :param pulumi.Input[str] mount_path: Location of this directory in the running workstation.
414
+ """
415
+ if gce_pd is not None:
416
+ pulumi.set(__self__, "gce_pd", gce_pd)
417
+ if mount_path is not None:
418
+ pulumi.set(__self__, "mount_path", mount_path)
419
+
420
+ @property
421
+ @pulumi.getter(name="gcePd")
422
+ def gce_pd(self) -> Optional[pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs']]:
423
+ """
424
+ An EphemeralDirectory backed by a Compute Engine persistent disk.
425
+ Structure is documented below.
426
+ """
427
+ return pulumi.get(self, "gce_pd")
428
+
429
+ @gce_pd.setter
430
+ def gce_pd(self, value: Optional[pulumi.Input['WorkstationConfigEphemeralDirectoryGcePdArgs']]):
431
+ pulumi.set(self, "gce_pd", value)
432
+
433
+ @property
434
+ @pulumi.getter(name="mountPath")
435
+ def mount_path(self) -> Optional[pulumi.Input[str]]:
436
+ """
437
+ Location of this directory in the running workstation.
438
+ """
439
+ return pulumi.get(self, "mount_path")
440
+
441
+ @mount_path.setter
442
+ def mount_path(self, value: Optional[pulumi.Input[str]]):
443
+ pulumi.set(self, "mount_path", value)
444
+
445
+
446
+ @pulumi.input_type
447
+ class WorkstationConfigEphemeralDirectoryGcePdArgs:
448
+ def __init__(__self__, *,
449
+ disk_type: Optional[pulumi.Input[str]] = None,
450
+ read_only: Optional[pulumi.Input[bool]] = None,
451
+ source_image: Optional[pulumi.Input[str]] = None,
452
+ source_snapshot: Optional[pulumi.Input[str]] = None):
453
+ """
454
+ :param pulumi.Input[str] disk_type: Type of the disk to use. Defaults to `"pd-standard"`.
455
+ :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.
456
+ :param pulumi.Input[str] source_image: Name of the disk image to use as the source for the disk.
457
+ Must be empty `sourceSnapshot` is set.
458
+ Updating `sourceImage` will update content in the ephemeral directory after the workstation is restarted.
459
+ :param pulumi.Input[str] source_snapshot: Name of the snapshot to use as the source for the disk.
460
+ Must be empty if `sourceImage` is set.
461
+ Must be empty if `read_only` is false.
462
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
463
+ """
464
+ if disk_type is not None:
465
+ pulumi.set(__self__, "disk_type", disk_type)
466
+ if read_only is not None:
467
+ pulumi.set(__self__, "read_only", read_only)
468
+ if source_image is not None:
469
+ pulumi.set(__self__, "source_image", source_image)
470
+ if source_snapshot is not None:
471
+ pulumi.set(__self__, "source_snapshot", source_snapshot)
472
+
473
+ @property
474
+ @pulumi.getter(name="diskType")
475
+ def disk_type(self) -> Optional[pulumi.Input[str]]:
476
+ """
477
+ Type of the disk to use. Defaults to `"pd-standard"`.
478
+ """
479
+ return pulumi.get(self, "disk_type")
480
+
481
+ @disk_type.setter
482
+ def disk_type(self, value: Optional[pulumi.Input[str]]):
483
+ pulumi.set(self, "disk_type", value)
484
+
485
+ @property
486
+ @pulumi.getter(name="readOnly")
487
+ def read_only(self) -> Optional[pulumi.Input[bool]]:
488
+ """
489
+ Whether the disk is read only. If true, the disk may be shared by multiple VMs and `sourceSnapshot` must be set.
490
+ """
491
+ return pulumi.get(self, "read_only")
492
+
493
+ @read_only.setter
494
+ def read_only(self, value: Optional[pulumi.Input[bool]]):
495
+ pulumi.set(self, "read_only", value)
496
+
497
+ @property
498
+ @pulumi.getter(name="sourceImage")
499
+ def source_image(self) -> Optional[pulumi.Input[str]]:
500
+ """
501
+ Name of the disk image to use as the source for the disk.
502
+ Must be empty `sourceSnapshot` is set.
503
+ Updating `sourceImage` will update content in the ephemeral directory after the workstation is restarted.
504
+ """
505
+ return pulumi.get(self, "source_image")
506
+
507
+ @source_image.setter
508
+ def source_image(self, value: Optional[pulumi.Input[str]]):
509
+ pulumi.set(self, "source_image", value)
510
+
511
+ @property
512
+ @pulumi.getter(name="sourceSnapshot")
513
+ def source_snapshot(self) -> Optional[pulumi.Input[str]]:
514
+ """
515
+ Name of the snapshot to use as the source for the disk.
516
+ Must be empty if `sourceImage` is set.
517
+ Must be empty if `read_only` is false.
518
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
519
+ """
520
+ return pulumi.get(self, "source_snapshot")
521
+
522
+ @source_snapshot.setter
523
+ def source_snapshot(self, value: Optional[pulumi.Input[str]]):
524
+ pulumi.set(self, "source_snapshot", value)
525
+
526
+
403
527
  @pulumi.input_type
404
528
  class WorkstationConfigHostArgs:
405
529
  def __init__(__self__, *,
@@ -875,13 +999,16 @@ class WorkstationConfigPersistentDirectoryGcePdArgs:
875
999
  size_gb: Optional[pulumi.Input[int]] = None,
876
1000
  source_snapshot: Optional[pulumi.Input[str]] = None):
877
1001
  """
878
- :param pulumi.Input[str] disk_type: The type of the persistent disk for the home directory. Defaults to `pd-standard`.
1002
+ :param pulumi.Input[str] disk_type: Type of the disk to use. Defaults to `"pd-standard"`.
879
1003
  :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
1004
  :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
1005
  Possible values are: `DELETE`, `RETAIN`.
882
1006
  :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
1007
  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.
1008
+ :param pulumi.Input[str] source_snapshot: Name of the snapshot to use as the source for the disk.
1009
+ Must be empty if `sourceImage` is set.
1010
+ Must be empty if `read_only` is false.
1011
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
885
1012
  """
886
1013
  if disk_type is not None:
887
1014
  pulumi.set(__self__, "disk_type", disk_type)
@@ -898,7 +1025,7 @@ class WorkstationConfigPersistentDirectoryGcePdArgs:
898
1025
  @pulumi.getter(name="diskType")
899
1026
  def disk_type(self) -> Optional[pulumi.Input[str]]:
900
1027
  """
901
- The type of the persistent disk for the home directory. Defaults to `pd-standard`.
1028
+ Type of the disk to use. Defaults to `"pd-standard"`.
902
1029
  """
903
1030
  return pulumi.get(self, "disk_type")
904
1031
 
@@ -948,7 +1075,10 @@ class WorkstationConfigPersistentDirectoryGcePdArgs:
948
1075
  @pulumi.getter(name="sourceSnapshot")
949
1076
  def source_snapshot(self) -> Optional[pulumi.Input[str]]:
950
1077
  """
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.
1078
+ Name of the snapshot to use as the source for the disk.
1079
+ Must be empty if `sourceImage` is set.
1080
+ Must be empty if `read_only` is false.
1081
+ Updating `source_snapshot` will update content in the ephemeral directory after the workstation is restarted.
952
1082
  """
953
1083
  return pulumi.get(self, "source_snapshot")
954
1084