pulumi-gcp 8.10.2__py3-none-any.whl → 8.11.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 (142) hide show
  1. pulumi_gcp/__init__.py +91 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +29 -0
  3. pulumi_gcp/accesscontextmanager/outputs.py +18 -0
  4. pulumi_gcp/accesscontextmanager/service_perimeter.py +36 -0
  5. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +6 -0
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +6 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +6 -0
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +6 -0
  9. pulumi_gcp/apigee/app_group.py +7 -7
  10. pulumi_gcp/applicationintegration/client.py +8 -6
  11. pulumi_gcp/artifactregistry/_inputs.py +24 -15
  12. pulumi_gcp/artifactregistry/outputs.py +32 -20
  13. pulumi_gcp/artifactregistry/repository.py +128 -0
  14. pulumi_gcp/assuredworkloads/workload.py +7 -7
  15. pulumi_gcp/backupdisasterrecovery/__init__.py +2 -0
  16. pulumi_gcp/backupdisasterrecovery/backup_plan.py +2 -2
  17. pulumi_gcp/backupdisasterrecovery/backup_vault.py +12 -8
  18. pulumi_gcp/backupdisasterrecovery/get_backup.py +153 -0
  19. pulumi_gcp/backupdisasterrecovery/get_backup_vault.py +415 -0
  20. pulumi_gcp/backupdisasterrecovery/outputs.py +63 -0
  21. pulumi_gcp/bigquery/app_profile.py +75 -0
  22. pulumi_gcp/billing/_inputs.py +6 -6
  23. pulumi_gcp/billing/outputs.py +4 -4
  24. pulumi_gcp/certificateauthority/_inputs.py +9 -9
  25. pulumi_gcp/certificateauthority/outputs.py +8 -8
  26. pulumi_gcp/cloudbuild/_inputs.py +53 -0
  27. pulumi_gcp/cloudbuild/outputs.py +50 -0
  28. pulumi_gcp/cloudbuild/worker_pool.py +47 -0
  29. pulumi_gcp/clouddeploy/_inputs.py +254 -0
  30. pulumi_gcp/clouddeploy/outputs.py +211 -0
  31. pulumi_gcp/clouddeploy/target.py +47 -0
  32. pulumi_gcp/cloudfunctionsv2/_inputs.py +6 -6
  33. pulumi_gcp/cloudfunctionsv2/outputs.py +8 -8
  34. pulumi_gcp/cloudrunv2/job.py +4 -4
  35. pulumi_gcp/cloudrunv2/service.py +4 -4
  36. pulumi_gcp/composer/get_user_workloads_config_map.py +4 -0
  37. pulumi_gcp/composer/get_user_workloads_secret.py +4 -0
  38. pulumi_gcp/composer/user_workloads_config_map.py +14 -0
  39. pulumi_gcp/composer/user_workloads_secret.py +6 -0
  40. pulumi_gcp/compute/_inputs.py +566 -25
  41. pulumi_gcp/compute/disk.py +21 -7
  42. pulumi_gcp/compute/firewall_policy_rule.py +12 -0
  43. pulumi_gcp/compute/get_forwarding_rules.py +2 -2
  44. pulumi_gcp/compute/get_global_forwarding_rule.py +12 -1
  45. pulumi_gcp/compute/get_instance_group_manager.py +12 -1
  46. pulumi_gcp/compute/get_network.py +35 -1
  47. pulumi_gcp/compute/get_region_instance_group_manager.py +12 -1
  48. pulumi_gcp/compute/get_region_network_endpoint_group.py +12 -1
  49. pulumi_gcp/compute/global_forwarding_rule.py +28 -0
  50. pulumi_gcp/compute/instance_group_manager.py +28 -0
  51. pulumi_gcp/compute/network.py +75 -0
  52. pulumi_gcp/compute/outputs.py +655 -26
  53. pulumi_gcp/compute/region_health_check.py +28 -0
  54. pulumi_gcp/compute/region_instance_group_manager.py +28 -0
  55. pulumi_gcp/compute/region_network_endpoint.py +28 -0
  56. pulumi_gcp/compute/region_network_endpoint_group.py +70 -2
  57. pulumi_gcp/compute/subnetwork.py +30 -2
  58. pulumi_gcp/compute/url_map.py +7 -7
  59. pulumi_gcp/config/__init__.pyi +4 -0
  60. pulumi_gcp/config/vars.py +8 -0
  61. pulumi_gcp/container/_inputs.py +201 -3
  62. pulumi_gcp/container/cluster.py +68 -14
  63. pulumi_gcp/container/get_cluster.py +12 -1
  64. pulumi_gcp/container/outputs.py +249 -3
  65. pulumi_gcp/dataproc/_inputs.py +209 -1
  66. pulumi_gcp/dataproc/batch.py +76 -0
  67. pulumi_gcp/dataproc/outputs.py +169 -3
  68. pulumi_gcp/diagflow/_inputs.py +3 -3
  69. pulumi_gcp/diagflow/outputs.py +2 -2
  70. pulumi_gcp/discoveryengine/search_engine.py +7 -7
  71. pulumi_gcp/firebaserules/release.py +76 -0
  72. pulumi_gcp/firestore/field.py +4 -4
  73. pulumi_gcp/gemini/__init__.py +15 -0
  74. pulumi_gcp/gemini/_inputs.py +183 -0
  75. pulumi_gcp/gemini/code_repository_index.py +659 -0
  76. pulumi_gcp/gemini/get_repository_group_iam_policy.py +171 -0
  77. pulumi_gcp/gemini/outputs.py +130 -0
  78. pulumi_gcp/gemini/repository_group.py +586 -0
  79. pulumi_gcp/gemini/repository_group_iam_binding.py +604 -0
  80. pulumi_gcp/gemini/repository_group_iam_member.py +604 -0
  81. pulumi_gcp/gemini/repository_group_iam_policy.py +443 -0
  82. pulumi_gcp/gkehub/_inputs.py +30 -10
  83. pulumi_gcp/gkehub/membership_binding.py +6 -6
  84. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  85. pulumi_gcp/gkehub/namespace.py +4 -4
  86. pulumi_gcp/gkehub/outputs.py +21 -7
  87. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  88. pulumi_gcp/iam/__init__.py +1 -0
  89. pulumi_gcp/iam/_inputs.py +137 -0
  90. pulumi_gcp/iam/folders_policy_binding.py +16 -0
  91. pulumi_gcp/iam/organizations_policy_binding.py +16 -0
  92. pulumi_gcp/iam/outputs.py +99 -0
  93. pulumi_gcp/iam/principal_access_boundary_policy.py +16 -0
  94. pulumi_gcp/iam/projects_policy_binding.py +917 -0
  95. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  96. pulumi_gcp/integrationconnectors/_inputs.py +15 -15
  97. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  98. pulumi_gcp/integrationconnectors/outputs.py +10 -10
  99. pulumi_gcp/monitoring/_inputs.py +13 -6
  100. pulumi_gcp/monitoring/outputs.py +10 -4
  101. pulumi_gcp/netapp/_inputs.py +3 -3
  102. pulumi_gcp/netapp/active_directory.py +7 -7
  103. pulumi_gcp/netapp/outputs.py +2 -2
  104. pulumi_gcp/netapp/volume.py +11 -11
  105. pulumi_gcp/networkconnectivity/spoke.py +10 -10
  106. pulumi_gcp/networksecurity/__init__.py +4 -0
  107. pulumi_gcp/networksecurity/_inputs.py +115 -0
  108. pulumi_gcp/networksecurity/mirroring_deployment.py +848 -0
  109. pulumi_gcp/networksecurity/mirroring_deployment_group.py +752 -0
  110. pulumi_gcp/networksecurity/mirroring_endpoint_group.py +737 -0
  111. pulumi_gcp/networksecurity/mirroring_endpoint_group_association.py +840 -0
  112. pulumi_gcp/networksecurity/outputs.py +70 -0
  113. pulumi_gcp/oracledatabase/autonomous_database.py +42 -4
  114. pulumi_gcp/oracledatabase/cloud_exadata_infrastructure.py +42 -4
  115. pulumi_gcp/oracledatabase/cloud_vm_cluster.py +50 -8
  116. pulumi_gcp/oracledatabase/get_autonomous_database.py +12 -1
  117. pulumi_gcp/oracledatabase/get_cloud_exadata_infrastructure.py +12 -1
  118. pulumi_gcp/oracledatabase/get_cloud_vm_cluster.py +12 -1
  119. pulumi_gcp/oracledatabase/outputs.py +21 -0
  120. pulumi_gcp/orgpolicy/policy.py +2 -2
  121. pulumi_gcp/parallelstore/instance.py +4 -0
  122. pulumi_gcp/provider.py +20 -0
  123. pulumi_gcp/pubsub/subscription.py +6 -6
  124. pulumi_gcp/pulumi-plugin.json +1 -1
  125. pulumi_gcp/redis/_inputs.py +435 -3
  126. pulumi_gcp/redis/cluster.py +287 -16
  127. pulumi_gcp/redis/outputs.py +304 -2
  128. pulumi_gcp/serviceaccount/get_account_id_token.py +2 -2
  129. pulumi_gcp/serviceaccount/get_account_key.py +2 -2
  130. pulumi_gcp/storage/get_bucket.py +2 -2
  131. pulumi_gcp/storage/get_bucket_object_content.py +2 -2
  132. pulumi_gcp/tpu/__init__.py +1 -0
  133. pulumi_gcp/tpu/_inputs.py +188 -6
  134. pulumi_gcp/tpu/outputs.py +164 -4
  135. pulumi_gcp/tpu/v2_queued_resource.py +434 -0
  136. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  137. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  138. pulumi_gcp/vertex/ai_index_endpoint.py +2 -2
  139. {pulumi_gcp-8.10.2.dist-info → pulumi_gcp-8.11.0.dist-info}/METADATA +3 -3
  140. {pulumi_gcp-8.10.2.dist-info → pulumi_gcp-8.11.0.dist-info}/RECORD +142 -125
  141. {pulumi_gcp-8.10.2.dist-info → pulumi_gcp-8.11.0.dist-info}/WHEEL +0 -0
  142. {pulumi_gcp-8.10.2.dist-info → pulumi_gcp-8.11.0.dist-info}/top_level.txt +0 -0
