pulumi-gcp 7.27.0a1718103841__py3-none-any.whl → 7.27.0a1718279079__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 (81) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/appengine/_inputs.py +40 -0
  3. pulumi_gcp/appengine/flexible_app_version.py +47 -0
  4. pulumi_gcp/appengine/outputs.py +51 -0
  5. pulumi_gcp/bigtable/instance.py +47 -0
  6. pulumi_gcp/clouddeploy/_inputs.py +16 -0
  7. pulumi_gcp/clouddeploy/outputs.py +12 -0
  8. pulumi_gcp/compute/__init__.py +2 -0
  9. pulumi_gcp/compute/_inputs.py +84 -0
  10. pulumi_gcp/compute/backend_service.py +54 -0
  11. pulumi_gcp/compute/disk.py +68 -0
  12. pulumi_gcp/compute/get_backend_service.py +11 -1
  13. pulumi_gcp/compute/get_disk.py +11 -1
  14. pulumi_gcp/compute/get_instance.py +11 -1
  15. pulumi_gcp/compute/get_instance_group_manager.py +31 -1
  16. pulumi_gcp/compute/get_instance_template.py +11 -1
  17. pulumi_gcp/compute/get_region_instance_template.py +11 -1
  18. pulumi_gcp/compute/get_security_policy.py +214 -0
  19. pulumi_gcp/compute/instance.py +47 -0
  20. pulumi_gcp/compute/instance_from_machine_image.py +47 -0
  21. pulumi_gcp/compute/instance_from_template.py +47 -0
  22. pulumi_gcp/compute/instance_group_manager.py +185 -0
  23. pulumi_gcp/compute/instance_template.py +47 -0
  24. pulumi_gcp/compute/outputs.py +1039 -0
  25. pulumi_gcp/compute/project_cloud_armor_tier.py +336 -0
  26. pulumi_gcp/compute/region_instance_group_manager.py +185 -0
  27. pulumi_gcp/compute/region_instance_template.py +47 -0
  28. pulumi_gcp/config/__init__.pyi +2 -0
  29. pulumi_gcp/config/vars.py +4 -0
  30. pulumi_gcp/container/_inputs.py +33 -4
  31. pulumi_gcp/container/cluster.py +61 -0
  32. pulumi_gcp/container/get_cluster.py +11 -1
  33. pulumi_gcp/container/outputs.py +48 -4
  34. pulumi_gcp/dataloss/_inputs.py +185 -19
  35. pulumi_gcp/dataloss/outputs.py +206 -17
  36. pulumi_gcp/dataloss/prevention_inspect_template.py +54 -0
  37. pulumi_gcp/gkebackup/_inputs.py +282 -7
  38. pulumi_gcp/gkebackup/backup_plan.py +100 -0
  39. pulumi_gcp/gkebackup/outputs.py +312 -7
  40. pulumi_gcp/gkebackup/restore_plan.py +326 -0
  41. pulumi_gcp/gkebackup/restore_plan_iam_binding.py +326 -0
  42. pulumi_gcp/gkebackup/restore_plan_iam_member.py +326 -0
  43. pulumi_gcp/gkebackup/restore_plan_iam_policy.py +326 -0
  44. pulumi_gcp/healthcare/_inputs.py +17 -1
  45. pulumi_gcp/healthcare/dicom_store.py +2 -0
  46. pulumi_gcp/healthcare/fhir_store.py +44 -60
  47. pulumi_gcp/healthcare/outputs.py +15 -1
  48. pulumi_gcp/integrationconnectors/endpoint_attachment.py +47 -0
  49. pulumi_gcp/kms/crypto_key.py +14 -7
  50. pulumi_gcp/netapp/_inputs.py +58 -0
  51. pulumi_gcp/netapp/outputs.py +67 -0
  52. pulumi_gcp/netapp/volume.py +54 -0
  53. pulumi_gcp/networkservices/__init__.py +1 -0
  54. pulumi_gcp/networkservices/_inputs.py +47 -0
  55. pulumi_gcp/networkservices/outputs.py +56 -0
  56. pulumi_gcp/networkservices/service_lb_policies.py +782 -0
  57. pulumi_gcp/provider.py +20 -0
  58. pulumi_gcp/pulumi-plugin.json +1 -1
  59. pulumi_gcp/redis/_inputs.py +44 -0
  60. pulumi_gcp/redis/cluster.py +128 -3
  61. pulumi_gcp/redis/outputs.py +36 -0
  62. pulumi_gcp/secretmanager/_inputs.py +20 -0
  63. pulumi_gcp/secretmanager/outputs.py +20 -0
  64. pulumi_gcp/secretmanager/secret_iam_binding.py +244 -0
  65. pulumi_gcp/secretmanager/secret_iam_member.py +244 -0
  66. pulumi_gcp/secretmanager/secret_iam_policy.py +224 -0
  67. pulumi_gcp/securitycenter/__init__.py +1 -0
  68. pulumi_gcp/securitycenter/management_organization_event_threat_detection_custom_module.py +568 -0
  69. pulumi_gcp/spanner/__init__.py +1 -0
  70. pulumi_gcp/spanner/_inputs.py +68 -0
  71. pulumi_gcp/spanner/instance_config.py +569 -0
  72. pulumi_gcp/spanner/outputs.py +73 -0
  73. pulumi_gcp/sql/_inputs.py +8 -2
  74. pulumi_gcp/sql/outputs.py +9 -6
  75. pulumi_gcp/workstations/_inputs.py +51 -1
  76. pulumi_gcp/workstations/outputs.py +46 -2
  77. pulumi_gcp/workstations/workstation_config.py +10 -4
  78. {pulumi_gcp-7.27.0a1718103841.dist-info → pulumi_gcp-7.27.0a1718279079.dist-info}/METADATA +1 -1
  79. {pulumi_gcp-7.27.0a1718103841.dist-info → pulumi_gcp-7.27.0a1718279079.dist-info}/RECORD +81 -76
  80. {pulumi_gcp-7.27.0a1718103841.dist-info → pulumi_gcp-7.27.0a1718279079.dist-info}/WHEEL +0 -0
  81. {pulumi_gcp-7.27.0a1718103841.dist-info → pulumi_gcp-7.27.0a1718279079.dist-info}/top_level.txt +0 -0
