pulumi-gcp 8.28.0a1745598508__py3-none-any.whl → 8.29.0a1746076904__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 (78) hide show
  1. pulumi_gcp/__init__.py +88 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +399 -0
  3. pulumi_gcp/accesscontextmanager/gcp_user_access_binding.py +54 -0
  4. pulumi_gcp/accesscontextmanager/outputs.py +369 -0
  5. pulumi_gcp/alloydb/_inputs.py +47 -1
  6. pulumi_gcp/alloydb/outputs.py +61 -3
  7. pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +8 -2
  8. pulumi_gcp/applicationintegration/client.py +34 -12
  9. pulumi_gcp/artifactregistry/outputs.py +2 -2
  10. pulumi_gcp/certificateauthority/_inputs.py +32 -0
  11. pulumi_gcp/certificateauthority/ca_pool.py +2 -0
  12. pulumi_gcp/certificateauthority/outputs.py +22 -0
  13. pulumi_gcp/clouddeploy/_inputs.py +0 -6
  14. pulumi_gcp/clouddeploy/delivery_pipeline.py +84 -77
  15. pulumi_gcp/clouddeploy/outputs.py +0 -4
  16. pulumi_gcp/cloudrunv2/_inputs.py +3 -3
  17. pulumi_gcp/cloudrunv2/outputs.py +4 -4
  18. pulumi_gcp/colab/runtime_template.py +3 -3
  19. pulumi_gcp/compute/__init__.py +7 -0
  20. pulumi_gcp/compute/_inputs.py +809 -1
  21. pulumi_gcp/compute/backend_service.py +89 -0
  22. pulumi_gcp/compute/firewall_policy_with_rules.py +2 -2
  23. pulumi_gcp/compute/get_backend_service.py +12 -1
  24. pulumi_gcp/compute/get_storage_pool_iam_policy.py +183 -0
  25. pulumi_gcp/compute/get_storage_pool_types.py +268 -0
  26. pulumi_gcp/compute/outputs.py +743 -3
  27. pulumi_gcp/compute/resource_policy_attachment.py +476 -0
  28. pulumi_gcp/compute/storage_pool.py +1045 -0
  29. pulumi_gcp/compute/storage_pool_iam_binding.py +1088 -0
  30. pulumi_gcp/compute/storage_pool_iam_member.py +1088 -0
  31. pulumi_gcp/compute/storage_pool_iam_policy.py +907 -0
  32. pulumi_gcp/config/__init__.pyi +2 -0
  33. pulumi_gcp/config/vars.py +4 -0
  34. pulumi_gcp/container/_inputs.py +63 -3
  35. pulumi_gcp/container/outputs.py +70 -6
  36. pulumi_gcp/dataproc/get_metastore_service.py +12 -1
  37. pulumi_gcp/dataproc/metastore_service.py +61 -0
  38. pulumi_gcp/datastream/connection_profile.py +40 -0
  39. pulumi_gcp/discoveryengine/_inputs.py +38 -0
  40. pulumi_gcp/discoveryengine/chat_engine.py +6 -4
  41. pulumi_gcp/discoveryengine/outputs.py +26 -0
  42. pulumi_gcp/firebaserules/_inputs.py +6 -6
  43. pulumi_gcp/firebaserules/outputs.py +4 -4
  44. pulumi_gcp/gkebackup/__init__.py +2 -0
  45. pulumi_gcp/gkebackup/backup_channel.py +737 -0
  46. pulumi_gcp/gkebackup/restore_channel.py +737 -0
  47. pulumi_gcp/gkehub/_inputs.py +208 -0
  48. pulumi_gcp/gkehub/outputs.py +171 -1
  49. pulumi_gcp/healthcare/pipeline_job.py +2 -2
  50. pulumi_gcp/iap/__init__.py +4 -0
  51. pulumi_gcp/iap/_inputs.py +130 -0
  52. pulumi_gcp/iap/get_web_cloud_run_service_iam_policy.py +183 -0
  53. pulumi_gcp/iap/outputs.py +76 -0
  54. pulumi_gcp/iap/web_cloud_run_service_iam_binding.py +1089 -0
  55. pulumi_gcp/iap/web_cloud_run_service_iam_member.py +1089 -0
  56. pulumi_gcp/iap/web_cloud_run_service_iam_policy.py +908 -0
  57. pulumi_gcp/kms/key_ring_import_job.py +7 -7
  58. pulumi_gcp/managedkafka/connect_cluster.py +8 -4
  59. pulumi_gcp/managedkafka/connector.py +8 -4
  60. pulumi_gcp/monitoring/uptime_check_config.py +49 -0
  61. pulumi_gcp/networkconnectivity/internal_range.py +82 -0
  62. pulumi_gcp/projects/_inputs.py +0 -6
  63. pulumi_gcp/projects/api_key.py +28 -0
  64. pulumi_gcp/projects/outputs.py +0 -4
  65. pulumi_gcp/provider.py +20 -0
  66. pulumi_gcp/pulumi-plugin.json +1 -1
  67. pulumi_gcp/redis/get_instance.py +12 -1
  68. pulumi_gcp/redis/instance.py +61 -0
  69. pulumi_gcp/sql/_inputs.py +86 -6
  70. pulumi_gcp/sql/outputs.py +156 -12
  71. pulumi_gcp/storage/__init__.py +1 -0
  72. pulumi_gcp/storage/_inputs.py +457 -0
  73. pulumi_gcp/storage/batch_operations_job.py +776 -0
  74. pulumi_gcp/storage/outputs.py +403 -0
  75. {pulumi_gcp-8.28.0a1745598508.dist-info → pulumi_gcp-8.29.0a1746076904.dist-info}/METADATA +1 -1
  76. {pulumi_gcp-8.28.0a1745598508.dist-info → pulumi_gcp-8.29.0a1746076904.dist-info}/RECORD +78 -64
  77. {pulumi_gcp-8.28.0a1745598508.dist-info → pulumi_gcp-8.29.0a1746076904.dist-info}/WHEEL +1 -1
  78. {pulumi_gcp-8.28.0a1745598508.dist-info → pulumi_gcp-8.29.0a1746076904.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,907 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import builtins
6
+ import copy
7
+ import warnings
8
+ import sys
9
+ import pulumi
10
+ import pulumi.runtime
11
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
12
+ if sys.version_info >= (3, 11):
13
+ from typing import NotRequired, TypedDict, TypeAlias
14
+ else:
15
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
16
+ from .. import _utilities
17
+
18
+ __all__ = ['StoragePoolIamPolicyArgs', 'StoragePoolIamPolicy']
19
+
20
+ @pulumi.input_type
21
+ class StoragePoolIamPolicyArgs:
22
+ def __init__(__self__, *,
23
+ policy_data: pulumi.Input[builtins.str],
24
+ name: Optional[pulumi.Input[builtins.str]] = None,
25
+ project: Optional[pulumi.Input[builtins.str]] = None,
26
+ zone: Optional[pulumi.Input[builtins.str]] = None):
27
+ """
28
+ The set of arguments for constructing a StoragePoolIamPolicy resource.
29
+ :param pulumi.Input[builtins.str] policy_data: The policy data generated by
30
+ a `organizations_get_iam_policy` data source.
31
+ :param pulumi.Input[builtins.str] name: Used to find the parent resource to bind the IAM policy to
32
+ :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
33
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
34
+ :param pulumi.Input[builtins.str] zone: A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
35
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
36
+ zone is specified, it is taken from the provider configuration.
37
+ """
38
+ pulumi.set(__self__, "policy_data", policy_data)
39
+ if name is not None:
40
+ pulumi.set(__self__, "name", name)
41
+ if project is not None:
42
+ pulumi.set(__self__, "project", project)
43
+ if zone is not None:
44
+ pulumi.set(__self__, "zone", zone)
45
+
46
+ @property
47
+ @pulumi.getter(name="policyData")
48
+ def policy_data(self) -> pulumi.Input[builtins.str]:
49
+ """
50
+ The policy data generated by
51
+ a `organizations_get_iam_policy` data source.
52
+ """
53
+ return pulumi.get(self, "policy_data")
54
+
55
+ @policy_data.setter
56
+ def policy_data(self, value: pulumi.Input[builtins.str]):
57
+ pulumi.set(self, "policy_data", value)
58
+
59
+ @property
60
+ @pulumi.getter
61
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
62
+ """
63
+ Used to find the parent resource to bind the IAM policy to
64
+ """
65
+ return pulumi.get(self, "name")
66
+
67
+ @name.setter
68
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
69
+ pulumi.set(self, "name", value)
70
+
71
+ @property
72
+ @pulumi.getter
73
+ def project(self) -> Optional[pulumi.Input[builtins.str]]:
74
+ """
75
+ The ID of the project in which the resource belongs.
76
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
77
+ """
78
+ return pulumi.get(self, "project")
79
+
80
+ @project.setter
81
+ def project(self, value: Optional[pulumi.Input[builtins.str]]):
82
+ pulumi.set(self, "project", value)
83
+
84
+ @property
85
+ @pulumi.getter
86
+ def zone(self) -> Optional[pulumi.Input[builtins.str]]:
87
+ """
88
+ A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
89
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
90
+ zone is specified, it is taken from the provider configuration.
91
+ """
92
+ return pulumi.get(self, "zone")
93
+
94
+ @zone.setter
95
+ def zone(self, value: Optional[pulumi.Input[builtins.str]]):
96
+ pulumi.set(self, "zone", value)
97
+
98
+
99
+ @pulumi.input_type
100
+ class _StoragePoolIamPolicyState:
101
+ def __init__(__self__, *,
102
+ etag: Optional[pulumi.Input[builtins.str]] = None,
103
+ name: Optional[pulumi.Input[builtins.str]] = None,
104
+ policy_data: Optional[pulumi.Input[builtins.str]] = None,
105
+ project: Optional[pulumi.Input[builtins.str]] = None,
106
+ zone: Optional[pulumi.Input[builtins.str]] = None):
107
+ """
108
+ Input properties used for looking up and filtering StoragePoolIamPolicy resources.
109
+ :param pulumi.Input[builtins.str] etag: (Computed) The etag of the IAM policy.
110
+ :param pulumi.Input[builtins.str] name: Used to find the parent resource to bind the IAM policy to
111
+ :param pulumi.Input[builtins.str] policy_data: The policy data generated by
112
+ a `organizations_get_iam_policy` data source.
113
+ :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
114
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
115
+ :param pulumi.Input[builtins.str] zone: A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
116
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
117
+ zone is specified, it is taken from the provider configuration.
118
+ """
119
+ if etag is not None:
120
+ pulumi.set(__self__, "etag", etag)
121
+ if name is not None:
122
+ pulumi.set(__self__, "name", name)
123
+ if policy_data is not None:
124
+ pulumi.set(__self__, "policy_data", policy_data)
125
+ if project is not None:
126
+ pulumi.set(__self__, "project", project)
127
+ if zone is not None:
128
+ pulumi.set(__self__, "zone", zone)
129
+
130
+ @property
131
+ @pulumi.getter
132
+ def etag(self) -> Optional[pulumi.Input[builtins.str]]:
133
+ """
134
+ (Computed) The etag of the IAM policy.
135
+ """
136
+ return pulumi.get(self, "etag")
137
+
138
+ @etag.setter
139
+ def etag(self, value: Optional[pulumi.Input[builtins.str]]):
140
+ pulumi.set(self, "etag", value)
141
+
142
+ @property
143
+ @pulumi.getter
144
+ def name(self) -> Optional[pulumi.Input[builtins.str]]:
145
+ """
146
+ Used to find the parent resource to bind the IAM policy to
147
+ """
148
+ return pulumi.get(self, "name")
149
+
150
+ @name.setter
151
+ def name(self, value: Optional[pulumi.Input[builtins.str]]):
152
+ pulumi.set(self, "name", value)
153
+
154
+ @property
155
+ @pulumi.getter(name="policyData")
156
+ def policy_data(self) -> Optional[pulumi.Input[builtins.str]]:
157
+ """
158
+ The policy data generated by
159
+ a `organizations_get_iam_policy` data source.
160
+ """
161
+ return pulumi.get(self, "policy_data")
162
+
163
+ @policy_data.setter
164
+ def policy_data(self, value: Optional[pulumi.Input[builtins.str]]):
165
+ pulumi.set(self, "policy_data", value)
166
+
167
+ @property
168
+ @pulumi.getter
169
+ def project(self) -> Optional[pulumi.Input[builtins.str]]:
170
+ """
171
+ The ID of the project in which the resource belongs.
172
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
173
+ """
174
+ return pulumi.get(self, "project")
175
+
176
+ @project.setter
177
+ def project(self, value: Optional[pulumi.Input[builtins.str]]):
178
+ pulumi.set(self, "project", value)
179
+
180
+ @property
181
+ @pulumi.getter
182
+ def zone(self) -> Optional[pulumi.Input[builtins.str]]:
183
+ """
184
+ A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
185
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
186
+ zone is specified, it is taken from the provider configuration.
187
+ """
188
+ return pulumi.get(self, "zone")
189
+
190
+ @zone.setter
191
+ def zone(self, value: Optional[pulumi.Input[builtins.str]]):
192
+ pulumi.set(self, "zone", value)
193
+
194
+
195
+ class StoragePoolIamPolicy(pulumi.CustomResource):
196
+ @overload
197
+ def __init__(__self__,
198
+ resource_name: str,
199
+ opts: Optional[pulumi.ResourceOptions] = None,
200
+ name: Optional[pulumi.Input[builtins.str]] = None,
201
+ policy_data: Optional[pulumi.Input[builtins.str]] = None,
202
+ project: Optional[pulumi.Input[builtins.str]] = None,
203
+ zone: Optional[pulumi.Input[builtins.str]] = None,
204
+ __props__=None):
205
+ """
206
+ Three different resources help you manage your IAM policy for Compute Engine StoragePool. Each of these resources serves a different use case:
207
+
208
+ * `compute.StoragePoolIamPolicy`: Authoritative. Sets the IAM policy for the storagepool and replaces any existing policy already attached.
209
+ * `compute.StoragePoolIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the storagepool are preserved.
210
+ * `compute.StoragePoolIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the storagepool are preserved.
211
+
212
+ A data source can be used to retrieve policy data in advent you do not need creation
213
+
214
+ * `compute.StoragePoolIamPolicy`: Retrieves the IAM policy for the storagepool
215
+
216
+ > **Note:** `compute.StoragePoolIamPolicy` **cannot** be used in conjunction with `compute.StoragePoolIamBinding` and `compute.StoragePoolIamMember` or they will fight over what your policy should be.
217
+
218
+ > **Note:** `compute.StoragePoolIamBinding` resources **can be** used in conjunction with `compute.StoragePoolIamMember` resources **only if** they do not grant privilege to the same role.
219
+
220
+ > **Note:** This resource supports IAM Conditions but they have some known limitations which can be found [here](https://cloud.google.com/iam/docs/conditions-overview#limitations). Please review this article if you are having issues with IAM Conditions.
221
+
222
+ ## compute.StoragePoolIamPolicy
223
+
224
+ ```python
225
+ import pulumi
226
+ import pulumi_gcp as gcp
227
+
228
+ admin = gcp.organizations.get_iam_policy(bindings=[{
229
+ "role": "roles/compute.viewer",
230
+ "members": ["user:jane@example.com"],
231
+ }])
232
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
233
+ project=test_storage_pool_basic["project"],
234
+ zone=test_storage_pool_basic["zone"],
235
+ name=test_storage_pool_basic["name"],
236
+ policy_data=admin.policy_data)
237
+ ```
238
+
239
+ With IAM Conditions:
240
+
241
+ ```python
242
+ import pulumi
243
+ import pulumi_gcp as gcp
244
+
245
+ admin = gcp.organizations.get_iam_policy(bindings=[{
246
+ "role": "roles/compute.viewer",
247
+ "members": ["user:jane@example.com"],
248
+ "condition": {
249
+ "title": "expires_after_2019_12_31",
250
+ "description": "Expiring at midnight of 2019-12-31",
251
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
252
+ },
253
+ }])
254
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
255
+ project=test_storage_pool_basic["project"],
256
+ zone=test_storage_pool_basic["zone"],
257
+ name=test_storage_pool_basic["name"],
258
+ policy_data=admin.policy_data)
259
+ ```
260
+ ## compute.StoragePoolIamBinding
261
+
262
+ ```python
263
+ import pulumi
264
+ import pulumi_gcp as gcp
265
+
266
+ binding = gcp.compute.StoragePoolIamBinding("binding",
267
+ project=test_storage_pool_basic["project"],
268
+ zone=test_storage_pool_basic["zone"],
269
+ name=test_storage_pool_basic["name"],
270
+ role="roles/compute.viewer",
271
+ members=["user:jane@example.com"])
272
+ ```
273
+
274
+ With IAM Conditions:
275
+
276
+ ```python
277
+ import pulumi
278
+ import pulumi_gcp as gcp
279
+
280
+ binding = gcp.compute.StoragePoolIamBinding("binding",
281
+ project=test_storage_pool_basic["project"],
282
+ zone=test_storage_pool_basic["zone"],
283
+ name=test_storage_pool_basic["name"],
284
+ role="roles/compute.viewer",
285
+ members=["user:jane@example.com"],
286
+ condition={
287
+ "title": "expires_after_2019_12_31",
288
+ "description": "Expiring at midnight of 2019-12-31",
289
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
290
+ })
291
+ ```
292
+ ## compute.StoragePoolIamMember
293
+
294
+ ```python
295
+ import pulumi
296
+ import pulumi_gcp as gcp
297
+
298
+ member = gcp.compute.StoragePoolIamMember("member",
299
+ project=test_storage_pool_basic["project"],
300
+ zone=test_storage_pool_basic["zone"],
301
+ name=test_storage_pool_basic["name"],
302
+ role="roles/compute.viewer",
303
+ member="user:jane@example.com")
304
+ ```
305
+
306
+ With IAM Conditions:
307
+
308
+ ```python
309
+ import pulumi
310
+ import pulumi_gcp as gcp
311
+
312
+ member = gcp.compute.StoragePoolIamMember("member",
313
+ project=test_storage_pool_basic["project"],
314
+ zone=test_storage_pool_basic["zone"],
315
+ name=test_storage_pool_basic["name"],
316
+ role="roles/compute.viewer",
317
+ member="user:jane@example.com",
318
+ condition={
319
+ "title": "expires_after_2019_12_31",
320
+ "description": "Expiring at midnight of 2019-12-31",
321
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
322
+ })
323
+ ```
324
+
325
+ ## This resource supports User Project Overrides.
326
+
327
+ -
328
+
329
+ # IAM policy for Compute Engine StoragePool
330
+ Three different resources help you manage your IAM policy for Compute Engine StoragePool. Each of these resources serves a different use case:
331
+
332
+ * `compute.StoragePoolIamPolicy`: Authoritative. Sets the IAM policy for the storagepool and replaces any existing policy already attached.
333
+ * `compute.StoragePoolIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the storagepool are preserved.
334
+ * `compute.StoragePoolIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the storagepool are preserved.
335
+
336
+ A data source can be used to retrieve policy data in advent you do not need creation
337
+
338
+ * `compute.StoragePoolIamPolicy`: Retrieves the IAM policy for the storagepool
339
+
340
+ > **Note:** `compute.StoragePoolIamPolicy` **cannot** be used in conjunction with `compute.StoragePoolIamBinding` and `compute.StoragePoolIamMember` or they will fight over what your policy should be.
341
+
342
+ > **Note:** `compute.StoragePoolIamBinding` resources **can be** used in conjunction with `compute.StoragePoolIamMember` resources **only if** they do not grant privilege to the same role.
343
+
344
+ > **Note:** This resource supports IAM Conditions but they have some known limitations which can be found [here](https://cloud.google.com/iam/docs/conditions-overview#limitations). Please review this article if you are having issues with IAM Conditions.
345
+
346
+ ## compute.StoragePoolIamPolicy
347
+
348
+ ```python
349
+ import pulumi
350
+ import pulumi_gcp as gcp
351
+
352
+ admin = gcp.organizations.get_iam_policy(bindings=[{
353
+ "role": "roles/compute.viewer",
354
+ "members": ["user:jane@example.com"],
355
+ }])
356
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
357
+ project=test_storage_pool_basic["project"],
358
+ zone=test_storage_pool_basic["zone"],
359
+ name=test_storage_pool_basic["name"],
360
+ policy_data=admin.policy_data)
361
+ ```
362
+
363
+ With IAM Conditions:
364
+
365
+ ```python
366
+ import pulumi
367
+ import pulumi_gcp as gcp
368
+
369
+ admin = gcp.organizations.get_iam_policy(bindings=[{
370
+ "role": "roles/compute.viewer",
371
+ "members": ["user:jane@example.com"],
372
+ "condition": {
373
+ "title": "expires_after_2019_12_31",
374
+ "description": "Expiring at midnight of 2019-12-31",
375
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
376
+ },
377
+ }])
378
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
379
+ project=test_storage_pool_basic["project"],
380
+ zone=test_storage_pool_basic["zone"],
381
+ name=test_storage_pool_basic["name"],
382
+ policy_data=admin.policy_data)
383
+ ```
384
+ ## compute.StoragePoolIamBinding
385
+
386
+ ```python
387
+ import pulumi
388
+ import pulumi_gcp as gcp
389
+
390
+ binding = gcp.compute.StoragePoolIamBinding("binding",
391
+ project=test_storage_pool_basic["project"],
392
+ zone=test_storage_pool_basic["zone"],
393
+ name=test_storage_pool_basic["name"],
394
+ role="roles/compute.viewer",
395
+ members=["user:jane@example.com"])
396
+ ```
397
+
398
+ With IAM Conditions:
399
+
400
+ ```python
401
+ import pulumi
402
+ import pulumi_gcp as gcp
403
+
404
+ binding = gcp.compute.StoragePoolIamBinding("binding",
405
+ project=test_storage_pool_basic["project"],
406
+ zone=test_storage_pool_basic["zone"],
407
+ name=test_storage_pool_basic["name"],
408
+ role="roles/compute.viewer",
409
+ members=["user:jane@example.com"],
410
+ condition={
411
+ "title": "expires_after_2019_12_31",
412
+ "description": "Expiring at midnight of 2019-12-31",
413
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
414
+ })
415
+ ```
416
+ ## compute.StoragePoolIamMember
417
+
418
+ ```python
419
+ import pulumi
420
+ import pulumi_gcp as gcp
421
+
422
+ member = gcp.compute.StoragePoolIamMember("member",
423
+ project=test_storage_pool_basic["project"],
424
+ zone=test_storage_pool_basic["zone"],
425
+ name=test_storage_pool_basic["name"],
426
+ role="roles/compute.viewer",
427
+ member="user:jane@example.com")
428
+ ```
429
+
430
+ With IAM Conditions:
431
+
432
+ ```python
433
+ import pulumi
434
+ import pulumi_gcp as gcp
435
+
436
+ member = gcp.compute.StoragePoolIamMember("member",
437
+ project=test_storage_pool_basic["project"],
438
+ zone=test_storage_pool_basic["zone"],
439
+ name=test_storage_pool_basic["name"],
440
+ role="roles/compute.viewer",
441
+ member="user:jane@example.com",
442
+ condition={
443
+ "title": "expires_after_2019_12_31",
444
+ "description": "Expiring at midnight of 2019-12-31",
445
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
446
+ })
447
+ ```
448
+
449
+ ## Import
450
+
451
+ For all import syntaxes, the "resource in question" can take any of the following forms:
452
+
453
+ * projects/{{project}}/zones/{{zone}}/storagePools/{{name}}
454
+
455
+ * {{project}}/{{zone}}/{{name}}
456
+
457
+ * {{zone}}/{{name}}
458
+
459
+ * {{name}}
460
+
461
+ Any variables not passed in the import command will be taken from the provider configuration.
462
+
463
+ Compute Engine storagepool IAM resources can be imported using the resource identifiers, role, and member.
464
+
465
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
466
+
467
+ ```sh
468
+ $ pulumi import gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy editor "projects/{{project}}/zones/{{zone}}/storagePools/{{storage_pool}} roles/compute.viewer user:jane@example.com"
469
+ ```
470
+
471
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
472
+
473
+ ```sh
474
+ $ pulumi import gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy editor "projects/{{project}}/zones/{{zone}}/storagePools/{{storage_pool}} roles/compute.viewer"
475
+ ```
476
+
477
+ IAM policy imports use the identifier of the resource in question, e.g.
478
+
479
+ ```sh
480
+ $ pulumi import gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy editor projects/{{project}}/zones/{{zone}}/storagePools/{{storage_pool}}
481
+ ```
482
+
483
+ -> **Custom Roles** If you're importing a IAM resource with a custom role, make sure to use the
484
+
485
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
486
+
487
+ :param str resource_name: The name of the resource.
488
+ :param pulumi.ResourceOptions opts: Options for the resource.
489
+ :param pulumi.Input[builtins.str] name: Used to find the parent resource to bind the IAM policy to
490
+ :param pulumi.Input[builtins.str] policy_data: The policy data generated by
491
+ a `organizations_get_iam_policy` data source.
492
+ :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
493
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
494
+ :param pulumi.Input[builtins.str] zone: A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
495
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
496
+ zone is specified, it is taken from the provider configuration.
497
+ """
498
+ ...
499
+ @overload
500
+ def __init__(__self__,
501
+ resource_name: str,
502
+ args: StoragePoolIamPolicyArgs,
503
+ opts: Optional[pulumi.ResourceOptions] = None):
504
+ """
505
+ Three different resources help you manage your IAM policy for Compute Engine StoragePool. Each of these resources serves a different use case:
506
+
507
+ * `compute.StoragePoolIamPolicy`: Authoritative. Sets the IAM policy for the storagepool and replaces any existing policy already attached.
508
+ * `compute.StoragePoolIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the storagepool are preserved.
509
+ * `compute.StoragePoolIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the storagepool are preserved.
510
+
511
+ A data source can be used to retrieve policy data in advent you do not need creation
512
+
513
+ * `compute.StoragePoolIamPolicy`: Retrieves the IAM policy for the storagepool
514
+
515
+ > **Note:** `compute.StoragePoolIamPolicy` **cannot** be used in conjunction with `compute.StoragePoolIamBinding` and `compute.StoragePoolIamMember` or they will fight over what your policy should be.
516
+
517
+ > **Note:** `compute.StoragePoolIamBinding` resources **can be** used in conjunction with `compute.StoragePoolIamMember` resources **only if** they do not grant privilege to the same role.
518
+
519
+ > **Note:** This resource supports IAM Conditions but they have some known limitations which can be found [here](https://cloud.google.com/iam/docs/conditions-overview#limitations). Please review this article if you are having issues with IAM Conditions.
520
+
521
+ ## compute.StoragePoolIamPolicy
522
+
523
+ ```python
524
+ import pulumi
525
+ import pulumi_gcp as gcp
526
+
527
+ admin = gcp.organizations.get_iam_policy(bindings=[{
528
+ "role": "roles/compute.viewer",
529
+ "members": ["user:jane@example.com"],
530
+ }])
531
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
532
+ project=test_storage_pool_basic["project"],
533
+ zone=test_storage_pool_basic["zone"],
534
+ name=test_storage_pool_basic["name"],
535
+ policy_data=admin.policy_data)
536
+ ```
537
+
538
+ With IAM Conditions:
539
+
540
+ ```python
541
+ import pulumi
542
+ import pulumi_gcp as gcp
543
+
544
+ admin = gcp.organizations.get_iam_policy(bindings=[{
545
+ "role": "roles/compute.viewer",
546
+ "members": ["user:jane@example.com"],
547
+ "condition": {
548
+ "title": "expires_after_2019_12_31",
549
+ "description": "Expiring at midnight of 2019-12-31",
550
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
551
+ },
552
+ }])
553
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
554
+ project=test_storage_pool_basic["project"],
555
+ zone=test_storage_pool_basic["zone"],
556
+ name=test_storage_pool_basic["name"],
557
+ policy_data=admin.policy_data)
558
+ ```
559
+ ## compute.StoragePoolIamBinding
560
+
561
+ ```python
562
+ import pulumi
563
+ import pulumi_gcp as gcp
564
+
565
+ binding = gcp.compute.StoragePoolIamBinding("binding",
566
+ project=test_storage_pool_basic["project"],
567
+ zone=test_storage_pool_basic["zone"],
568
+ name=test_storage_pool_basic["name"],
569
+ role="roles/compute.viewer",
570
+ members=["user:jane@example.com"])
571
+ ```
572
+
573
+ With IAM Conditions:
574
+
575
+ ```python
576
+ import pulumi
577
+ import pulumi_gcp as gcp
578
+
579
+ binding = gcp.compute.StoragePoolIamBinding("binding",
580
+ project=test_storage_pool_basic["project"],
581
+ zone=test_storage_pool_basic["zone"],
582
+ name=test_storage_pool_basic["name"],
583
+ role="roles/compute.viewer",
584
+ members=["user:jane@example.com"],
585
+ condition={
586
+ "title": "expires_after_2019_12_31",
587
+ "description": "Expiring at midnight of 2019-12-31",
588
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
589
+ })
590
+ ```
591
+ ## compute.StoragePoolIamMember
592
+
593
+ ```python
594
+ import pulumi
595
+ import pulumi_gcp as gcp
596
+
597
+ member = gcp.compute.StoragePoolIamMember("member",
598
+ project=test_storage_pool_basic["project"],
599
+ zone=test_storage_pool_basic["zone"],
600
+ name=test_storage_pool_basic["name"],
601
+ role="roles/compute.viewer",
602
+ member="user:jane@example.com")
603
+ ```
604
+
605
+ With IAM Conditions:
606
+
607
+ ```python
608
+ import pulumi
609
+ import pulumi_gcp as gcp
610
+
611
+ member = gcp.compute.StoragePoolIamMember("member",
612
+ project=test_storage_pool_basic["project"],
613
+ zone=test_storage_pool_basic["zone"],
614
+ name=test_storage_pool_basic["name"],
615
+ role="roles/compute.viewer",
616
+ member="user:jane@example.com",
617
+ condition={
618
+ "title": "expires_after_2019_12_31",
619
+ "description": "Expiring at midnight of 2019-12-31",
620
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
621
+ })
622
+ ```
623
+
624
+ ## This resource supports User Project Overrides.
625
+
626
+ -
627
+
628
+ # IAM policy for Compute Engine StoragePool
629
+ Three different resources help you manage your IAM policy for Compute Engine StoragePool. Each of these resources serves a different use case:
630
+
631
+ * `compute.StoragePoolIamPolicy`: Authoritative. Sets the IAM policy for the storagepool and replaces any existing policy already attached.
632
+ * `compute.StoragePoolIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the storagepool are preserved.
633
+ * `compute.StoragePoolIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the storagepool are preserved.
634
+
635
+ A data source can be used to retrieve policy data in advent you do not need creation
636
+
637
+ * `compute.StoragePoolIamPolicy`: Retrieves the IAM policy for the storagepool
638
+
639
+ > **Note:** `compute.StoragePoolIamPolicy` **cannot** be used in conjunction with `compute.StoragePoolIamBinding` and `compute.StoragePoolIamMember` or they will fight over what your policy should be.
640
+
641
+ > **Note:** `compute.StoragePoolIamBinding` resources **can be** used in conjunction with `compute.StoragePoolIamMember` resources **only if** they do not grant privilege to the same role.
642
+
643
+ > **Note:** This resource supports IAM Conditions but they have some known limitations which can be found [here](https://cloud.google.com/iam/docs/conditions-overview#limitations). Please review this article if you are having issues with IAM Conditions.
644
+
645
+ ## compute.StoragePoolIamPolicy
646
+
647
+ ```python
648
+ import pulumi
649
+ import pulumi_gcp as gcp
650
+
651
+ admin = gcp.organizations.get_iam_policy(bindings=[{
652
+ "role": "roles/compute.viewer",
653
+ "members": ["user:jane@example.com"],
654
+ }])
655
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
656
+ project=test_storage_pool_basic["project"],
657
+ zone=test_storage_pool_basic["zone"],
658
+ name=test_storage_pool_basic["name"],
659
+ policy_data=admin.policy_data)
660
+ ```
661
+
662
+ With IAM Conditions:
663
+
664
+ ```python
665
+ import pulumi
666
+ import pulumi_gcp as gcp
667
+
668
+ admin = gcp.organizations.get_iam_policy(bindings=[{
669
+ "role": "roles/compute.viewer",
670
+ "members": ["user:jane@example.com"],
671
+ "condition": {
672
+ "title": "expires_after_2019_12_31",
673
+ "description": "Expiring at midnight of 2019-12-31",
674
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
675
+ },
676
+ }])
677
+ policy = gcp.compute.StoragePoolIamPolicy("policy",
678
+ project=test_storage_pool_basic["project"],
679
+ zone=test_storage_pool_basic["zone"],
680
+ name=test_storage_pool_basic["name"],
681
+ policy_data=admin.policy_data)
682
+ ```
683
+ ## compute.StoragePoolIamBinding
684
+
685
+ ```python
686
+ import pulumi
687
+ import pulumi_gcp as gcp
688
+
689
+ binding = gcp.compute.StoragePoolIamBinding("binding",
690
+ project=test_storage_pool_basic["project"],
691
+ zone=test_storage_pool_basic["zone"],
692
+ name=test_storage_pool_basic["name"],
693
+ role="roles/compute.viewer",
694
+ members=["user:jane@example.com"])
695
+ ```
696
+
697
+ With IAM Conditions:
698
+
699
+ ```python
700
+ import pulumi
701
+ import pulumi_gcp as gcp
702
+
703
+ binding = gcp.compute.StoragePoolIamBinding("binding",
704
+ project=test_storage_pool_basic["project"],
705
+ zone=test_storage_pool_basic["zone"],
706
+ name=test_storage_pool_basic["name"],
707
+ role="roles/compute.viewer",
708
+ members=["user:jane@example.com"],
709
+ condition={
710
+ "title": "expires_after_2019_12_31",
711
+ "description": "Expiring at midnight of 2019-12-31",
712
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
713
+ })
714
+ ```
715
+ ## compute.StoragePoolIamMember
716
+
717
+ ```python
718
+ import pulumi
719
+ import pulumi_gcp as gcp
720
+
721
+ member = gcp.compute.StoragePoolIamMember("member",
722
+ project=test_storage_pool_basic["project"],
723
+ zone=test_storage_pool_basic["zone"],
724
+ name=test_storage_pool_basic["name"],
725
+ role="roles/compute.viewer",
726
+ member="user:jane@example.com")
727
+ ```
728
+
729
+ With IAM Conditions:
730
+
731
+ ```python
732
+ import pulumi
733
+ import pulumi_gcp as gcp
734
+
735
+ member = gcp.compute.StoragePoolIamMember("member",
736
+ project=test_storage_pool_basic["project"],
737
+ zone=test_storage_pool_basic["zone"],
738
+ name=test_storage_pool_basic["name"],
739
+ role="roles/compute.viewer",
740
+ member="user:jane@example.com",
741
+ condition={
742
+ "title": "expires_after_2019_12_31",
743
+ "description": "Expiring at midnight of 2019-12-31",
744
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
745
+ })
746
+ ```
747
+
748
+ ## Import
749
+
750
+ For all import syntaxes, the "resource in question" can take any of the following forms:
751
+
752
+ * projects/{{project}}/zones/{{zone}}/storagePools/{{name}}
753
+
754
+ * {{project}}/{{zone}}/{{name}}
755
+
756
+ * {{zone}}/{{name}}
757
+
758
+ * {{name}}
759
+
760
+ Any variables not passed in the import command will be taken from the provider configuration.
761
+
762
+ Compute Engine storagepool IAM resources can be imported using the resource identifiers, role, and member.
763
+
764
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
765
+
766
+ ```sh
767
+ $ pulumi import gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy editor "projects/{{project}}/zones/{{zone}}/storagePools/{{storage_pool}} roles/compute.viewer user:jane@example.com"
768
+ ```
769
+
770
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
771
+
772
+ ```sh
773
+ $ pulumi import gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy editor "projects/{{project}}/zones/{{zone}}/storagePools/{{storage_pool}} roles/compute.viewer"
774
+ ```
775
+
776
+ IAM policy imports use the identifier of the resource in question, e.g.
777
+
778
+ ```sh
779
+ $ pulumi import gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy editor projects/{{project}}/zones/{{zone}}/storagePools/{{storage_pool}}
780
+ ```
781
+
782
+ -> **Custom Roles** If you're importing a IAM resource with a custom role, make sure to use the
783
+
784
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
785
+
786
+ :param str resource_name: The name of the resource.
787
+ :param StoragePoolIamPolicyArgs args: The arguments to use to populate this resource's properties.
788
+ :param pulumi.ResourceOptions opts: Options for the resource.
789
+ """
790
+ ...
791
+ def __init__(__self__, resource_name: str, *args, **kwargs):
792
+ resource_args, opts = _utilities.get_resource_args_opts(StoragePoolIamPolicyArgs, pulumi.ResourceOptions, *args, **kwargs)
793
+ if resource_args is not None:
794
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
795
+ else:
796
+ __self__._internal_init(resource_name, *args, **kwargs)
797
+
798
+ def _internal_init(__self__,
799
+ resource_name: str,
800
+ opts: Optional[pulumi.ResourceOptions] = None,
801
+ name: Optional[pulumi.Input[builtins.str]] = None,
802
+ policy_data: Optional[pulumi.Input[builtins.str]] = None,
803
+ project: Optional[pulumi.Input[builtins.str]] = None,
804
+ zone: Optional[pulumi.Input[builtins.str]] = None,
805
+ __props__=None):
806
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
807
+ if not isinstance(opts, pulumi.ResourceOptions):
808
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
809
+ if opts.id is None:
810
+ if __props__ is not None:
811
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
812
+ __props__ = StoragePoolIamPolicyArgs.__new__(StoragePoolIamPolicyArgs)
813
+
814
+ __props__.__dict__["name"] = name
815
+ if policy_data is None and not opts.urn:
816
+ raise TypeError("Missing required property 'policy_data'")
817
+ __props__.__dict__["policy_data"] = policy_data
818
+ __props__.__dict__["project"] = project
819
+ __props__.__dict__["zone"] = zone
820
+ __props__.__dict__["etag"] = None
821
+ super(StoragePoolIamPolicy, __self__).__init__(
822
+ 'gcp:compute/storagePoolIamPolicy:StoragePoolIamPolicy',
823
+ resource_name,
824
+ __props__,
825
+ opts)
826
+
827
+ @staticmethod
828
+ def get(resource_name: str,
829
+ id: pulumi.Input[str],
830
+ opts: Optional[pulumi.ResourceOptions] = None,
831
+ etag: Optional[pulumi.Input[builtins.str]] = None,
832
+ name: Optional[pulumi.Input[builtins.str]] = None,
833
+ policy_data: Optional[pulumi.Input[builtins.str]] = None,
834
+ project: Optional[pulumi.Input[builtins.str]] = None,
835
+ zone: Optional[pulumi.Input[builtins.str]] = None) -> 'StoragePoolIamPolicy':
836
+ """
837
+ Get an existing StoragePoolIamPolicy resource's state with the given name, id, and optional extra
838
+ properties used to qualify the lookup.
839
+
840
+ :param str resource_name: The unique name of the resulting resource.
841
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
842
+ :param pulumi.ResourceOptions opts: Options for the resource.
843
+ :param pulumi.Input[builtins.str] etag: (Computed) The etag of the IAM policy.
844
+ :param pulumi.Input[builtins.str] name: Used to find the parent resource to bind the IAM policy to
845
+ :param pulumi.Input[builtins.str] policy_data: The policy data generated by
846
+ a `organizations_get_iam_policy` data source.
847
+ :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
848
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
849
+ :param pulumi.Input[builtins.str] zone: A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
850
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
851
+ zone is specified, it is taken from the provider configuration.
852
+ """
853
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
854
+
855
+ __props__ = _StoragePoolIamPolicyState.__new__(_StoragePoolIamPolicyState)
856
+
857
+ __props__.__dict__["etag"] = etag
858
+ __props__.__dict__["name"] = name
859
+ __props__.__dict__["policy_data"] = policy_data
860
+ __props__.__dict__["project"] = project
861
+ __props__.__dict__["zone"] = zone
862
+ return StoragePoolIamPolicy(resource_name, opts=opts, __props__=__props__)
863
+
864
+ @property
865
+ @pulumi.getter
866
+ def etag(self) -> pulumi.Output[builtins.str]:
867
+ """
868
+ (Computed) The etag of the IAM policy.
869
+ """
870
+ return pulumi.get(self, "etag")
871
+
872
+ @property
873
+ @pulumi.getter
874
+ def name(self) -> pulumi.Output[builtins.str]:
875
+ """
876
+ Used to find the parent resource to bind the IAM policy to
877
+ """
878
+ return pulumi.get(self, "name")
879
+
880
+ @property
881
+ @pulumi.getter(name="policyData")
882
+ def policy_data(self) -> pulumi.Output[builtins.str]:
883
+ """
884
+ The policy data generated by
885
+ a `organizations_get_iam_policy` data source.
886
+ """
887
+ return pulumi.get(self, "policy_data")
888
+
889
+ @property
890
+ @pulumi.getter
891
+ def project(self) -> pulumi.Output[builtins.str]:
892
+ """
893
+ The ID of the project in which the resource belongs.
894
+ If it is not provided, the project will be parsed from the identifier of the parent resource. If no project is provided in the parent identifier and no project is specified, the provider project is used.
895
+ """
896
+ return pulumi.get(self, "project")
897
+
898
+ @property
899
+ @pulumi.getter
900
+ def zone(self) -> pulumi.Output[builtins.str]:
901
+ """
902
+ A reference to the zone where the storage pool resides. Used to find the parent resource to bind the IAM policy to. If not specified,
903
+ the value will be parsed from the identifier of the parent resource. If no zone is provided in the parent identifier and no
904
+ zone is specified, it is taken from the provider configuration.
905
+ """
906
+ return pulumi.get(self, "zone")
907
+