pulumi-gcp 8.11.0a1734157575__py3-none-any.whl → 8.11.0a1734385115__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 +2 -0
  60. pulumi_gcp/config/vars.py +4 -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.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/METADATA +3 -3
  140. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/RECORD +142 -125
  141. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/WHEEL +0 -0
  142. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/top_level.txt +0 -0
@@ -16,6 +16,12 @@ from .. import _utilities
16
16
  from . import outputs
17
17
 
18
18
  __all__ = [
19
+ 'ClusterCrossClusterReplicationConfig',
20
+ 'ClusterCrossClusterReplicationConfigMembership',
21
+ 'ClusterCrossClusterReplicationConfigMembershipPrimaryCluster',
22
+ 'ClusterCrossClusterReplicationConfigMembershipSecondaryCluster',
23
+ 'ClusterCrossClusterReplicationConfigPrimaryCluster',
24
+ 'ClusterCrossClusterReplicationConfigSecondaryCluster',
19
25
  'ClusterDiscoveryEndpoint',
20
26
  'ClusterDiscoveryEndpointPscConfig',
21
27
  'ClusterMaintenancePolicy',
@@ -46,6 +52,302 @@ __all__ = [
46
52
  'GetInstanceServerCaCertResult',
47
53
  ]
48
54
 
55
+ @pulumi.output_type
56
+ class ClusterCrossClusterReplicationConfig(dict):
57
+ @staticmethod
58
+ def __key_warning(key: str):
59
+ suggest = None
60
+ if key == "clusterRole":
61
+ suggest = "cluster_role"
62
+ elif key == "primaryCluster":
63
+ suggest = "primary_cluster"
64
+ elif key == "secondaryClusters":
65
+ suggest = "secondary_clusters"
66
+ elif key == "updateTime":
67
+ suggest = "update_time"
68
+
69
+ if suggest:
70
+ pulumi.log.warn(f"Key '{key}' not found in ClusterCrossClusterReplicationConfig. Access the value via the '{suggest}' property getter instead.")
71
+
72
+ def __getitem__(self, key: str) -> Any:
73
+ ClusterCrossClusterReplicationConfig.__key_warning(key)
74
+ return super().__getitem__(key)
75
+
76
+ def get(self, key: str, default = None) -> Any:
77
+ ClusterCrossClusterReplicationConfig.__key_warning(key)
78
+ return super().get(key, default)
79
+
80
+ def __init__(__self__, *,
81
+ cluster_role: Optional[str] = None,
82
+ memberships: Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigMembership']] = None,
83
+ primary_cluster: Optional['outputs.ClusterCrossClusterReplicationConfigPrimaryCluster'] = None,
84
+ secondary_clusters: Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigSecondaryCluster']] = None,
85
+ update_time: Optional[str] = None):
86
+ """
87
+ :param str cluster_role: The role of the cluster in cross cluster replication. Supported values are:
88
+ 1. `CLUSTER_ROLE_UNSPECIFIED`: This is an independent cluster that has never participated in cross cluster replication. It allows both reads and writes.
89
+ 1. `NONE`: This is an independent cluster that previously participated in cross cluster replication(either as a `PRIMARY` or `SECONDARY` cluster). It allows both reads and writes.
90
+ 1. `PRIMARY`: This cluster serves as the replication source for secondary clusters that are replicating from it. Any data written to it is automatically replicated to its secondary clusters. It allows both reads and writes.
91
+ 1. `SECONDARY`: This cluster replicates data from the primary cluster. It allows only reads.
92
+ Possible values are: `CLUSTER_ROLE_UNSPECIFIED`, `NONE`, `PRIMARY`, `SECONDARY`.
93
+ :param Sequence['ClusterCrossClusterReplicationConfigMembershipArgs'] memberships: (Output)
94
+ An output only view of all the member clusters participating in cross cluster replication. This field is populated for all the member clusters irrespective of their cluster role.
95
+ Structure is documented below.
96
+ :param 'ClusterCrossClusterReplicationConfigPrimaryClusterArgs' primary_cluster: Details of the primary cluster that is used as the replication source for this secondary cluster. This is allowed to be set only for clusters whose cluster role is of type `SECONDARY`.
97
+ Structure is documented below.
98
+ :param Sequence['ClusterCrossClusterReplicationConfigSecondaryClusterArgs'] secondary_clusters: List of secondary clusters that are replicating from this primary cluster. This is allowed to be set only for clusters whose cluster role is of type `PRIMARY`.
99
+ Structure is documented below.
100
+ :param str update_time: (Output)
101
+ The last time cross cluster replication config was updated.
102
+ """
103
+ if cluster_role is not None:
104
+ pulumi.set(__self__, "cluster_role", cluster_role)
105
+ if memberships is not None:
106
+ pulumi.set(__self__, "memberships", memberships)
107
+ if primary_cluster is not None:
108
+ pulumi.set(__self__, "primary_cluster", primary_cluster)
109
+ if secondary_clusters is not None:
110
+ pulumi.set(__self__, "secondary_clusters", secondary_clusters)
111
+ if update_time is not None:
112
+ pulumi.set(__self__, "update_time", update_time)
113
+
114
+ @property
115
+ @pulumi.getter(name="clusterRole")
116
+ def cluster_role(self) -> Optional[str]:
117
+ """
118
+ The role of the cluster in cross cluster replication. Supported values are:
119
+ 1. `CLUSTER_ROLE_UNSPECIFIED`: This is an independent cluster that has never participated in cross cluster replication. It allows both reads and writes.
120
+ 1. `NONE`: This is an independent cluster that previously participated in cross cluster replication(either as a `PRIMARY` or `SECONDARY` cluster). It allows both reads and writes.
121
+ 1. `PRIMARY`: This cluster serves as the replication source for secondary clusters that are replicating from it. Any data written to it is automatically replicated to its secondary clusters. It allows both reads and writes.
122
+ 1. `SECONDARY`: This cluster replicates data from the primary cluster. It allows only reads.
123
+ Possible values are: `CLUSTER_ROLE_UNSPECIFIED`, `NONE`, `PRIMARY`, `SECONDARY`.
124
+ """
125
+ return pulumi.get(self, "cluster_role")
126
+
127
+ @property
128
+ @pulumi.getter
129
+ def memberships(self) -> Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigMembership']]:
130
+ """
131
+ (Output)
132
+ An output only view of all the member clusters participating in cross cluster replication. This field is populated for all the member clusters irrespective of their cluster role.
133
+ Structure is documented below.
134
+ """
135
+ return pulumi.get(self, "memberships")
136
+
137
+ @property
138
+ @pulumi.getter(name="primaryCluster")
139
+ def primary_cluster(self) -> Optional['outputs.ClusterCrossClusterReplicationConfigPrimaryCluster']:
140
+ """
141
+ Details of the primary cluster that is used as the replication source for this secondary cluster. This is allowed to be set only for clusters whose cluster role is of type `SECONDARY`.
142
+ Structure is documented below.
143
+ """
144
+ return pulumi.get(self, "primary_cluster")
145
+
146
+ @property
147
+ @pulumi.getter(name="secondaryClusters")
148
+ def secondary_clusters(self) -> Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigSecondaryCluster']]:
149
+ """
150
+ List of secondary clusters that are replicating from this primary cluster. This is allowed to be set only for clusters whose cluster role is of type `PRIMARY`.
151
+ Structure is documented below.
152
+ """
153
+ return pulumi.get(self, "secondary_clusters")
154
+
155
+ @property
156
+ @pulumi.getter(name="updateTime")
157
+ def update_time(self) -> Optional[str]:
158
+ """
159
+ (Output)
160
+ The last time cross cluster replication config was updated.
161
+ """
162
+ return pulumi.get(self, "update_time")
163
+
164
+
165
+ @pulumi.output_type
166
+ class ClusterCrossClusterReplicationConfigMembership(dict):
167
+ @staticmethod
168
+ def __key_warning(key: str):
169
+ suggest = None
170
+ if key == "primaryClusters":
171
+ suggest = "primary_clusters"
172
+ elif key == "secondaryClusters":
173
+ suggest = "secondary_clusters"
174
+
175
+ if suggest:
176
+ pulumi.log.warn(f"Key '{key}' not found in ClusterCrossClusterReplicationConfigMembership. Access the value via the '{suggest}' property getter instead.")
177
+
178
+ def __getitem__(self, key: str) -> Any:
179
+ ClusterCrossClusterReplicationConfigMembership.__key_warning(key)
180
+ return super().__getitem__(key)
181
+
182
+ def get(self, key: str, default = None) -> Any:
183
+ ClusterCrossClusterReplicationConfigMembership.__key_warning(key)
184
+ return super().get(key, default)
185
+
186
+ def __init__(__self__, *,
187
+ primary_clusters: Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigMembershipPrimaryCluster']] = None,
188
+ secondary_clusters: Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigMembershipSecondaryCluster']] = None):
189
+ """
190
+ :param Sequence['ClusterCrossClusterReplicationConfigMembershipPrimaryClusterArgs'] primary_clusters: Details of the primary cluster that is used as the replication source for all the secondary clusters.
191
+ :param Sequence['ClusterCrossClusterReplicationConfigMembershipSecondaryClusterArgs'] secondary_clusters: List of secondary clusters that are replicating from the primary cluster.
192
+ """
193
+ if primary_clusters is not None:
194
+ pulumi.set(__self__, "primary_clusters", primary_clusters)
195
+ if secondary_clusters is not None:
196
+ pulumi.set(__self__, "secondary_clusters", secondary_clusters)
197
+
198
+ @property
199
+ @pulumi.getter(name="primaryClusters")
200
+ def primary_clusters(self) -> Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigMembershipPrimaryCluster']]:
201
+ """
202
+ Details of the primary cluster that is used as the replication source for all the secondary clusters.
203
+ """
204
+ return pulumi.get(self, "primary_clusters")
205
+
206
+ @property
207
+ @pulumi.getter(name="secondaryClusters")
208
+ def secondary_clusters(self) -> Optional[Sequence['outputs.ClusterCrossClusterReplicationConfigMembershipSecondaryCluster']]:
209
+ """
210
+ List of secondary clusters that are replicating from the primary cluster.
211
+ """
212
+ return pulumi.get(self, "secondary_clusters")
213
+
214
+
215
+ @pulumi.output_type
216
+ class ClusterCrossClusterReplicationConfigMembershipPrimaryCluster(dict):
217
+ def __init__(__self__, *,
218
+ cluster: Optional[str] = None,
219
+ uid: Optional[str] = None):
220
+ """
221
+ :param str cluster: The full resource path of the primary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
222
+ :param str uid: (Output)
223
+ The unique id of the primary cluster.
224
+ """
225
+ if cluster is not None:
226
+ pulumi.set(__self__, "cluster", cluster)
227
+ if uid is not None:
228
+ pulumi.set(__self__, "uid", uid)
229
+
230
+ @property
231
+ @pulumi.getter
232
+ def cluster(self) -> Optional[str]:
233
+ """
234
+ The full resource path of the primary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
235
+ """
236
+ return pulumi.get(self, "cluster")
237
+
238
+ @property
239
+ @pulumi.getter
240
+ def uid(self) -> Optional[str]:
241
+ """
242
+ (Output)
243
+ The unique id of the primary cluster.
244
+ """
245
+ return pulumi.get(self, "uid")
246
+
247
+
248
+ @pulumi.output_type
249
+ class ClusterCrossClusterReplicationConfigMembershipSecondaryCluster(dict):
250
+ def __init__(__self__, *,
251
+ cluster: Optional[str] = None,
252
+ uid: Optional[str] = None):
253
+ """
254
+ :param str cluster: (Output)
255
+ The full resource path of the secondary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
256
+ :param str uid: (Output)
257
+ The unique id of the secondary cluster.
258
+ """
259
+ if cluster is not None:
260
+ pulumi.set(__self__, "cluster", cluster)
261
+ if uid is not None:
262
+ pulumi.set(__self__, "uid", uid)
263
+
264
+ @property
265
+ @pulumi.getter
266
+ def cluster(self) -> Optional[str]:
267
+ """
268
+ (Output)
269
+ The full resource path of the secondary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
270
+ """
271
+ return pulumi.get(self, "cluster")
272
+
273
+ @property
274
+ @pulumi.getter
275
+ def uid(self) -> Optional[str]:
276
+ """
277
+ (Output)
278
+ The unique id of the secondary cluster.
279
+ """
280
+ return pulumi.get(self, "uid")
281
+
282
+
283
+ @pulumi.output_type
284
+ class ClusterCrossClusterReplicationConfigPrimaryCluster(dict):
285
+ def __init__(__self__, *,
286
+ cluster: Optional[str] = None,
287
+ uid: Optional[str] = None):
288
+ """
289
+ :param str cluster: The full resource path of the primary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
290
+ :param str uid: (Output)
291
+ The unique id of the primary cluster.
292
+ """
293
+ if cluster is not None:
294
+ pulumi.set(__self__, "cluster", cluster)
295
+ if uid is not None:
296
+ pulumi.set(__self__, "uid", uid)
297
+
298
+ @property
299
+ @pulumi.getter
300
+ def cluster(self) -> Optional[str]:
301
+ """
302
+ The full resource path of the primary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
303
+ """
304
+ return pulumi.get(self, "cluster")
305
+
306
+ @property
307
+ @pulumi.getter
308
+ def uid(self) -> Optional[str]:
309
+ """
310
+ (Output)
311
+ The unique id of the primary cluster.
312
+ """
313
+ return pulumi.get(self, "uid")
314
+
315
+
316
+ @pulumi.output_type
317
+ class ClusterCrossClusterReplicationConfigSecondaryCluster(dict):
318
+ def __init__(__self__, *,
319
+ cluster: Optional[str] = None,
320
+ uid: Optional[str] = None):
321
+ """
322
+ :param str cluster: (Output)
323
+ The full resource path of the secondary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
324
+ :param str uid: (Output)
325
+ The unique id of the secondary cluster.
326
+ """
327
+ if cluster is not None:
328
+ pulumi.set(__self__, "cluster", cluster)
329
+ if uid is not None:
330
+ pulumi.set(__self__, "uid", uid)
331
+
332
+ @property
333
+ @pulumi.getter
334
+ def cluster(self) -> Optional[str]:
335
+ """
336
+ (Output)
337
+ The full resource path of the secondary cluster in the format: projects/{project}/locations/{region}/clusters/{cluster-id}
338
+ """
339
+ return pulumi.get(self, "cluster")
340
+
341
+ @property
342
+ @pulumi.getter
343
+ def uid(self) -> Optional[str]:
344
+ """
345
+ (Output)
346
+ The unique id of the secondary cluster.
347
+ """
348
+ return pulumi.get(self, "uid")
349
+
350
+
49
351
  @pulumi.output_type
50
352
  class ClusterDiscoveryEndpoint(dict):
51
353
  @staticmethod
@@ -537,7 +839,7 @@ class ClusterPersistenceConfigAofConfig(dict):
537
839
  append_fsync: Optional[str] = None):
538
840
  """
539
841
  :param str append_fsync: Optional. Available fsync modes.
540
- - NO - Do not explicilty call fsync(). Rely on OS defaults.
842
+ - NO - Do not explicitly call fsync(). Rely on OS defaults.
541
843
  - EVERYSEC - Call fsync() once per second in a background thread. A balance between performance and durability.
542
844
  - ALWAYS - Call fsync() for earch write command.
543
845
  Possible values are: `APPEND_FSYNC_UNSPECIFIED`, `NO`, `EVERYSEC`, `ALWAYS`.
@@ -550,7 +852,7 @@ class ClusterPersistenceConfigAofConfig(dict):
550
852
  def append_fsync(self) -> Optional[str]:
551
853
  """
552
854
  Optional. Available fsync modes.
553
- - NO - Do not explicilty call fsync(). Rely on OS defaults.
855
+ - NO - Do not explicitly call fsync(). Rely on OS defaults.
554
856
  - EVERYSEC - Call fsync() once per second in a background thread. A balance between performance and durability.
555
857
  - ALWAYS - Call fsync() for earch write command.
556
858
  Possible values are: `APPEND_FSYNC_UNSPECIFIED`, `NO`, `EVERYSEC`, `ALWAYS`.
@@ -122,7 +122,7 @@ def get_account_id_token(delegates: Optional[Sequence[str]] = None,
122
122
  ```
123
123
 
124
124
  ### Service Account Impersonation.
125
- `serviceaccount_get_account_access_token` will use background impersonated credentials provided by `serviceaccount_get_account_access_token`.
125
+ `serviceaccount_get_account_id_token` will use background impersonated credentials provided by `serviceaccount_get_account_access_token`.
126
126
 
127
127
  Note: to use the following, you must grant `target_service_account` the
128
128
  `roles/iam.serviceAccountTokenCreator` role on itself.
@@ -208,7 +208,7 @@ def get_account_id_token_output(delegates: Optional[pulumi.Input[Optional[Sequen
208
208
  ```
209
209
 
210
210
  ### Service Account Impersonation.
211
- `serviceaccount_get_account_access_token` will use background impersonated credentials provided by `serviceaccount_get_account_access_token`.
211
+ `serviceaccount_get_account_id_token` will use background impersonated credentials provided by `serviceaccount_get_account_access_token`.
212
212
 
213
213
  Note: to use the following, you must grant `target_service_account` the
214
214
  `roles/iam.serviceAccountTokenCreator` role on itself.
@@ -120,7 +120,7 @@ def get_account_key(name: Optional[str] = None,
120
120
  :param str name: The name of the service account key. This must have format
121
121
  `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{KEYID}`, where `{ACCOUNT}`
122
122
  is the email address or unique id of the service account.
123
- :param str project: The ID of the project that the service account will be created in.
123
+ :param str project: The ID of the project that the service account is present in.
124
124
  Defaults to the provider project configuration.
125
125
  :param str public_key_type: The output format of the public key requested. TYPE_X509_PEM_FILE is the default output format.
126
126
  """
@@ -161,7 +161,7 @@ def get_account_key_output(name: Optional[pulumi.Input[str]] = None,
161
161
  :param str name: The name of the service account key. This must have format
162
162
  `projects/{PROJECT_ID}/serviceAccounts/{ACCOUNT}/keys/{KEYID}`, where `{ACCOUNT}`
163
163
  is the email address or unique id of the service account.
164
- :param str project: The ID of the project that the service account will be created in.
164
+ :param str project: The ID of the project that the service account is present in.
165
165
  Defaults to the provider project configuration.
166
166
  :param str public_key_type: The output format of the public key requested. TYPE_X509_PEM_FILE is the default output format.
167
167
  """
@@ -322,7 +322,7 @@ def get_bucket(name: Optional[str] = None,
322
322
 
323
323
 
324
324
  :param str name: The name of the bucket.
325
- :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. If no value is supplied in the configuration or through provider defaults then the data source will use the Compute API to find the project id that corresponds to the project number returned from the Storage API. Supplying a value for `project` doesn't influence retrieving data about the bucket but it can be used to prevent use of the Compute API. If you do provide a `project` value ensure that it is the correct value for that bucket; the data source will not check that the project id and project number match.
325
+ :param str project: The ID of the project in which the resource belongs. If it is not provided then the data source will use the Compute API to find the project id that corresponds to the project number returned from the Storage API, and if no Compute API permissions are available or if the Compute API is disabled it defaults to the provider value. Supplying a value for `project` doesn't influence retrieving data about the bucket but it can be used to prevent use of the Compute API. If you do provide a `project` value ensure that it is the correct value for that bucket; the data source will not check that the project id and project number match.
326
326
  """
327
327
  __args__ = dict()
328
328
  __args__['name'] = name
@@ -380,7 +380,7 @@ def get_bucket_output(name: Optional[pulumi.Input[str]] = None,
380
380
 
381
381
 
382
382
  :param str name: The name of the bucket.
383
- :param str project: The ID of the project in which the resource belongs. If it is not provided, the provider project is used. If no value is supplied in the configuration or through provider defaults then the data source will use the Compute API to find the project id that corresponds to the project number returned from the Storage API. Supplying a value for `project` doesn't influence retrieving data about the bucket but it can be used to prevent use of the Compute API. If you do provide a `project` value ensure that it is the correct value for that bucket; the data source will not check that the project id and project number match.
383
+ :param str project: The ID of the project in which the resource belongs. If it is not provided then the data source will use the Compute API to find the project id that corresponds to the project number returned from the Storage API, and if no Compute API permissions are available or if the Compute API is disabled it defaults to the provider value. Supplying a value for `project` doesn't influence retrieving data about the bucket but it can be used to prevent use of the Compute API. If you do provide a `project` value ensure that it is the correct value for that bucket; the data source will not check that the project id and project number match.
384
384
  """
385
385
  __args__ = dict()
386
386
  __args__['name'] = name
@@ -270,7 +270,7 @@ def get_bucket_object_content(bucket: Optional[str] = None,
270
270
  and
271
271
  [API](https://cloud.google.com/storage/docs/json_api/v1/objects).
272
272
 
273
- > **Warning:** The object content will be saved in the state, and visiable to everyone who has access to the state file.
273
+ > **Warning:** The object content will be saved in the state, and visible to everyone who has access to the state file.
274
274
 
275
275
  ## Example Usage
276
276
 
@@ -332,7 +332,7 @@ def get_bucket_object_content_output(bucket: Optional[pulumi.Input[str]] = None,
332
332
  and
333
333
  [API](https://cloud.google.com/storage/docs/json_api/v1/objects).
334
334
 
335
- > **Warning:** The object content will be saved in the state, and visiable to everyone who has access to the state file.
335
+ > **Warning:** The object content will be saved in the state, and visible to everyone who has access to the state file.
336
336
 
337
337
  ## Example Usage
338
338
 
@@ -9,6 +9,7 @@ from .get_tensorflow_versions import *
9
9
  from .get_v2_accelerator_types import *
10
10
  from .get_v2_runtime_versions import *
11
11
  from .node import *
12
+ from .v2_queued_resource import *
12
13
  from .v2_vm import *
13
14
  from ._inputs import *
14
15
  from . import outputs
pulumi_gcp/tpu/_inputs.py CHANGED
@@ -19,6 +19,12 @@ __all__ = [
19
19
  'NodeNetworkEndpointArgsDict',
20
20
  'NodeSchedulingConfigArgs',
21
21
  'NodeSchedulingConfigArgsDict',
22
+ 'V2QueuedResourceTpuArgs',
23
+ 'V2QueuedResourceTpuArgsDict',
24
+ 'V2QueuedResourceTpuNodeSpecArgs',
25
+ 'V2QueuedResourceTpuNodeSpecArgsDict',
26
+ 'V2QueuedResourceTpuNodeSpecNodeArgs',
27
+ 'V2QueuedResourceTpuNodeSpecNodeArgsDict',
22
28
  'V2VmAcceleratorConfigArgs',
23
29
  'V2VmAcceleratorConfigArgsDict',
24
30
  'V2VmDataDiskArgs',
@@ -130,6 +136,185 @@ class NodeSchedulingConfigArgs:
130
136
  pulumi.set(self, "preemptible", value)
131
137
 
132
138
 
139
+ if not MYPY:
140
+ class V2QueuedResourceTpuArgsDict(TypedDict):
141
+ node_specs: NotRequired[pulumi.Input[Sequence[pulumi.Input['V2QueuedResourceTpuNodeSpecArgsDict']]]]
142
+ """
143
+ The TPU node(s) being requested.
144
+ Structure is documented below.
145
+ """
146
+ elif False:
147
+ V2QueuedResourceTpuArgsDict: TypeAlias = Mapping[str, Any]
148
+
149
+ @pulumi.input_type
150
+ class V2QueuedResourceTpuArgs:
151
+ def __init__(__self__, *,
152
+ node_specs: Optional[pulumi.Input[Sequence[pulumi.Input['V2QueuedResourceTpuNodeSpecArgs']]]] = None):
153
+ """
154
+ :param pulumi.Input[Sequence[pulumi.Input['V2QueuedResourceTpuNodeSpecArgs']]] node_specs: The TPU node(s) being requested.
155
+ Structure is documented below.
156
+ """
157
+ if node_specs is not None:
158
+ pulumi.set(__self__, "node_specs", node_specs)
159
+
160
+ @property
161
+ @pulumi.getter(name="nodeSpecs")
162
+ def node_specs(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['V2QueuedResourceTpuNodeSpecArgs']]]]:
163
+ """
164
+ The TPU node(s) being requested.
165
+ Structure is documented below.
166
+ """
167
+ return pulumi.get(self, "node_specs")
168
+
169
+ @node_specs.setter
170
+ def node_specs(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['V2QueuedResourceTpuNodeSpecArgs']]]]):
171
+ pulumi.set(self, "node_specs", value)
172
+
173
+
174
+ if not MYPY:
175
+ class V2QueuedResourceTpuNodeSpecArgsDict(TypedDict):
176
+ node: pulumi.Input['V2QueuedResourceTpuNodeSpecNodeArgsDict']
177
+ """
178
+ The node.
179
+ Structure is documented below.
180
+ """
181
+ parent: pulumi.Input[str]
182
+ """
183
+ The parent resource name.
184
+ """
185
+ node_id: NotRequired[pulumi.Input[str]]
186
+ """
187
+ Unqualified node identifier used to identify the node in the project once provisioned.
188
+ """
189
+ elif False:
190
+ V2QueuedResourceTpuNodeSpecArgsDict: TypeAlias = Mapping[str, Any]
191
+
192
+ @pulumi.input_type
193
+ class V2QueuedResourceTpuNodeSpecArgs:
194
+ def __init__(__self__, *,
195
+ node: pulumi.Input['V2QueuedResourceTpuNodeSpecNodeArgs'],
196
+ parent: pulumi.Input[str],
197
+ node_id: Optional[pulumi.Input[str]] = None):
198
+ """
199
+ :param pulumi.Input['V2QueuedResourceTpuNodeSpecNodeArgs'] node: The node.
200
+ Structure is documented below.
201
+ :param pulumi.Input[str] parent: The parent resource name.
202
+ :param pulumi.Input[str] node_id: Unqualified node identifier used to identify the node in the project once provisioned.
203
+ """
204
+ pulumi.set(__self__, "node", node)
205
+ pulumi.set(__self__, "parent", parent)
206
+ if node_id is not None:
207
+ pulumi.set(__self__, "node_id", node_id)
208
+
209
+ @property
210
+ @pulumi.getter
211
+ def node(self) -> pulumi.Input['V2QueuedResourceTpuNodeSpecNodeArgs']:
212
+ """
213
+ The node.
214
+ Structure is documented below.
215
+ """
216
+ return pulumi.get(self, "node")
217
+
218
+ @node.setter
219
+ def node(self, value: pulumi.Input['V2QueuedResourceTpuNodeSpecNodeArgs']):
220
+ pulumi.set(self, "node", value)
221
+
222
+ @property
223
+ @pulumi.getter
224
+ def parent(self) -> pulumi.Input[str]:
225
+ """
226
+ The parent resource name.
227
+ """
228
+ return pulumi.get(self, "parent")
229
+
230
+ @parent.setter
231
+ def parent(self, value: pulumi.Input[str]):
232
+ pulumi.set(self, "parent", value)
233
+
234
+ @property
235
+ @pulumi.getter(name="nodeId")
236
+ def node_id(self) -> Optional[pulumi.Input[str]]:
237
+ """
238
+ Unqualified node identifier used to identify the node in the project once provisioned.
239
+ """
240
+ return pulumi.get(self, "node_id")
241
+
242
+ @node_id.setter
243
+ def node_id(self, value: Optional[pulumi.Input[str]]):
244
+ pulumi.set(self, "node_id", value)
245
+
246
+
247
+ if not MYPY:
248
+ class V2QueuedResourceTpuNodeSpecNodeArgsDict(TypedDict):
249
+ runtime_version: pulumi.Input[str]
250
+ """
251
+ Runtime version for the TPU.
252
+ """
253
+ accelerator_type: NotRequired[pulumi.Input[str]]
254
+ """
255
+ TPU accelerator type for the TPU. If not specified, this defaults to 'v2-8'.
256
+ """
257
+ description: NotRequired[pulumi.Input[str]]
258
+ """
259
+ Text description of the TPU.
260
+ """
261
+ elif False:
262
+ V2QueuedResourceTpuNodeSpecNodeArgsDict: TypeAlias = Mapping[str, Any]
263
+
264
+ @pulumi.input_type
265
+ class V2QueuedResourceTpuNodeSpecNodeArgs:
266
+ def __init__(__self__, *,
267
+ runtime_version: pulumi.Input[str],
268
+ accelerator_type: Optional[pulumi.Input[str]] = None,
269
+ description: Optional[pulumi.Input[str]] = None):
270
+ """
271
+ :param pulumi.Input[str] runtime_version: Runtime version for the TPU.
272
+ :param pulumi.Input[str] accelerator_type: TPU accelerator type for the TPU. If not specified, this defaults to 'v2-8'.
273
+ :param pulumi.Input[str] description: Text description of the TPU.
274
+ """
275
+ pulumi.set(__self__, "runtime_version", runtime_version)
276
+ if accelerator_type is not None:
277
+ pulumi.set(__self__, "accelerator_type", accelerator_type)
278
+ if description is not None:
279
+ pulumi.set(__self__, "description", description)
280
+
281
+ @property
282
+ @pulumi.getter(name="runtimeVersion")
283
+ def runtime_version(self) -> pulumi.Input[str]:
284
+ """
285
+ Runtime version for the TPU.
286
+ """
287
+ return pulumi.get(self, "runtime_version")
288
+
289
+ @runtime_version.setter
290
+ def runtime_version(self, value: pulumi.Input[str]):
291
+ pulumi.set(self, "runtime_version", value)
292
+
293
+ @property
294
+ @pulumi.getter(name="acceleratorType")
295
+ def accelerator_type(self) -> Optional[pulumi.Input[str]]:
296
+ """
297
+ TPU accelerator type for the TPU. If not specified, this defaults to 'v2-8'.
298
+ """
299
+ return pulumi.get(self, "accelerator_type")
300
+
301
+ @accelerator_type.setter
302
+ def accelerator_type(self, value: Optional[pulumi.Input[str]]):
303
+ pulumi.set(self, "accelerator_type", value)
304
+
305
+ @property
306
+ @pulumi.getter
307
+ def description(self) -> Optional[pulumi.Input[str]]:
308
+ """
309
+ Text description of the TPU.
310
+ """
311
+ return pulumi.get(self, "description")
312
+
313
+ @description.setter
314
+ def description(self, value: Optional[pulumi.Input[str]]):
315
+ pulumi.set(self, "description", value)
316
+
317
+
133
318
  if not MYPY:
134
319
  class V2VmAcceleratorConfigArgsDict(TypedDict):
135
320
  topology: pulumi.Input[str]
@@ -138,8 +323,7 @@ if not MYPY:
138
323
  """
139
324
  type: pulumi.Input[str]
140
325
  """
141
- Type of TPU.
142
- Possible values are: `V2`, `V3`, `V4`, `V5P`.
326
+ Type of TPU. Please select one of the allowed types: https://cloud.google.com/tpu/docs/reference/rest/v2/AcceleratorConfig#Type
143
327
  """
144
328
  elif False:
145
329
  V2VmAcceleratorConfigArgsDict: TypeAlias = Mapping[str, Any]
@@ -151,8 +335,7 @@ class V2VmAcceleratorConfigArgs:
151
335
  type: pulumi.Input[str]):
152
336
  """
153
337
  :param pulumi.Input[str] topology: Topology of TPU in chips.
154
- :param pulumi.Input[str] type: Type of TPU.
155
- Possible values are: `V2`, `V3`, `V4`, `V5P`.
338
+ :param pulumi.Input[str] type: Type of TPU. Please select one of the allowed types: https://cloud.google.com/tpu/docs/reference/rest/v2/AcceleratorConfig#Type
156
339
  """
157
340
  pulumi.set(__self__, "topology", topology)
158
341
  pulumi.set(__self__, "type", type)
@@ -173,8 +356,7 @@ class V2VmAcceleratorConfigArgs:
173
356
  @pulumi.getter
174
357
  def type(self) -> pulumi.Input[str]:
175
358
  """
176
- Type of TPU.
177
- Possible values are: `V2`, `V3`, `V4`, `V5P`.
359
+ Type of TPU. Please select one of the allowed types: https://cloud.google.com/tpu/docs/reference/rest/v2/AcceleratorConfig#Type
178
360
  """
179
361
  return pulumi.get(self, "type")
180
362