pulumi_gcp/provider.py CHANGED
@@ -158,6 +158,7 @@ class ProviderArgs:
158
158
  secret_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
159
159
  secure_source_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
160
160
  security_center_custom_endpoint: Optional[pulumi.Input[str]] = None,
161
+ security_center_management_custom_endpoint: Optional[pulumi.Input[str]] = None,
161
162
  security_scanner_custom_endpoint: Optional[pulumi.Input[str]] = None,
162
163
  securityposture_custom_endpoint: Optional[pulumi.Input[str]] = None,
163
164
  service_directory_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -477,6 +478,8 @@ class ProviderArgs:
477
478
  pulumi.set(__self__, "secure_source_manager_custom_endpoint", secure_source_manager_custom_endpoint)
478
479
  if security_center_custom_endpoint is not None:
479
480
  pulumi.set(__self__, "security_center_custom_endpoint", security_center_custom_endpoint)
481
+ if security_center_management_custom_endpoint is not None:
482
+ pulumi.set(__self__, "security_center_management_custom_endpoint", security_center_management_custom_endpoint)
480
483
  if security_scanner_custom_endpoint is not None:
481
484
  pulumi.set(__self__, "security_scanner_custom_endpoint", security_scanner_custom_endpoint)
482
485
  if securityposture_custom_endpoint is not None:
@@ -1819,6 +1822,15 @@ class ProviderArgs:
1819
1822
  def security_center_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
1820
1823
  pulumi.set(self, "security_center_custom_endpoint", value)
1821
1824
 
1825
+ @property
1826
+ @pulumi.getter(name="securityCenterManagementCustomEndpoint")
1827
+ def security_center_management_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
1828
+ return pulumi.get(self, "security_center_management_custom_endpoint")
1829
+
1830
+ @security_center_management_custom_endpoint.setter
1831
+ def security_center_management_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
1832
+ pulumi.set(self, "security_center_management_custom_endpoint", value)
1833
+
1822
1834
  @property
1823
1835
  @pulumi.getter(name="securityScannerCustomEndpoint")
1824
1836
  def security_scanner_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
@@ -2202,6 +2214,7 @@ class Provider(pulumi.ProviderResource):
2202
2214
  secret_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2203
2215
  secure_source_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2204
2216
  security_center_custom_endpoint: Optional[pulumi.Input[str]] = None,
2217
+ security_center_management_custom_endpoint: Optional[pulumi.Input[str]] = None,
2205
2218
  security_scanner_custom_endpoint: Optional[pulumi.Input[str]] = None,
2206
2219
  securityposture_custom_endpoint: Optional[pulumi.Input[str]] = None,
2207
2220
  service_directory_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2408,6 +2421,7 @@ class Provider(pulumi.ProviderResource):
2408
2421
  secret_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2409
2422
  secure_source_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2410
