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