pulumi-gcp 7.30.0a1720039709__py3-none-any.whl → 7.30.0a1720437548__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 (56) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/artifactregistry/get_docker_image.py +2 -2
  3. pulumi_gcp/bigtable/gc_policy.py +68 -14
  4. pulumi_gcp/cloudfunctionsv2/_inputs.py +97 -0
  5. pulumi_gcp/cloudfunctionsv2/function.py +232 -0
  6. pulumi_gcp/cloudfunctionsv2/outputs.py +129 -1
  7. pulumi_gcp/compute/_inputs.py +622 -0
  8. pulumi_gcp/compute/address.py +0 -7
  9. pulumi_gcp/compute/backend_service.py +0 -14
  10. pulumi_gcp/compute/forwarding_rule.py +0 -21
  11. pulumi_gcp/compute/global_forwarding_rule.py +0 -21
  12. pulumi_gcp/compute/managed_ssl_certificate.py +0 -7
  13. pulumi_gcp/compute/manged_ssl_certificate.py +0 -7
  14. pulumi_gcp/compute/network_attachment.py +16 -0
  15. pulumi_gcp/compute/outputs.py +504 -8
  16. pulumi_gcp/compute/region_backend_service.py +0 -14
  17. pulumi_gcp/compute/region_ssl_certificate.py +0 -7
  18. pulumi_gcp/compute/ssl_certificate.py +0 -7
  19. pulumi_gcp/compute/target_https_proxy.py +76 -1
  20. pulumi_gcp/compute/url_map.py +255 -0
  21. pulumi_gcp/container/aws_cluster.py +2 -2
  22. pulumi_gcp/container/aws_node_pool.py +2 -2
  23. pulumi_gcp/container/azure_client.py +2 -2
  24. pulumi_gcp/container/azure_cluster.py +2 -2
  25. pulumi_gcp/container/azure_node_pool.py +2 -2
  26. pulumi_gcp/datafusion/_inputs.py +163 -11
  27. pulumi_gcp/datafusion/instance.py +64 -0
  28. pulumi_gcp/datafusion/outputs.py +127 -7
  29. pulumi_gcp/healthcare/_inputs.py +43 -0
  30. pulumi_gcp/healthcare/dataset.py +110 -0
  31. pulumi_gcp/healthcare/outputs.py +43 -0
  32. pulumi_gcp/identityplatform/config.py +1 -1
  33. pulumi_gcp/logging/billing_account_bucket_config.py +1 -1
  34. pulumi_gcp/logging/folder_bucket_config.py +1 -1
  35. pulumi_gcp/logging/organization_bucket_config.py +1 -1
  36. pulumi_gcp/monitoring/_inputs.py +77 -0
  37. pulumi_gcp/monitoring/outputs.py +63 -0
  38. pulumi_gcp/pulumi-plugin.json +1 -1
  39. pulumi_gcp/securitycenter/instance_iam_binding.py +64 -0
  40. pulumi_gcp/securitycenter/instance_iam_member.py +64 -0
  41. pulumi_gcp/securitycenter/instance_iam_policy.py +64 -0
  42. pulumi_gcp/storage/__init__.py +5 -0
  43. pulumi_gcp/storage/_inputs.py +130 -0
  44. pulumi_gcp/storage/get_managed_folder_iam_policy.py +115 -0
  45. pulumi_gcp/storage/managed_folder.py +440 -0
  46. pulumi_gcp/storage/managed_folder_iam_binding.py +947 -0
  47. pulumi_gcp/storage/managed_folder_iam_member.py +947 -0
  48. pulumi_gcp/storage/managed_folder_iam_policy.py +766 -0
  49. pulumi_gcp/storage/outputs.py +76 -0
  50. pulumi_gcp/vertex/_inputs.py +3 -3
  51. pulumi_gcp/vertex/ai_feature_online_store.py +9 -9
  52. pulumi_gcp/vertex/outputs.py +2 -2
  53. {pulumi_gcp-7.30.0a1720039709.dist-info → pulumi_gcp-7.30.0a1720437548.dist-info}/METADATA +1 -1
  54. {pulumi_gcp-7.30.0a1720039709.dist-info → pulumi_gcp-7.30.0a1720437548.dist-info}/RECORD +56 -51
  55. {pulumi_gcp-7.30.0a1720039709.dist-info → pulumi_gcp-7.30.0a1720437548.dist-info}/WHEEL +0 -0
  56. {pulumi_gcp-7.30.0a1720039709.dist-info → pulumi_gcp-7.30.0a1720437548.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,766 @@
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 copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+
17
+ __all__ = ['ManagedFolderIamPolicyArgs', 'ManagedFolderIamPolicy']
18
+
19
+ @pulumi.input_type
20
+ class ManagedFolderIamPolicyArgs:
21
+ def __init__(__self__, *,
22
+ bucket: pulumi.Input[str],
23
+ managed_folder: pulumi.Input[str],
24
+ policy_data: pulumi.Input[str]):
25
+ """
26
+ The set of arguments for constructing a ManagedFolderIamPolicy resource.
27
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
28
+ :param pulumi.Input[str] managed_folder: Used to find the parent resource to bind the IAM policy to
29
+ :param pulumi.Input[str] policy_data: The policy data generated by
30
+ a `organizations_get_iam_policy` data source.
31
+ """
32
+ pulumi.set(__self__, "bucket", bucket)
33
+ pulumi.set(__self__, "managed_folder", managed_folder)
34
+ pulumi.set(__self__, "policy_data", policy_data)
35
+
36
+ @property
37
+ @pulumi.getter
38
+ def bucket(self) -> pulumi.Input[str]:
39
+ """
40
+ The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
41
+ """
42
+ return pulumi.get(self, "bucket")
43
+
44
+ @bucket.setter
45
+ def bucket(self, value: pulumi.Input[str]):
46
+ pulumi.set(self, "bucket", value)
47
+
48
+ @property
49
+ @pulumi.getter(name="managedFolder")
50
+ def managed_folder(self) -> pulumi.Input[str]:
51
+ """
52
+ Used to find the parent resource to bind the IAM policy to
53
+ """
54
+ return pulumi.get(self, "managed_folder")
55
+
56
+ @managed_folder.setter
57
+ def managed_folder(self, value: pulumi.Input[str]):
58
+ pulumi.set(self, "managed_folder", value)
59
+
60
+ @property
61
+ @pulumi.getter(name="policyData")
62
+ def policy_data(self) -> pulumi.Input[str]:
63
+ """
64
+ The policy data generated by
65
+ a `organizations_get_iam_policy` data source.
66
+ """
67
+ return pulumi.get(self, "policy_data")
68
+
69
+ @policy_data.setter
70
+ def policy_data(self, value: pulumi.Input[str]):
71
+ pulumi.set(self, "policy_data", value)
72
+
73
+
74
+ @pulumi.input_type
75
+ class _ManagedFolderIamPolicyState:
76
+ def __init__(__self__, *,
77
+ bucket: Optional[pulumi.Input[str]] = None,
78
+ etag: Optional[pulumi.Input[str]] = None,
79
+ managed_folder: Optional[pulumi.Input[str]] = None,
80
+ policy_data: Optional[pulumi.Input[str]] = None):
81
+ """
82
+ Input properties used for looking up and filtering ManagedFolderIamPolicy resources.
83
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
84
+ :param pulumi.Input[str] etag: (Computed) The etag of the IAM policy.
85
+ :param pulumi.Input[str] managed_folder: Used to find the parent resource to bind the IAM policy to
86
+ :param pulumi.Input[str] policy_data: The policy data generated by
87
+ a `organizations_get_iam_policy` data source.
88
+ """
89
+ if bucket is not None:
90
+ pulumi.set(__self__, "bucket", bucket)
91
+ if etag is not None:
92
+ pulumi.set(__self__, "etag", etag)
93
+ if managed_folder is not None:
94
+ pulumi.set(__self__, "managed_folder", managed_folder)
95
+ if policy_data is not None:
96
+ pulumi.set(__self__, "policy_data", policy_data)
97
+
98
+ @property
99
+ @pulumi.getter
100
+ def bucket(self) -> Optional[pulumi.Input[str]]:
101
+ """
102
+ The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
103
+ """
104
+ return pulumi.get(self, "bucket")
105
+
106
+ @bucket.setter
107
+ def bucket(self, value: Optional[pulumi.Input[str]]):
108
+ pulumi.set(self, "bucket", value)
109
+
110
+ @property
111
+ @pulumi.getter
112
+ def etag(self) -> Optional[pulumi.Input[str]]:
113
+ """
114
+ (Computed) The etag of the IAM policy.
115
+ """
116
+ return pulumi.get(self, "etag")
117
+
118
+ @etag.setter
119
+ def etag(self, value: Optional[pulumi.Input[str]]):
120
+ pulumi.set(self, "etag", value)
121
+
122
+ @property
123
+ @pulumi.getter(name="managedFolder")
124
+ def managed_folder(self) -> Optional[pulumi.Input[str]]:
125
+ """
126
+ Used to find the parent resource to bind the IAM policy to
127
+ """
128
+ return pulumi.get(self, "managed_folder")
129
+
130
+ @managed_folder.setter
131
+ def managed_folder(self, value: Optional[pulumi.Input[str]]):
132
+ pulumi.set(self, "managed_folder", value)
133
+
134
+ @property
135
+ @pulumi.getter(name="policyData")
136
+ def policy_data(self) -> Optional[pulumi.Input[str]]:
137
+ """
138
+ The policy data generated by
139
+ a `organizations_get_iam_policy` data source.
140
+ """
141
+ return pulumi.get(self, "policy_data")
142
+
143
+ @policy_data.setter
144
+ def policy_data(self, value: Optional[pulumi.Input[str]]):
145
+ pulumi.set(self, "policy_data", value)
146
+
147
+
148
+ class ManagedFolderIamPolicy(pulumi.CustomResource):
149
+ @overload
150
+ def __init__(__self__,
151
+ resource_name: str,
152
+ opts: Optional[pulumi.ResourceOptions] = None,
153
+ bucket: Optional[pulumi.Input[str]] = None,
154
+ managed_folder: Optional[pulumi.Input[str]] = None,
155
+ policy_data: Optional[pulumi.Input[str]] = None,
156
+ __props__=None):
157
+ """
158
+ Three different resources help you manage your IAM policy for Cloud Storage ManagedFolder. Each of these resources serves a different use case:
159
+
160
+ * `storage.ManagedFolderIamPolicy`: Authoritative. Sets the IAM policy for the managedfolder and replaces any existing policy already attached.
161
+ * `storage.ManagedFolderIamBinding`: 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 managedfolder are preserved.
162
+ * `storage.ManagedFolderIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the managedfolder are preserved.
163
+
164
+ A data source can be used to retrieve policy data in advent you do not need creation
165
+
166
+ * `storage.ManagedFolderIamPolicy`: Retrieves the IAM policy for the managedfolder
167
+
168
+ > **Note:** `storage.ManagedFolderIamPolicy` **cannot** be used in conjunction with `storage.ManagedFolderIamBinding` and `storage.ManagedFolderIamMember` or they will fight over what your policy should be.
169
+
170
+ > **Note:** `storage.ManagedFolderIamBinding` resources **can be** used in conjunction with `storage.ManagedFolderIamMember` resources **only if** they do not grant privilege to the same role.
171
+
172
+ > **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.
173
+
174
+ ## storage.ManagedFolderIamPolicy
175
+
176
+ ```python
177
+ import pulumi
178
+ import pulumi_gcp as gcp
179
+
180
+ admin = gcp.organizations.get_iam_policy(bindings=[{
181
+ "role": "roles/storage.admin",
182
+ "members": ["user:jane@example.com"],
183
+ }])
184
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
185
+ bucket=folder["bucket"],
186
+ managed_folder=folder["name"],
187
+ policy_data=admin.policy_data)
188
+ ```
189
+
190
+ With IAM Conditions:
191
+
192
+ ```python
193
+ import pulumi
194
+ import pulumi_gcp as gcp
195
+
196
+ admin = gcp.organizations.get_iam_policy(bindings=[{
197
+ "role": "roles/storage.admin",
198
+ "members": ["user:jane@example.com"],
199
+ "condition": {
200
+ "title": "expires_after_2019_12_31",
201
+ "description": "Expiring at midnight of 2019-12-31",
202
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
203
+ },
204
+ }])
205
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
206
+ bucket=folder["bucket"],
207
+ managed_folder=folder["name"],
208
+ policy_data=admin.policy_data)
209
+ ```
210
+ ## storage.ManagedFolderIamBinding
211
+
212
+ ```python
213
+ import pulumi
214
+ import pulumi_gcp as gcp
215
+
216
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
217
+ bucket=folder["bucket"],
218
+ managed_folder=folder["name"],
219
+ role="roles/storage.admin",
220
+ members=["user:jane@example.com"])
221
+ ```
222
+
223
+ With IAM Conditions:
224
+
225
+ ```python
226
+ import pulumi
227
+ import pulumi_gcp as gcp
228
+
229
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
230
+ bucket=folder["bucket"],
231
+ managed_folder=folder["name"],
232
+ role="roles/storage.admin",
233
+ members=["user:jane@example.com"],
234
+ condition={
235
+ "title": "expires_after_2019_12_31",
236
+ "description": "Expiring at midnight of 2019-12-31",
237
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
238
+ })
239
+ ```
240
+ ## storage.ManagedFolderIamMember
241
+
242
+ ```python
243
+ import pulumi
244
+ import pulumi_gcp as gcp
245
+
246
+ member = gcp.storage.ManagedFolderIamMember("member",
247
+ bucket=folder["bucket"],
248
+ managed_folder=folder["name"],
249
+ role="roles/storage.admin",
250
+ member="user:jane@example.com")
251
+ ```
252
+
253
+ With IAM Conditions:
254
+
255
+ ```python
256
+ import pulumi
257
+ import pulumi_gcp as gcp
258
+
259
+ member = gcp.storage.ManagedFolderIamMember("member",
260
+ bucket=folder["bucket"],
261
+ managed_folder=folder["name"],
262
+ role="roles/storage.admin",
263
+ member="user:jane@example.com",
264
+ condition={
265
+ "title": "expires_after_2019_12_31",
266
+ "description": "Expiring at midnight of 2019-12-31",
267
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
268
+ })
269
+ ```
270
+
271
+ ## storage.ManagedFolderIamPolicy
272
+
273
+ ```python
274
+ import pulumi
275
+ import pulumi_gcp as gcp
276
+
277
+ admin = gcp.organizations.get_iam_policy(bindings=[{
278
+ "role": "roles/storage.admin",
279
+ "members": ["user:jane@example.com"],
280
+ }])
281
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
282
+ bucket=folder["bucket"],
283
+ managed_folder=folder["name"],
284
+ policy_data=admin.policy_data)
285
+ ```
286
+
287
+ With IAM Conditions:
288
+
289
+ ```python
290
+ import pulumi
291
+ import pulumi_gcp as gcp
292
+
293
+ admin = gcp.organizations.get_iam_policy(bindings=[{
294
+ "role": "roles/storage.admin",
295
+ "members": ["user:jane@example.com"],
296
+ "condition": {
297
+ "title": "expires_after_2019_12_31",
298
+ "description": "Expiring at midnight of 2019-12-31",
299
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
300
+ },
301
+ }])
302
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
303
+ bucket=folder["bucket"],
304
+ managed_folder=folder["name"],
305
+ policy_data=admin.policy_data)
306
+ ```
307
+ ## storage.ManagedFolderIamBinding
308
+
309
+ ```python
310
+ import pulumi
311
+ import pulumi_gcp as gcp
312
+
313
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
314
+ bucket=folder["bucket"],
315
+ managed_folder=folder["name"],
316
+ role="roles/storage.admin",
317
+ members=["user:jane@example.com"])
318
+ ```
319
+
320
+ With IAM Conditions:
321
+
322
+ ```python
323
+ import pulumi
324
+ import pulumi_gcp as gcp
325
+
326
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
327
+ bucket=folder["bucket"],
328
+ managed_folder=folder["name"],
329
+ role="roles/storage.admin",
330
+ members=["user:jane@example.com"],
331
+ condition={
332
+ "title": "expires_after_2019_12_31",
333
+ "description": "Expiring at midnight of 2019-12-31",
334
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
335
+ })
336
+ ```
337
+ ## storage.ManagedFolderIamMember
338
+
339
+ ```python
340
+ import pulumi
341
+ import pulumi_gcp as gcp
342
+
343
+ member = gcp.storage.ManagedFolderIamMember("member",
344
+ bucket=folder["bucket"],
345
+ managed_folder=folder["name"],
346
+ role="roles/storage.admin",
347
+ member="user:jane@example.com")
348
+ ```
349
+
350
+ With IAM Conditions:
351
+
352
+ ```python
353
+ import pulumi
354
+ import pulumi_gcp as gcp
355
+
356
+ member = gcp.storage.ManagedFolderIamMember("member",
357
+ bucket=folder["bucket"],
358
+ managed_folder=folder["name"],
359
+ role="roles/storage.admin",
360
+ member="user:jane@example.com",
361
+ condition={
362
+ "title": "expires_after_2019_12_31",
363
+ "description": "Expiring at midnight of 2019-12-31",
364
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
365
+ })
366
+ ```
367
+
368
+ ## Import
369
+
370
+ For all import syntaxes, the "resource in question" can take any of the following forms:
371
+
372
+ * b/{{bucket}}/managedFolders/{{managed_folder}}
373
+
374
+ * {{bucket}}/{{managed_folder}}
375
+
376
+ Any variables not passed in the import command will be taken from the provider configuration.
377
+
378
+ Cloud Storage managedfolder IAM resources can be imported using the resource identifiers, role, and member.
379
+
380
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
381
+
382
+ ```sh
383
+ $ pulumi import gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy editor "b/{{bucket}}/managedFolders/{{managed_folder}} roles/storage.objectViewer user:jane@example.com"
384
+ ```
385
+
386
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
387
+
388
+ ```sh
389
+ $ pulumi import gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy editor "b/{{bucket}}/managedFolders/{{managed_folder}} roles/storage.objectViewer"
390
+ ```
391
+
392
+ IAM policy imports use the identifier of the resource in question, e.g.
393
+
394
+ ```sh
395
+ $ pulumi import gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy editor b/{{bucket}}/managedFolders/{{managed_folder}}
396
+ ```
397
+
398
+ -> **Custom Roles**: If you're importing a IAM resource with a custom role, make sure to use the
399
+
400
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
401
+
402
+ :param str resource_name: The name of the resource.
403
+ :param pulumi.ResourceOptions opts: Options for the resource.
404
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
405
+ :param pulumi.Input[str] managed_folder: Used to find the parent resource to bind the IAM policy to
406
+ :param pulumi.Input[str] policy_data: The policy data generated by
407
+ a `organizations_get_iam_policy` data source.
408
+ """
409
+ ...
410
+ @overload
411
+ def __init__(__self__,
412
+ resource_name: str,
413
+ args: ManagedFolderIamPolicyArgs,
414
+ opts: Optional[pulumi.ResourceOptions] = None):
415
+ """
416
+ Three different resources help you manage your IAM policy for Cloud Storage ManagedFolder. Each of these resources serves a different use case:
417
+
418
+ * `storage.ManagedFolderIamPolicy`: Authoritative. Sets the IAM policy for the managedfolder and replaces any existing policy already attached.
419
+ * `storage.ManagedFolderIamBinding`: 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 managedfolder are preserved.
420
+ * `storage.ManagedFolderIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the managedfolder are preserved.
421
+
422
+ A data source can be used to retrieve policy data in advent you do not need creation
423
+
424
+ * `storage.ManagedFolderIamPolicy`: Retrieves the IAM policy for the managedfolder
425
+
426
+ > **Note:** `storage.ManagedFolderIamPolicy` **cannot** be used in conjunction with `storage.ManagedFolderIamBinding` and `storage.ManagedFolderIamMember` or they will fight over what your policy should be.
427
+
428
+ > **Note:** `storage.ManagedFolderIamBinding` resources **can be** used in conjunction with `storage.ManagedFolderIamMember` resources **only if** they do not grant privilege to the same role.
429
+
430
+ > **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.
431
+
432
+ ## storage.ManagedFolderIamPolicy
433
+
434
+ ```python
435
+ import pulumi
436
+ import pulumi_gcp as gcp
437
+
438
+ admin = gcp.organizations.get_iam_policy(bindings=[{
439
+ "role": "roles/storage.admin",
440
+ "members": ["user:jane@example.com"],
441
+ }])
442
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
443
+ bucket=folder["bucket"],
444
+ managed_folder=folder["name"],
445
+ policy_data=admin.policy_data)
446
+ ```
447
+
448
+ With IAM Conditions:
449
+
450
+ ```python
451
+ import pulumi
452
+ import pulumi_gcp as gcp
453
+
454
+ admin = gcp.organizations.get_iam_policy(bindings=[{
455
+ "role": "roles/storage.admin",
456
+ "members": ["user:jane@example.com"],
457
+ "condition": {
458
+ "title": "expires_after_2019_12_31",
459
+ "description": "Expiring at midnight of 2019-12-31",
460
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
461
+ },
462
+ }])
463
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
464
+ bucket=folder["bucket"],
465
+ managed_folder=folder["name"],
466
+ policy_data=admin.policy_data)
467
+ ```
468
+ ## storage.ManagedFolderIamBinding
469
+
470
+ ```python
471
+ import pulumi
472
+ import pulumi_gcp as gcp
473
+
474
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
475
+ bucket=folder["bucket"],
476
+ managed_folder=folder["name"],
477
+ role="roles/storage.admin",
478
+ members=["user:jane@example.com"])
479
+ ```
480
+
481
+ With IAM Conditions:
482
+
483
+ ```python
484
+ import pulumi
485
+ import pulumi_gcp as gcp
486
+
487
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
488
+ bucket=folder["bucket"],
489
+ managed_folder=folder["name"],
490
+ role="roles/storage.admin",
491
+ members=["user:jane@example.com"],
492
+ condition={
493
+ "title": "expires_after_2019_12_31",
494
+ "description": "Expiring at midnight of 2019-12-31",
495
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
496
+ })
497
+ ```
498
+ ## storage.ManagedFolderIamMember
499
+
500
+ ```python
501
+ import pulumi
502
+ import pulumi_gcp as gcp
503
+
504
+ member = gcp.storage.ManagedFolderIamMember("member",
505
+ bucket=folder["bucket"],
506
+ managed_folder=folder["name"],
507
+ role="roles/storage.admin",
508
+ member="user:jane@example.com")
509
+ ```
510
+
511
+ With IAM Conditions:
512
+
513
+ ```python
514
+ import pulumi
515
+ import pulumi_gcp as gcp
516
+
517
+ member = gcp.storage.ManagedFolderIamMember("member",
518
+ bucket=folder["bucket"],
519
+ managed_folder=folder["name"],
520
+ role="roles/storage.admin",
521
+ member="user:jane@example.com",
522
+ condition={
523
+ "title": "expires_after_2019_12_31",
524
+ "description": "Expiring at midnight of 2019-12-31",
525
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
526
+ })
527
+ ```
528
+
529
+ ## storage.ManagedFolderIamPolicy
530
+
531
+ ```python
532
+ import pulumi
533
+ import pulumi_gcp as gcp
534
+
535
+ admin = gcp.organizations.get_iam_policy(bindings=[{
536
+ "role": "roles/storage.admin",
537
+ "members": ["user:jane@example.com"],
538
+ }])
539
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
540
+ bucket=folder["bucket"],
541
+ managed_folder=folder["name"],
542
+ policy_data=admin.policy_data)
543
+ ```
544
+
545
+ With IAM Conditions:
546
+
547
+ ```python
548
+ import pulumi
549
+ import pulumi_gcp as gcp
550
+
551
+ admin = gcp.organizations.get_iam_policy(bindings=[{
552
+ "role": "roles/storage.admin",
553
+ "members": ["user:jane@example.com"],
554
+ "condition": {
555
+ "title": "expires_after_2019_12_31",
556
+ "description": "Expiring at midnight of 2019-12-31",
557
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
558
+ },
559
+ }])
560
+ policy = gcp.storage.ManagedFolderIamPolicy("policy",
561
+ bucket=folder["bucket"],
562
+ managed_folder=folder["name"],
563
+ policy_data=admin.policy_data)
564
+ ```
565
+ ## storage.ManagedFolderIamBinding
566
+
567
+ ```python
568
+ import pulumi
569
+ import pulumi_gcp as gcp
570
+
571
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
572
+ bucket=folder["bucket"],
573
+ managed_folder=folder["name"],
574
+ role="roles/storage.admin",
575
+ members=["user:jane@example.com"])
576
+ ```
577
+
578
+ With IAM Conditions:
579
+
580
+ ```python
581
+ import pulumi
582
+ import pulumi_gcp as gcp
583
+
584
+ binding = gcp.storage.ManagedFolderIamBinding("binding",
585
+ bucket=folder["bucket"],
586
+ managed_folder=folder["name"],
587
+ role="roles/storage.admin",
588
+ members=["user:jane@example.com"],
589
+ condition={
590
+ "title": "expires_after_2019_12_31",
591
+ "description": "Expiring at midnight of 2019-12-31",
592
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
593
+ })
594
+ ```
595
+ ## storage.ManagedFolderIamMember
596
+
597
+ ```python
598
+ import pulumi
599
+ import pulumi_gcp as gcp
600
+
601
+ member = gcp.storage.ManagedFolderIamMember("member",
602
+ bucket=folder["bucket"],
603
+ managed_folder=folder["name"],
604
+ role="roles/storage.admin",
605
+ member="user:jane@example.com")
606
+ ```
607
+
608
+ With IAM Conditions:
609
+
610
+ ```python
611
+ import pulumi
612
+ import pulumi_gcp as gcp
613
+
614
+ member = gcp.storage.ManagedFolderIamMember("member",
615
+ bucket=folder["bucket"],
616
+ managed_folder=folder["name"],
617
+ role="roles/storage.admin",
618
+ member="user:jane@example.com",
619
+ condition={
620
+ "title": "expires_after_2019_12_31",
621
+ "description": "Expiring at midnight of 2019-12-31",
622
+ "expression": "request.time < timestamp(\\"2020-01-01T00:00:00Z\\")",
623
+ })
624
+ ```
625
+
626
+ ## Import
627
+
628
+ For all import syntaxes, the "resource in question" can take any of the following forms:
629
+
630
+ * b/{{bucket}}/managedFolders/{{managed_folder}}
631
+
632
+ * {{bucket}}/{{managed_folder}}
633
+
634
+ Any variables not passed in the import command will be taken from the provider configuration.
635
+
636
+ Cloud Storage managedfolder IAM resources can be imported using the resource identifiers, role, and member.
637
+
638
+ IAM member imports use space-delimited identifiers: the resource in question, the role, and the member identity, e.g.
639
+
640
+ ```sh
641
+ $ pulumi import gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy editor "b/{{bucket}}/managedFolders/{{managed_folder}} roles/storage.objectViewer user:jane@example.com"
642
+ ```
643
+
644
+ IAM binding imports use space-delimited identifiers: the resource in question and the role, e.g.
645
+
646
+ ```sh
647
+ $ pulumi import gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy editor "b/{{bucket}}/managedFolders/{{managed_folder}} roles/storage.objectViewer"
648
+ ```
649
+
650
+ IAM policy imports use the identifier of the resource in question, e.g.
651
+
652
+ ```sh
653
+ $ pulumi import gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy editor b/{{bucket}}/managedFolders/{{managed_folder}}
654
+ ```
655
+
656
+ -> **Custom Roles**: If you're importing a IAM resource with a custom role, make sure to use the
657
+
658
+ full name of the custom role, e.g. `[projects/my-project|organizations/my-org]/roles/my-custom-role`.
659
+
660
+ :param str resource_name: The name of the resource.
661
+ :param ManagedFolderIamPolicyArgs args: The arguments to use to populate this resource's properties.
662
+ :param pulumi.ResourceOptions opts: Options for the resource.
663
+ """
664
+ ...
665
+ def __init__(__self__, resource_name: str, *args, **kwargs):
666
+ resource_args, opts = _utilities.get_resource_args_opts(ManagedFolderIamPolicyArgs, pulumi.ResourceOptions, *args, **kwargs)
667
+ if resource_args is not None:
668
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
669
+ else:
670
+ __self__._internal_init(resource_name, *args, **kwargs)
671
+
672
+ def _internal_init(__self__,
673
+ resource_name: str,
674
+ opts: Optional[pulumi.ResourceOptions] = None,
675
+ bucket: Optional[pulumi.Input[str]] = None,
676
+ managed_folder: Optional[pulumi.Input[str]] = None,
677
+ policy_data: Optional[pulumi.Input[str]] = None,
678
+ __props__=None):
679
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
680
+ if not isinstance(opts, pulumi.ResourceOptions):
681
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
682
+ if opts.id is None:
683
+ if __props__ is not None:
684
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
685
+ __props__ = ManagedFolderIamPolicyArgs.__new__(ManagedFolderIamPolicyArgs)
686
+
687
+ if bucket is None and not opts.urn:
688
+ raise TypeError("Missing required property 'bucket'")
689
+ __props__.__dict__["bucket"] = bucket
690
+ if managed_folder is None and not opts.urn:
691
+ raise TypeError("Missing required property 'managed_folder'")
692
+ __props__.__dict__["managed_folder"] = managed_folder
693
+ if policy_data is None and not opts.urn:
694
+ raise TypeError("Missing required property 'policy_data'")
695
+ __props__.__dict__["policy_data"] = policy_data
696
+ __props__.__dict__["etag"] = None
697
+ super(ManagedFolderIamPolicy, __self__).__init__(
698
+ 'gcp:storage/managedFolderIamPolicy:ManagedFolderIamPolicy',
699
+ resource_name,
700
+ __props__,
701
+ opts)
702
+
703
+ @staticmethod
704
+ def get(resource_name: str,
705
+ id: pulumi.Input[str],
706
+ opts: Optional[pulumi.ResourceOptions] = None,
707
+ bucket: Optional[pulumi.Input[str]] = None,
708
+ etag: Optional[pulumi.Input[str]] = None,
709
+ managed_folder: Optional[pulumi.Input[str]] = None,
710
+ policy_data: Optional[pulumi.Input[str]] = None) -> 'ManagedFolderIamPolicy':
711
+ """
712
+ Get an existing ManagedFolderIamPolicy resource's state with the given name, id, and optional extra
713
+ properties used to qualify the lookup.
714
+
715
+ :param str resource_name: The unique name of the resulting resource.
716
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
717
+ :param pulumi.ResourceOptions opts: Options for the resource.
718
+ :param pulumi.Input[str] bucket: The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
719
+ :param pulumi.Input[str] etag: (Computed) The etag of the IAM policy.
720
+ :param pulumi.Input[str] managed_folder: Used to find the parent resource to bind the IAM policy to
721
+ :param pulumi.Input[str] policy_data: The policy data generated by
722
+ a `organizations_get_iam_policy` data source.
723
+ """
724
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
725
+
726
+ __props__ = _ManagedFolderIamPolicyState.__new__(_ManagedFolderIamPolicyState)
727
+
728
+ __props__.__dict__["bucket"] = bucket
729
+ __props__.__dict__["etag"] = etag
730
+ __props__.__dict__["managed_folder"] = managed_folder
731
+ __props__.__dict__["policy_data"] = policy_data
732
+ return ManagedFolderIamPolicy(resource_name, opts=opts, __props__=__props__)
733
+
734
+ @property
735
+ @pulumi.getter
736
+ def bucket(self) -> pulumi.Output[str]:
737
+ """
738
+ The name of the bucket that contains the managed folder. Used to find the parent resource to bind the IAM policy to
739
+ """
740
+ return pulumi.get(self, "bucket")
741
+
742
+ @property
743
+ @pulumi.getter
744
+ def etag(self) -> pulumi.Output[str]:
745
+ """
746
+ (Computed) The etag of the IAM policy.
747
+ """
748
+ return pulumi.get(self, "etag")
749
+
750
+ @property
751
+ @pulumi.getter(name="managedFolder")
752
+ def managed_folder(self) -> pulumi.Output[str]:
753
+ """
754
+ Used to find the parent resource to bind the IAM policy to
755
+ """
756
+ return pulumi.get(self, "managed_folder")
757
+
758
+ @property
759
+ @pulumi.getter(name="policyData")
760
+ def policy_data(self) -> pulumi.Output[str]:
761
+ """
762
+ The policy data generated by
763
+ a `organizations_get_iam_policy` data source.
764
+ """
765
+ return pulumi.get(self, "policy_data")
766
+