@@ -24,6 +24,7 @@ class ClusterArgs:
24
24
  psc_configs: pulumi.Input[Sequence[pulumi.Input['ClusterPscConfigArgs']]],
25
25
  shard_count: pulumi.Input[int],
26
26
  authorization_mode: Optional[pulumi.Input[str]] = None,
27
+ cross_cluster_replication_config: Optional[pulumi.Input['ClusterCrossClusterReplicationConfigArgs']] = None,
27
28
  deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
28
29
  maintenance_policy: Optional[pulumi.Input['ClusterMaintenancePolicyArgs']] = None,
29
30
  name: Optional[pulumi.Input[str]] = None,
@@ -45,6 +46,7 @@ class ClusterArgs:
45
46
  :param pulumi.Input[str] authorization_mode: Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.
46
47
  Default value: "AUTH_MODE_DISABLED" Possible values: ["AUTH_MODE_UNSPECIFIED", "AUTH_MODE_IAM_AUTH",
47
48
  "AUTH_MODE_DISABLED"]
49
+ :param pulumi.Input['ClusterCrossClusterReplicationConfigArgs'] cross_cluster_replication_config: Cross cluster replication config
48
50
  :param pulumi.Input[bool] deletion_protection_enabled: Optional. Indicates if the cluster is deletion protected or not. If the value if set to true, any delete cluster