2423
  security_center_custom_endpoint: Optional[pulumi.Input[str]] = None,
2424
+ security_center_management_custom_endpoint: Optional[pulumi.Input[str]] = None,
2411
2425
  security_scanner_custom_endpoint: Optional[pulumi.Input[str]] = None,
2412
2426
  securityposture_custom_endpoint: Optional[pulumi.Input[str]] = None,
2413
2427
  service_directory_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2590,6 +2604,7 @@ class Provider(pulumi.ProviderResource):
2590
2604
  __props__.__dict__["secret_manager_custom_endpoint"] = secret_manager_custom_endpoint
2591
2605
  __props__.__dict__["secure_source_manager_custom_endpoint"] = secure_source_manager_custom_endpoint
2592
2606
  __props__.__dict__["security_center_custom_endpoint"] = security_center_custom_endpoint
2607
+ __props__.__dict__["security_center_management_custom_endpoint"] = security_center_management_custom_endpoint
2593
2608
  __props__.__dict__["security_scanner_custom_endpoint"] = security_scanner_custom_endpoint
2594
2609
  __props__.__dict__["securityposture_custom_endpoint"] = securityposture_custom_endpoint
2595
2610
  __props__.__dict__["service_directory_custom_endpoint"] = service_directory_custom_endpoint
@@ -3311,6 +3326,11 @@ class Provider(pulumi.ProviderResource):
3311
3326
  def security_center_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
3312
3327
  return pulumi.get(self, "security_center_custom_endpoint")
3313
3328
 
3329
+ @property
3330
+ @pulumi.getter(name="securityCenterManagementCustomEndpoint")
3331
+ def security_center_management_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
3332
+ return pulumi.get(self, "security_center_management_custom_endpoint")
3333
+
3314
3334
  @property
3315
3335
  @pulumi.getter(name="securityScannerCustomEndpoint")
3316
3336
  def security_scanner_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "resource": true,
3
3
  "name": "gcp",
4
- "version": "7.27.0-alpha.1718103841"
4
+ "version": "7.27.0-alpha.1718279079"
5
5
  }
@@ -16,6 +16,7 @@ __all__ = [
16
16
  'ClusterPscConnectionArgs',
17
17
  'ClusterStateInfoArgs',
18
18
  'ClusterStateInfoUpdateInfoArgs',
19
+ 'ClusterZoneDistributionConfigArgs',
19
20
  'InstanceMaintenancePolicyArgs',
20
21
  'InstanceMaintenancePolicyWeeklyMaintenanceWindowArgs',
21
22
  'InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTimeArgs',
@@ -288,6 +289,49 @@ class ClusterStateInfoUpdateInfoArgs:
288
289
  pulumi.set(self, "target_shard_count", value)
289
290
 
290
291
 
292
+ @pulumi.input_type
293
+ class ClusterZoneDistributionConfigArgs:
294
+ def __init__(__self__, *,
295
+ mode: Optional[pulumi.Input[str]] = None,
296
+ zone: Optional[pulumi.Input[str]] = None):
297
+ """
298
+ :param pulumi.Input[str] mode: Immutable. The mode for zone distribution for Memorystore Redis cluster.
299
+ If not provided, MULTI_ZONE will be used as default
300
+ Possible values are: `MULTI_ZONE`, `SINGLE_ZONE`.
301
+ :param pulumi.Input[str] zone: Immutable. The zone for single zone Memorystore Redis cluster.
302
+ """
303
+ if mode is not None:
304
+ pulumi.set(__self__, "mode", mode)
305
+ if zone is not None:
306
+ pulumi.set(__self__, "zone", zone)
307
+
308
+ @property
309
+ @pulumi.getter
310
+ def mode(self) -> Optional[pulumi.Input[str]]:
311
+ """
312
+ Immutable. The mode for zone distribution for Memorystore Redis cluster.
313
+ If not provided, MULTI_ZONE will be used as default
314
+ Possible values are: `MULTI_ZONE`, `SINGLE_ZONE`.
315
+ """
316
+ return pulumi.get(self, "mode")
317
+
318
+ @mode.setter
319
+ def mode(self, value: Optional[pulumi.Input[str]]):
320
+ pulumi.set(self, "mode", value)
321
+
322
+ @property
323
+ @pulumi.getter
324
+ def zone(self) -> Optional[pulumi.Input[str]]:
325
+ """
326
+ Immutable. The zone for single zone Memorystore Redis cluster.
327
+ """
328
+ return pulumi.get(self, "zone")
329
+
330
+ @zone.setter
331
+ def zone(self, value: Optional[pulumi.Input[str]]):
332
+ pulumi.set(self, "zone", value)
333
+
334
+
291
335
  @pulumi.input_type
292
336
  class InstanceMaintenancePolicyArgs:
293
337
  def __init__(__self__, *,
@@ -25,7 +25,8 @@ class ClusterArgs:
25
25
  redis_configs: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
26
26
  region: Optional[pulumi.Input[str]] = None,
27
27
  replica_count: Optional[pulumi.Input[int]] = None,
28
- transit_encryption_mode: Optional[pulumi.Input[str]] = None):
28
+ transit_encryption_mode: Optional[pulumi.Input[str]] = None,
29
+ zone_distribution_config: Optional[pulumi.Input['ClusterZoneDistributionConfigArgs']] = None):
29
30
  """
30
31
  The set of arguments for constructing a Cluster resource.
31
32
  :param pulumi.Input[Sequence[pulumi.Input['ClusterPscConfigArgs']]] psc_configs: Required. Each PscConfig configures the consumer network where two
@@ -48,6 +49,7 @@ class ClusterArgs:
48
49
  :param pulumi.Input[str] transit_encryption_mode: Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster.
49
50
  Default value: "TRANSIT_ENCRYPTION_MODE_DISABLED" Possible values: ["TRANSIT_ENCRYPTION_MODE_UNSPECIFIED",
50
51
  "TRANSIT_ENCRYPTION_MODE_DISABLED", "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"]
52
+ :param pulumi.Input['ClusterZoneDistributionConfigArgs'] zone_distribution_config: Immutable. Zone distribution config for Memorystore Redis cluster.
51
53
  """