49
51
  operation will fail. Default value is true.
50
52
  :param pulumi.Input['ClusterMaintenancePolicyArgs'] maintenance_policy: Maintenance policy for a cluster
@@ -67,6 +69,8 @@ class ClusterArgs:
67
69
  pulumi.set(__self__, "shard_count", shard_count)
68
70
  if authorization_mode is not None:
69
71
  pulumi.set(__self__, "authorization_mode", authorization_mode)
72
+ if cross_cluster_replication_config is not None:
73
+ pulumi.set(__self__, "cross_cluster_replication_config", cross_cluster_replication_config)
70
74
  if deletion_protection_enabled is not None:
71
75
  pulumi.set(__self__, "deletion_protection_enabled", deletion_protection_enabled)
72
76
  if maintenance_policy is not None:
@@ -131,6 +135,18 @@ class ClusterArgs:
131
135
  def authorization_mode(self, value: Optional[pulumi.Input[str]]):
132
136
  pulumi.set(self, "authorization_mode", value)
133
137
 
138
+ @property
139
+ @pulumi.getter(name="crossClusterReplicationConfig")
140
+ def cross_cluster_replication_config(self) -> Optional[pulumi.Input['ClusterCrossClusterReplicationConfigArgs']]:
141
+ """
142
+ Cross cluster replication config
143
+ """
144
+ return pulumi.get(self, "cross_cluster_replication_config")
145
+
146
+ @cross_cluster_replication_config.setter
147
+ def cross_cluster_replication_config(self, value: Optional[pulumi.Input['ClusterCrossClusterReplicationConfigArgs']]):
148
+ pulumi.set(self, "cross_cluster_replication_config", value)
149
+
134
150
  @property
135
151
  @pulumi.getter(name="deletionProtectionEnabled")
136
152
  def deletion_protection_enabled(self) -> Optional[pulumi.Input[bool]]:
@@ -273,6 +289,7 @@ class _ClusterState:
273
289
  def __init__(__self__, *,
274
290
  authorization_mode: Optional[pulumi.Input[str]] = None,
275
291
  create_time: Optional[pulumi.Input[str]] = None,
292
+ cross_cluster_replication_config: Optional[pulumi.Input['ClusterCrossClusterReplicationConfigArgs']] = None,
276
293
  deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
277
294
  discovery_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input['ClusterDiscoveryEndpointArgs']]]] = None,
278
295
  maintenance_policy: Optional[pulumi.Input['ClusterMaintenancePolicyArgs']] = None,
@@ -302,6 +319,7 @@ class _ClusterState:
302
319
  :param pulumi.Input[str] create_time: The timestamp associated with the cluster creation request. A timestamp in
303
320
  RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional
304
321
  digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
322
+ :param pulumi.Input['ClusterCrossClusterReplicationConfigArgs'] cross_cluster_replication_config: Cross cluster replication config
305
323
  :param pulumi.Input[bool] deletion_protection_enabled: Optional. Indicates if the cluster is deletion protected or not. If the value if set to true, any delete cluster
306
324
  operation will fail. Default value is true.
307
325
  :param pulumi.Input[Sequence[pulumi.Input['ClusterDiscoveryEndpointArgs']]] discovery_endpoints: Output only. Endpoints created on each given network,
@@ -343,6 +361,8 @@ class _ClusterState:
343
361
  pulumi.set(__self__, "authorization_mode", authorization_mode)
344
362
  if create_time is not None:
345
363
  pulumi.set(__self__, "create_time", create_time)
364
+ if cross_cluster_replication_config is not None:
365
+ pulumi.set(__self__, "cross_cluster_replication_config", cross_cluster_replication_config)
346
366
  if deletion_protection_enabled is not None:
347
367
  pulumi.set(__self__, "deletion_protection_enabled", deletion_protection_enabled)
348
368
  if discovery_endpoints is not None:
@@ -414,6 +434,18 @@ class _ClusterState:
414
434
  def create_time(self, value: Optional[pulumi.Input[str]]):
415
435
  pulumi.set(self, "create_time", value)
416
436
 
437
+ @property
438
+ @pulumi.getter(name="crossClusterReplicationConfig")
439
+ def cross_cluster_replication_config(self) -> Optional[pulumi.Input['ClusterCrossClusterReplicationConfigArgs']]:
440
+ """
441
+ Cross cluster replication config
442
+ """
443
+ return pulumi.get(self, "cross_cluster_replication_config")
444
+
445
+ @cross_cluster_replication_config.setter
446
+ def cross_cluster_replication_config(self, value: Optional[pulumi.Input['ClusterCrossClusterReplicationConfigArgs']]):
447
+ pulumi.set(self, "cross_cluster_replication_config", value)
448
+
417
449
  @property
418
450
  @pulumi.getter(name="deletionProtectionEnabled")
419
451
  def deletion_protection_enabled(self) -> Optional[pulumi.Input[bool]]:
@@ -686,6 +718,7 @@ class Cluster(pulumi.CustomResource):
686
718
  resource_name: str,
687
719
  opts: Optional[pulumi.ResourceOptions] = None,
688
720
  authorization_mode: Optional[pulumi.Input[str]] = None,
721
+ cross_cluster_replication_config: Optional[pulumi.Input[Union['ClusterCrossClusterReplicationConfigArgs', 'ClusterCrossClusterReplicationConfigArgsDict']]] = None,
689
722
  deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
690
723
  maintenance_policy: Optional[pulumi.Input[Union['ClusterMaintenancePolicyArgs', 'ClusterMaintenancePolicyArgsDict']]] = None,
691
724
  name: Optional[pulumi.Input[str]] = None,
@@ -701,14 +734,6 @@ class Cluster(pulumi.CustomResource):
701
734
  zone_distribution_config: Optional[pulumi.Input[Union['ClusterZoneDistributionConfigArgs', 'ClusterZoneDistributionConfigArgsDict']]] = None,
702
735
  __props__=None):