52
54
  pulumi.set(__self__, "psc_configs", psc_configs)
53
55
  pulumi.set(__self__, "shard_count", shard_count)
@@ -67,6 +69,8 @@ class ClusterArgs:
67
69
  pulumi.set(__self__, "replica_count", replica_count)
68
70
  if transit_encryption_mode is not None:
69
71
  pulumi.set(__self__, "transit_encryption_mode", transit_encryption_mode)
72
+ if zone_distribution_config is not None:
73
+ pulumi.set(__self__, "zone_distribution_config", zone_distribution_config)
70
74
 
71
75
  @property
72
76
  @pulumi.getter(name="pscConfigs")
@@ -196,6 +200,18 @@ class ClusterArgs:
196
200
  def transit_encryption_mode(self, value: Optional[pulumi.Input[str]]):
197
201
  pulumi.set(self, "transit_encryption_mode", value)
198
202
 
203
+ @property
204
+ @pulumi.getter(name="zoneDistributionConfig")
205
+ def zone_distribution_config(self) -> Optional[pulumi.Input['ClusterZoneDistributionConfigArgs']]:
206
+ """
207
+ Immutable. Zone distribution config for Memorystore Redis cluster.
208
+ """
209
+ return pulumi.get(self, "zone_distribution_config")
210
+
211
+ @zone_distribution_config.setter
212
+ def zone_distribution_config(self, value: Optional[pulumi.Input['ClusterZoneDistributionConfigArgs']]):
213
+ pulumi.set(self, "zone_distribution_config", value)
214
+
199
215
 
200
216
  @pulumi.input_type
201
217
  class _ClusterState:
@@ -217,7 +233,8 @@ class _ClusterState:
217
233
  state: Optional[pulumi.Input[str]] = None,
218
234
  state_infos: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterStateInfoArgs']]]] = None,
219
235
  transit_encryption_mode: Optional[pulumi.Input[str]] = None,
220
- uid: Optional[pulumi.Input[str]] = None):
236
+ uid: Optional[pulumi.Input[str]] = None,
237
+ zone_distribution_config: Optional[pulumi.Input['ClusterZoneDistributionConfigArgs']] = None):
221
238
  """
222
239
  Input properties used for looking up and filtering Cluster resources.
223
240
  :param pulumi.Input[str] authorization_mode: Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.
@@ -255,6 +272,7 @@ class _ClusterState:
255
272
  Default value: "TRANSIT_ENCRYPTION_MODE_DISABLED" Possible values: ["TRANSIT_ENCRYPTION_MODE_UNSPECIFIED",
256
273
  "TRANSIT_ENCRYPTION_MODE_DISABLED", "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"]
257
274
  :param pulumi.Input[str] uid: System assigned, unique identifier for the cluster.
275
+ :param pulumi.Input['ClusterZoneDistributionConfigArgs'] zone_distribution_config: Immutable. Zone distribution config for Memorystore Redis cluster.
258
276
  """
259
277
  if authorization_mode is not None:
260
278
  pulumi.set(__self__, "authorization_mode", authorization_mode)
@@ -292,6 +310,8 @@ class _ClusterState:
292
310
  pulumi.set(__self__, "transit_encryption_mode", transit_encryption_mode)
293
311
  if uid is not None:
294
312
  pulumi.set(__self__, "uid", uid)
313
+ if zone_distribution_config is not None:
314
+ pulumi.set(__self__, "zone_distribution_config", zone_distribution_config)
295
315
 
296
316
  @property
297
317
  @pulumi.getter(name="authorizationMode")
@@ -524,6 +544,18 @@ class _ClusterState:
524
544
  def uid(self, value: Optional[pulumi.Input[str]]):
525
545
  pulumi.set(self, "uid", value)
526
546
 
547
+ @property
548
+ @pulumi.getter(name="zoneDistributionConfig")
549
+ def zone_distribution_config(self) -> Optional[pulumi.Input['ClusterZoneDistributionConfigArgs']]:
550
+ """
551
+ Immutable. Zone distribution config for Memorystore Redis cluster.
552
+ """
553
+ return pulumi.get(self, "zone_distribution_config")
554
+
555
+ @zone_distribution_config.setter
556
+ def zone_distribution_config(self, value: Optional[pulumi.Input['ClusterZoneDistributionConfigArgs']]):
557
+ pulumi.set(self, "zone_distribution_config", value)
558
+
527
559
 
528
560
  class Cluster(pulumi.CustomResource):
529
561
  @overload
@@ -540,6 +572,7 @@ class Cluster(pulumi.CustomResource):
540
572
  replica_count: Optional[pulumi.Input[int]] = None,
541
573
  shard_count: Optional[pulumi.Input[int]] = None,
542
574
  transit_encryption_mode: Optional[pulumi.Input[str]] = None,
575
+ zone_distribution_config: Optional[pulumi.Input[pulumi.InputType['ClusterZoneDistributionConfigArgs']]] = None,
543
576
  __props__=None):
544
577
  """
545
578
  A Google Cloud Redis Cluster instance.
@@ -589,6 +622,45 @@ class Cluster(pulumi.CustomResource):
589
622
  redis_configs={
590
623
  "maxmemory-policy": "volatile-ttl",
591
624
  },
625
+ zone_distribution_config=gcp.redis.ClusterZoneDistributionConfigArgs(
626
+ mode="MULTI_ZONE",
627
+ ),
628
+ opts=pulumi.ResourceOptions(depends_on=[default]))
629
+ ```
630
+ ### Redis Cluster Ha Single Zone
631
+
632
+ ```python
633
+ import pulumi
634
+ import pulumi_gcp as gcp
635
+
636
+ producer_net = gcp.compute.Network("producer_net",
637
+ name="mynetwork",
638
+ auto_create_subnetworks=False)
639
+ producer_subnet = gcp.compute.Subnetwork("producer_subnet",
640
+ name="mysubnet",
641
+ ip_cidr_range="10.0.0.248/29",
642
+ region="us-central1",
643
+ network=producer_net.id)
644
+ default = gcp.networkconnectivity.ServiceConnectionPolicy("default",
645
+ name="mypolicy",
646
+ location="us-central1",
647
+ service_class="gcp-memorystore-redis",
648
+ description="my basic service connection policy",
649
+ network=producer_net.id,
650
+ psc_config=gcp.networkconnectivity.ServiceConnectionPolicyPscConfigArgs(
651
+ subnetworks=[producer_subnet.id],
652
+ ))
653
+ cluster_ha_single_zone = gcp.redis.Cluster("cluster-ha-single-zone",
654
+ name="ha-cluster-single-zone",
655
+ shard_count=3,
656
+ psc_configs=[gcp.redis.ClusterPscConfigArgs(
657
+ network=producer_net.id,
658
+ )],
659
+ region="us-central1",
660
+ zone_distribution_config=gcp.redis.ClusterZoneDistributionConfigArgs(
661
+ mode="SINGLE_ZONE",
662
+ zone="us-central1-f",
663
+ ),
592
664
  opts=pulumi.ResourceOptions(depends_on=[default]))
593
665
  ```
594
666
 
@@ -644,6 +716,7 @@ class Cluster(pulumi.CustomResource):
644
716
  :param pulumi.Input[str] transit_encryption_mode: Optional. The in-transit encryption for the Redis cluster. If not provided, encryption is disabled for the cluster.
645
717
  Default value: "TRANSIT_ENCRYPTION_MODE_DISABLED" Possible values: ["TRANSIT_ENCRYPTION_MODE_UNSPECIFIED",
646
718
  "TRANSIT_ENCRYPTION_MODE_DISABLED", "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"]
719
+ :param pulumi.Input[pulumi.InputType['ClusterZoneDistributionConfigArgs']] zone_distribution_config: Immutable. Zone distribution config for Memorystore Redis cluster.
647
720
  """
648
721
  ...
649
722
  @overload
@@ -699,6 +772,45 @@ class Cluster(pulumi.CustomResource):
699
772
  redis_configs={
700
773
  "maxmemory-policy": "volatile-ttl",
701
774
  },
775
+ zone_distribution_config=gcp.redis.ClusterZoneDistributionConfigArgs(
776
+ mode="MULTI_ZONE",
777
+ ),
778
+ opts=pulumi.ResourceOptions(depends_on=[default]))
779
+ ```
780
+ ### Redis Cluster Ha Single Zone
781
+
782
+ ```python
783
+ import pulumi
784
+ import pulumi_gcp as gcp
785
+
786
+ producer_net = gcp.compute.Network("producer_net",
787
+ name="mynetwork",
788
+ auto_create_subnetworks=False)
789
+ producer_subnet = gcp.compute.Subnetwork("producer_subnet",
790
+ name="mysubnet",
791
+ ip_cidr_range="10.0.0.248/29",
792
+ region="us-central1",
793
+ network=producer_net.id)
794
+ default = gcp.networkconnectivity.ServiceConnectionPolicy("default",
795
+ name="mypolicy",
796
+ location="us-central1",
797
+ service_class="gcp-memorystore-redis",
798
+ description="my basic service connection policy",
799
+ network=producer_net.id,
800
+ psc_config=gcp.networkconnectivity.ServiceConnectionPolicyPscConfigArgs(
801
+ subnetworks=[producer_subnet.id],
802
+ ))
803
+ cluster_ha_single_zone = gcp.redis.Cluster("cluster-ha-single-zone",
804
+ name="ha-cluster-single-zone",
805
+ shard_count=3,
806
+ psc_configs=[gcp.redis.ClusterPscConfigArgs(
807
+ network=producer_net.id,
808
+ )],
809
+ region="us-central1",
810
+ zone_distribution_config=gcp.redis.ClusterZoneDistributionConfigArgs(
811
+ mode="SINGLE_ZONE",
812
+ zone="us-central1-f",
813
+ ),
702
814
  opts=pulumi.ResourceOptions(depends_on=[default]))
703
815
  ```
704
816
 
@@ -757,6 +869,7 @@ class Cluster(pulumi.CustomResource):
757
869
  replica_count: Optional[pulumi.Input[int]] = None,
758
870
  shard_count: Optional[pulumi.Input[int]] = None,
759
871
  transit_encryption_mode: Optional[pulumi.Input[str]] = None,
872
+ zone_distribution_config: Optional[pulumi.Input[pulumi.InputType['ClusterZoneDistributionConfigArgs']]] = None,
760
873
  __props__=None):
761
874
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
762
875
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -780,6 +893,7 @@ class Cluster(pulumi.CustomResource):
780
893
  raise TypeError("Missing required property 'shard_count'")
781
894
  __props__.__dict__["shard_count"] = shard_count
782
895
  __props__.__dict__["transit_encryption_mode"] = transit_encryption_mode
896
+ __props__.__dict__["zone_distribution_config"] = zone_distribution_config
783
897
  __props__.__dict__["create_time"] = None
784
898
  __props__.__dict__["discovery_endpoints"] = None
785
899
  __props__.__dict__["precise_size_gb"] = None
@@ -815,7 +929,8 @@ class Cluster(pulumi.CustomResource):
815
929
  state: Optional[pulumi.Input[str]] = None,
816
930
  state_infos: Optional[pulumi.Input[Sequence[pulumi.Input[pulumi.InputType['ClusterStateInfoArgs']]]]] = None,
817
931
  transit_encryption_mode: Optional[pulumi.Input[str]] = None,
818
- uid: Optional[pulumi.Input[str]] = None) -> 'Cluster':
932
+ uid: Optional[pulumi.Input[str]] = None,
933
+ zone_distribution_config: Optional[pulumi.Input[pulumi.InputType['ClusterZoneDistributionConfigArgs']]] = None) -> 'Cluster':
819
934
  """
820
935
  Get an existing Cluster resource's state with the given name, id, and optional extra
821
936
  properties used to qualify the lookup.
@@ -858,6 +973,7 @@ class Cluster(pulumi.CustomResource):
858
973
  Default value: "TRANSIT_ENCRYPTION_MODE_DISABLED" Possible values: ["TRANSIT_ENCRYPTION_MODE_UNSPECIFIED",
859
974
  "TRANSIT_ENCRYPTION_MODE_DISABLED", "TRANSIT_ENCRYPTION_MODE_SERVER_AUTHENTICATION"]
860
975
  :param pulumi.Input[str] uid: System assigned, unique identifier for the cluster.
976
+ :param pulumi.Input[pulumi.InputType['ClusterZoneDistributionConfigArgs']] zone_distribution_config: Immutable. Zone distribution config for Memorystore Redis cluster.
861
977
  """
862
978
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
863
979
 
@@ -881,6 +997,7 @@ class Cluster(pulumi.CustomResource):
881
997
  __props__.__dict__["state_infos"] = state_infos
882
998
  __props__.__dict__["transit_encryption_mode"] = transit_encryption_mode
883
999
  __props__.__dict__["uid"] = uid
1000
+ __props__.__dict__["zone_distribution_config"] = zone_distribution_config
884
1001
  return Cluster(resource_name, opts=opts, __props__=__props__)
885
1002
 
886
1003
  @property
@@ -1042,3 +1159,11 @@ class Cluster(pulumi.CustomResource):
1042
1159
  """
1043
1160
  return pulumi.get(self, "uid")
1044
1161
 
1162
+ @property
1163
+ @pulumi.getter(name="zoneDistributionConfig")
1164
+ def zone_distribution_config(self) -> pulumi.Output[Optional['outputs.ClusterZoneDistributionConfig']]:
1165
+ """
1166
+ Immutable. Zone distribution config for Memorystore Redis cluster.
1167
+ """
1168
+ return pulumi.get(self, "zone_distribution_config")
1169
+
@@ -17,6 +17,7 @@ __all__ = [
17
17
  'ClusterPscConnection',
18
18
  'ClusterStateInfo',
19
19
  'ClusterStateInfoUpdateInfo',
20
+ 'ClusterZoneDistributionConfig',
20
21
  'InstanceMaintenancePolicy',
21
22
  'InstanceMaintenancePolicyWeeklyMaintenanceWindow',
22
23
  'InstanceMaintenancePolicyWeeklyMaintenanceWindowStartTime',
@@ -318,6 +319,41 @@ class ClusterStateInfoUpdateInfo(dict):
318
319
  return pulumi.get(self, "target_shard_count")
319
320
 
320
321
 
322
+ @pulumi.output_type
323
+ class ClusterZoneDistributionConfig(dict):
324
+ def __init__(__self__, *,
325
+ mode: Optional[str] = None,
326
+ zone: Optional[str] = None):
327
+ """
328
+ :param str mode: Immutable. The mode for zone distribution for Memorystore Redis cluster.
329
+ If not provided, MULTI_ZONE will be used as default
330
+ Possible values are: `MULTI_ZONE`, `SINGLE_ZONE`.
331
+ :param str zone: Immutable. The zone for single zone Memorystore Redis cluster.
332
+ """
333
+ if mode is not None:
334
+ pulumi.set(__self__, "mode", mode)
335
+ if zone is not None:
336
+ pulumi.set(__self__, "zone", zone)
337
+
338
+ @property
339
+ @pulumi.getter
340
+ def mode(self) -> Optional[str]:
341
+ """
342
+ Immutable. The mode for zone distribution for Memorystore Redis cluster.
343
+ If not provided, MULTI_ZONE will be used as default
344
+ Possible values are: `MULTI_ZONE`, `SINGLE_ZONE`.
345
+ """
346
+ return pulumi.get(self, "mode")
347
+
348
+ @property
349
+ @pulumi.getter
350
+ def zone(self) -> Optional[str]:
351
+ """
352
+ Immutable. The zone for single zone Memorystore Redis cluster.
353
+ """
354
+ return pulumi.get(self, "zone")
355
+
356
+
321
357
  @pulumi.output_type
322
358
  class InstanceMaintenancePolicy(dict):
323
359
  @staticmethod
@@ -28,6 +28,10 @@ class SecretIamBindingConditionArgs:
28
28
  expression: pulumi.Input[str],
29
29
  title: pulumi.Input[str],
30
30
  description: Optional[pulumi.Input[str]] = None):
31
+ """
32
+ :param pulumi.Input[str] expression: Textual representation of an expression in Common Expression Language syntax.
33
+ :param pulumi.Input[str] title: A title for the expression, i.e. a short string describing its purpose.
34
+ """
31
35
  pulumi.set(__self__, "expression", expression)
32
36
  pulumi.set(__self__, "title", title)
33
37
  if description is not None:
@@ -36,6 +40,9 @@ class SecretIamBindingConditionArgs:
36
40
  @property
37
41
  @pulumi.getter
38
42
  def expression(self) -> pulumi.Input[str]:
43
+ """
44
+ Textual representation of an expression in Common Expression Language syntax.
45
+ """
39
46
  return pulumi.get(self, "expression")
40
47
 
41
48
  @expression.setter
@@ -45,6 +52,9 @@ class SecretIamBindingConditionArgs:
45
52
  @property
46
53
  @pulumi.getter
47
54
  def title(self) -> pulumi.Input[str]:
55
+ """
56
+ A title for the expression, i.e. a short string describing its purpose.
57
+ """
48
58
  return pulumi.get(self, "title")
49
59
 
50
60
  @title.setter
@@ -67,6 +77,10 @@ class SecretIamMemberConditionArgs:
67
77
  expression: pulumi.Input[str],
68
78
  title: pulumi.Input[str],
69
79
  description: Optional[pulumi.Input[str]] = None):
80
+ """
81
+ :param pulumi.Input[str] expression: Textual representation of an expression in Common Expression Language syntax.
82
+ :param pulumi.Input[str] title: A title for the expression, i.e. a short string describing its purpose.
83
+ """
70
84
  pulumi.set(__self__, "expression", expression)
71
85
  pulumi.set(__self__, "title", title)
72
86
  if description is not None:
@@ -75,6 +89,9 @@ class SecretIamMemberConditionArgs:
75
89
  @property
76
90
  @pulumi.getter
77
91
  def expression(self) -> pulumi.Input[str]:
92
+ """
93
+ Textual representation of an expression in Common Expression Language syntax.
94
+ """
78
95
  return pulumi.get(self, "expression")
79
96
 
80
97
  @expression.setter
@@ -84,6 +101,9 @@ class SecretIamMemberConditionArgs:
84
101
  @property
85
102
  @pulumi.getter
86
103
  def title(self) -> pulumi.Input[str]:
104
+ """
105
+ A title for the expression, i.e. a short string describing its purpose.
106
+ """
87
107
  return pulumi.get(self, "title")
88
108
 
89
109
  @title.setter
@@ -46,6 +46,10 @@ class SecretIamBindingCondition(dict):
46
46
  expression: str,
47
47
  title: str,
48
48
  description: Optional[str] = None):
49
+ """
50
+ :param str expression: Textual representation of an expression in Common Expression Language syntax.
51
+ :param str title: A title for the expression, i.e. a short string describing its purpose.
52
+ """
49
53
  pulumi.set(__self__, "expression", expression)
50
54
  pulumi.set(__self__, "title", title)
51
55
  if description is not None:
@@ -54,11 +58,17 @@ class SecretIamBindingCondition(dict):
54
58
  @property
55
59
  @pulumi.getter
56
60
  def expression(self) -> str:
61
+ """
62
+ Textual representation of an expression in Common Expression Language syntax.
63
+ """
57
64
  return pulumi.get(self, "expression")
58
65
 
59
66
  @property
60
67
  @pulumi.getter
61
68
  def title(self) -> str:
69
+ """
70
+ A title for the expression, i.e. a short string describing its purpose.
71
+ """
62
72
  return pulumi.get(self, "title")
63
73
 
64
74
  @property
@@ -73,6 +83,10 @@ class SecretIamMemberCondition(dict):
73
83
  expression: str,
74
84
  title: str,
75
85
  description: Optional[str] = None):
86
+ """
87
+ :param str expression: Textual representation of an expression in Common Expression Language syntax.
88
+ :param str title: A title for the expression, i.e. a short string describing its purpose.
89
+ """
76
90
  pulumi.set(__self__, "expression", expression)
77
91
  pulumi.set(__self__, "title", title)
78
92
  if description is not None:
@@ -81,11 +95,17 @@ class SecretIamMemberCondition(dict):
81
95
  @property
82
96
  @pulumi.getter
83
97
  def expression(self) -> str:
98
+ """
99
+ Textual representation of an expression in Common Expression Language syntax.
100
+ """
84
101
  return pulumi.get(self, "expression")
85
102
 
86
103
  @property
87
104
  @pulumi.getter
88
105
  def title(self) -> str:
106
+ """
107
+ A title for the expression, i.e. a short string describing its purpose.
108
+ """
89
109
  return pulumi.get(self, "title")
90
110
 
91
111
  @property