703
736
  """
704
- A Google Cloud Redis Cluster instance.
705
-
706
- To get more information about Cluster, see:
707
-
708
- * [API documentation](https://cloud.google.com/memorystore/docs/cluster/reference/rest/v1/projects.locations.clusters)
709
- * How-to Guides
710
- * [Official Documentation](https://cloud.google.com/memorystore/docs/cluster/)
711
-
712
737
  ## Example Usage
713
738
 
714
739
  ### Redis Cluster Ha
@@ -813,6 +838,126 @@ class Cluster(pulumi.CustomResource):
813
838
  deletion_protection_enabled=True,
814
839
  opts = pulumi.ResourceOptions(depends_on=[default]))
815
840
  ```
841
+ ### Redis Cluster Secondary
842
+
843
+ ```python
844
+ import pulumi
845
+ import pulumi_gcp as gcp
846
+
847
+ producer_net = gcp.compute.Network("producer_net",
848
+ name="mynetwork",
849
+ auto_create_subnetworks=False)
850
+ primary_cluster_producer_subnet = gcp.compute.Subnetwork("primary_cluster_producer_subnet",
851
+ name="mysubnet-primary-cluster",
852
+ ip_cidr_range="10.0.1.0/29",
853
+ region="us-east1",
854
+ network=producer_net.id)
855
+ primary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy("primary_cluster_region_scp",
856
+ name="mypolicy-primary-cluster",
857
+ location="us-east1",
858
+ service_class="gcp-memorystore-redis",
859
+ description="Primary cluster service connection policy",
860
+ network=producer_net.id,
861
+ psc_config={
862
+ "subnetworks": [primary_cluster_producer_subnet.id],
863
+ })
864
+ # Primary cluster
865
+ primary_cluster = gcp.redis.Cluster("primary_cluster",
866
+ name="my-primary-cluster",
867
+ region="us-east1",
868
+ psc_configs=[{
869
+ "network": producer_net.id,
870
+ }],
871
+ authorization_mode="AUTH_MODE_DISABLED",
872
+ transit_encryption_mode="TRANSIT_ENCRYPTION_MODE_DISABLED",
873
+ shard_count=3,
874
+ redis_configs={
875
+ "maxmemory-policy": "volatile-ttl",
876
+ },
877
+ node_type="REDIS_HIGHMEM_MEDIUM",
878
+ persistence_config={
879
+ "mode": "RDB",
880
+ "rdb_config": {
881
+ "rdb_snapshot_period": "ONE_HOUR",
882
+ "rdb_snapshot_start_time": "2024-10-02T15:01:23Z",
883
+ },
884
+ },
885
+ zone_distribution_config={
886
+ "mode": "MULTI_ZONE",
887
+ },
888
+ replica_count=1,
889
+ maintenance_policy={
890
+ "weekly_maintenance_windows": [{
891
+ "day": "MONDAY",
892
+ "start_time": {
893
+ "hours": 1,
894
+ "minutes": 0,
895
+ "seconds": 0,
896
+ "nanos": 0,
897
+ },
898
+ }],
899
+ },
900
+ deletion_protection_enabled=True,
901
+ opts = pulumi.ResourceOptions(depends_on=[primary_cluster_region_scp]))
902
+ secondary_cluster_producer_subnet = gcp.compute.Subnetwork("secondary_cluster_producer_subnet",
903
+ name="mysubnet-secondary-cluster",
904
+ ip_cidr_range="10.0.2.0/29",
905
+ region="europe-west1",
906
+ network=producer_net.id)
907
+ secondary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy("secondary_cluster_region_scp",
908
+ name="mypolicy-secondary-cluster",
909
+ location="europe-west1",
910
+ service_class="gcp-memorystore-redis",
911
+ description="Secondary cluster service connection policy",
912
+ network=producer_net.id,
913
+ psc_config={
914
+ "subnetworks": [secondary_cluster_producer_subnet.id],
915
+ })
916
+ # Secondary cluster
917
+ secondary_cluster = gcp.redis.Cluster("secondary_cluster",
918
+ name="my-secondary-cluster",
919
+ region="europe-west1",
920
+ psc_configs=[{
921
+ "network": producer_net.id,
922
+ }],
923
+ authorization_mode="AUTH_MODE_DISABLED",
924
+ transit_encryption_mode="TRANSIT_ENCRYPTION_MODE_DISABLED",
925
+ shard_count=3,
926
+ redis_configs={
927
+ "maxmemory-policy": "volatile-ttl",
928
+ },
929
+ node_type="REDIS_HIGHMEM_MEDIUM",
930
+ persistence_config={
931
+ "mode": "RDB",
932
+ "rdb_config": {
933
+ "rdb_snapshot_period": "ONE_HOUR",
934
+ "rdb_snapshot_start_time": "2024-10-02T15:01:23Z",
935
+ },
936
+ },
937
+ zone_distribution_config={
938
+ "mode": "MULTI_ZONE",
939
+ },
940
+ replica_count=2,
941
+ maintenance_policy={
942
+ "weekly_maintenance_windows": [{
943
+ "day": "WEDNESDAY",
944
+ "start_time": {
945
+ "hours": 1,
946
+ "minutes": 0,
947
+ "seconds": 0,
948
+ "nanos": 0,
949
+ },
950
+ }],
951
+ },
952
+ deletion_protection_enabled=True,
953
+ cross_cluster_replication_config={
954
+ "cluster_role": "SECONDARY",
955
+ "primary_cluster": {
956
+ "cluster": primary_cluster.id,
957
+ },
958
+ },
959
+ opts = pulumi.ResourceOptions(depends_on=[secondary_cluster_region_scp]))
960
+ ```
816
961
  ### Redis Cluster Rdb
817
962
 
818
963
  ```python
@@ -970,6 +1115,7 @@ class Cluster(pulumi.CustomResource):
970
1115
  :param pulumi.Input[str] authorization_mode: Optional. The authorization mode of the Redis cluster. If not provided, auth feature is disabled for the cluster.
971
1116
  Default value: "AUTH_MODE_DISABLED" Possible values: ["AUTH_MODE_UNSPECIFIED", "AUTH_MODE_IAM_AUTH",
972
1117
  "AUTH_MODE_DISABLED"]
1118
+ :param pulumi.Input[Union['ClusterCrossClusterReplicationConfigArgs', 'ClusterCrossClusterReplicationConfigArgsDict']] cross_cluster_replication_config: Cross cluster replication config
973
1119
  :param pulumi.Input[bool] deletion_protection_enabled: Optional. Indicates if the cluster is deletion protected or not. If the value if set to true, any delete cluster
974
1120
  operation will fail. Default value is true.
975
1121
  :param pulumi.Input[Union['ClusterMaintenancePolicyArgs', 'ClusterMaintenancePolicyArgsDict']] maintenance_policy: Maintenance policy for a cluster
@@ -1000,14 +1146,6 @@ class Cluster(pulumi.CustomResource):
1000
1146
  args: ClusterArgs,
1001
1147
  opts: Optional[pulumi.ResourceOptions] = None):
1002
1148
  """
1003
- A Google Cloud Redis Cluster instance.
1004
-
1005
- To get more information about Cluster, see:
1006
-
1007
- * [API documentation](https://cloud.google.com/memorystore/docs/cluster/reference/rest/v1/projects.locations.clusters)
1008
- * How-to Guides
1009
- * [Official Documentation](https://cloud.google.com/memorystore/docs/cluster/)
1010
-
1011
1149
  ## Example Usage
1012
1150
 
1013
1151
  ### Redis Cluster Ha
@@ -1112,6 +1250,126 @@ class Cluster(pulumi.CustomResource):
1112
1250
  deletion_protection_enabled=True,
1113
1251
  opts = pulumi.ResourceOptions(depends_on=[default]))
1114
1252
  ```
1253
+ ### Redis Cluster Secondary
1254
+
1255
+ ```python
1256
+ import pulumi
1257
+ import pulumi_gcp as gcp
1258
+
1259
+ producer_net = gcp.compute.Network("producer_net",
1260
+ name="mynetwork",
1261
+ auto_create_subnetworks=False)
1262
+ primary_cluster_producer_subnet = gcp.compute.Subnetwork("primary_cluster_producer_subnet",
1263
+ name="mysubnet-primary-cluster",
1264
+ ip_cidr_range="10.0.1.0/29",
1265
+ region="us-east1",
1266
+ network=producer_net.id)
1267
+ primary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy("primary_cluster_region_scp",
1268
+ name="mypolicy-primary-cluster",
1269
+ location="us-east1",
1270
+ service_class="gcp-memorystore-redis",
1271
+ description="Primary cluster service connection policy",
1272
+ network=producer_net.id,
1273
+ psc_config={
1274
+ "subnetworks": [primary_cluster_producer_subnet.id],
1275
+ })
1276
+ # Primary cluster
1277
+ primary_cluster = gcp.redis.Cluster("primary_cluster",
1278
+ name="my-primary-cluster",
1279
+ region="us-east1",
1280
+ psc_configs=[{
1281
+ "network": producer_net.id,
1282
+ }],
1283
+ authorization_mode="AUTH_MODE_DISABLED",
1284
+ transit_encryption_mode="TRANSIT_ENCRYPTION_MODE_DISABLED",
1285
+ shard_count=3,
1286
+ redis_configs={
1287
+ "maxmemory-policy": "volatile-ttl",
1288
+ },
1289
+ node_type="REDIS_HIGHMEM_MEDIUM",
1290
+ persistence_config={
1291
+ "mode": "RDB",
1292
+ "rdb_config": {
1293
+ "rdb_snapshot_period": "ONE_HOUR",
1294
+ "rdb_snapshot_start_time": "2024-10-02T15:01:23Z",
1295
+ },
1296
+ },
1297
+ zone_distribution_config={
1298
+ "mode": "MULTI_ZONE",
1299
+ },
1300
+ replica_count=1,
1301
+ maintenance_policy={
1302
+ "weekly_maintenance_windows": [{
1303
+ "day": "MONDAY",
1304
+ "start_time": {
1305
+ "hours": 1,
1306
+ "minutes": 0,
1307
+ "seconds": 0,
1308
+ "nanos": 0,
1309
+ },
1310
+ }],
1311
+ },
1312
+ deletion_protection_enabled=True,
1313
+ opts = pulumi.ResourceOptions(depends_on=[primary_cluster_region_scp]))
1314
+ secondary_cluster_producer_subnet = gcp.compute.Subnetwork("secondary_cluster_producer_subnet",
1315
+ name="mysubnet-secondary-cluster",
1316
+ ip_cidr_range="10.0.2.0/29",
1317
+ region="europe-west1",
1318
+ network=producer_net.id)
1319
+ secondary_cluster_region_scp = gcp.networkconnectivity.ServiceConnectionPolicy("secondary_cluster_region_scp",
1320
+ name="mypolicy-secondary-cluster",
1321
+ location="europe-west1",
1322
+ service_class="gcp-memorystore-redis",
1323
+ description="Secondary cluster service connection policy",
1324
+ network=producer_net.id,
1325
+ psc_config={
1326
+ "subnetworks": [secondary_cluster_producer_subnet.id],
1327
+ })
1328
+ # Secondary cluster
1329
+ secondary_cluster = gcp.redis.Cluster("secondary_cluster",
1330
+ name="my-secondary-cluster",
1331
+ region="europe-west1",
1332
+ psc_configs=[{
1333
+ "network": producer_net.id,
1334
+ }],
1335
+ authorization_mode="AUTH_MODE_DISABLED",
1336
+ transit_encryption_mode="TRANSIT_ENCRYPTION_MODE_DISABLED",
1337
+ shard_count=3,
1338
+ redis_configs={
1339
+ "maxmemory-policy": "volatile-ttl",
1340
+ },
1341
+ node_type="REDIS_HIGHMEM_MEDIUM",
1342
+ persistence_config={
1343
+ "mode": "RDB",
1344
+ "rdb_config": {
1345
+ "rdb_snapshot_period": "ONE_HOUR",
1346
+ "rdb_snapshot_start_time": "2024-10-02T15:01:23Z",
1347
+ },
1348
+ },
1349
+ zone_distribution_config={
1350
+ "mode": "MULTI_ZONE",
1351
+ },
1352
+ replica_count=2,
1353
+ maintenance_policy={
1354
+ "weekly_maintenance_windows": [{
1355
+ "day": "WEDNESDAY",
1356
+ "start_time": {
1357
+ "hours": 1,
1358
+ "minutes": 0,
1359
+ "seconds": 0,
1360
+ "nanos": 0,
1361
+ },
1362
+ }],
1363
+ },
1364
+ deletion_protection_enabled=True,
1365
+ cross_cluster_replication_config={
1366
+ "cluster_role": "SECONDARY",
1367
+ "primary_cluster": {
1368
+ "cluster": primary_cluster.id,
1369
+ },
1370
+ },
1371
+ opts = pulumi.ResourceOptions(depends_on=[secondary_cluster_region_scp]))
1372
+ ```
1115
1373
  ### Redis Cluster Rdb
1116
1374
 
1117
1375
  ```python
@@ -1280,6 +1538,7 @@ class Cluster(pulumi.CustomResource):
1280
1538
  resource_name: str,
1281
1539
  opts: Optional[pulumi.ResourceOptions] = None,
1282
1540
  authorization_mode: Optional[pulumi.Input[str]] = None,
1541
+ cross_cluster_replication_config: Optional[pulumi.Input[Union['ClusterCrossClusterReplicationConfigArgs', 'ClusterCrossClusterReplicationConfigArgsDict']]] = None,
1283
1542
  deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
1284
1543
  maintenance_policy: Optional[pulumi.Input[Union['ClusterMaintenancePolicyArgs', 'ClusterMaintenancePolicyArgsDict']]] = None,
1285
1544
  name: Optional[pulumi.Input[str]] = None,
@@ -1303,6 +1562,7 @@ class Cluster(pulumi.CustomResource):
1303
1562
  __props__ = ClusterArgs.__new__(ClusterArgs)
1304
1563
 
1305
1564
  __props__.__dict__["authorization_mode"] = authorization_mode
1565
+ __props__.__dict__["cross_cluster_replication_config"] = cross_cluster_replication_config
1306
1566
  __props__.__dict__["deletion_protection_enabled"] = deletion_protection_enabled
1307
1567
  __props__.__dict__["maintenance_policy"] = maintenance_policy
1308
1568
  __props__.__dict__["name"] = name
@@ -1341,6 +1601,7 @@ class Cluster(pulumi.CustomResource):
1341
1601
  opts: Optional[pulumi.ResourceOptions] = None,
1342
1602
  authorization_mode: Optional[pulumi.Input[str]] = None,
1343
1603
  create_time: Optional[pulumi.Input[str]] = None,
1604
+ cross_cluster_replication_config: Optional[pulumi.Input[Union['ClusterCrossClusterReplicationConfigArgs', 'ClusterCrossClusterReplicationConfigArgsDict']]] = None,
1344
1605
  deletion_protection_enabled: Optional[pulumi.Input[bool]] = None,
1345
1606
  discovery_endpoints: Optional[pulumi.Input[Sequence[pulumi.Input[Union['ClusterDiscoveryEndpointArgs', 'ClusterDiscoveryEndpointArgsDict']]]]] = None,
1346
1607
  maintenance_policy: Optional[pulumi.Input[Union['ClusterMaintenancePolicyArgs', 'ClusterMaintenancePolicyArgsDict']]] = None,
@@ -1375,6 +1636,7 @@ class Cluster(pulumi.CustomResource):
1375
1636
  :param pulumi.Input[str] create_time: The timestamp associated with the cluster creation request. A timestamp in
1376
1637
  RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional
1377
1638
  digits. Examples: "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z".
1639
+ :param pulumi.Input[Union['ClusterCrossClusterReplicationConfigArgs', 'ClusterCrossClusterReplicationConfigArgsDict']] cross_cluster_replication_config: Cross cluster replication config
1378
1640
  :param pulumi.Input[bool] deletion_protection_enabled: Optional. Indicates if the cluster is deletion protected or not. If the value if set to true, any delete cluster
1379
1641
  operation will fail. Default value is true.
1380
1642
  :param pulumi.Input[Sequence[pulumi.Input[Union['ClusterDiscoveryEndpointArgs', 'ClusterDiscoveryEndpointArgsDict']]]] discovery_endpoints: Output only. Endpoints created on each given network,
@@ -1418,6 +1680,7 @@ class Cluster(pulumi.CustomResource):
1418
1680
 
1419
1681
  __props__.__dict__["authorization_mode"] = authorization_mode
1420
1682
  __props__.__dict__["create_time"] = create_time
1683
+ __props__.__dict__["cross_cluster_replication_config"] = cross_cluster_replication_config
1421
1684
  __props__.__dict__["deletion_protection_enabled"] = deletion_protection_enabled
1422
1685
  __props__.__dict__["discovery_endpoints"] = discovery_endpoints
1423
1686
  __props__.__dict__["maintenance_policy"] = maintenance_policy
@@ -1461,6 +1724,14 @@ class Cluster(pulumi.CustomResource):
1461
1724
  """
1462
1725
  return pulumi.get(self, "create_time")
1463
1726
 
1727
+ @property
1728
+ @pulumi.getter(name="crossClusterReplicationConfig")
1729
+ def cross_cluster_replication_config(self) -> pulumi.Output['outputs.ClusterCrossClusterReplicationConfig']:
1730
+ """
1731
+ Cross cluster replication config
1732
+ """
1733
+ return pulumi.get(self, "cross_cluster_replication_config")
1734
+
1464
1735
  @property
1465
1736
  @pulumi.getter(name="deletionProtectionEnabled")
1466
1737
  def deletion_protection_enabled(self) -> pulumi.Output[Optional[bool]]: