pulumi-gcp 7.12.0a1709561306__py3-none-any.whl → 7.13.0a1709814369__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (33) hide show
  1. pulumi_gcp/__init__.py +24 -0
  2. pulumi_gcp/appengine/application_url_dispatch_rules.py +2 -2
  3. pulumi_gcp/appengine/engine_split_traffic.py +4 -4
  4. pulumi_gcp/appengine/service_network_settings.py +2 -2
  5. pulumi_gcp/appengine/standard_app_version.py +4 -4
  6. pulumi_gcp/bigquery/_inputs.py +88 -0
  7. pulumi_gcp/bigquery/outputs.py +91 -0
  8. pulumi_gcp/bigquery/routine.py +118 -12
  9. pulumi_gcp/certificatemanager/dns_authorization.py +63 -14
  10. pulumi_gcp/clouddeploy/__init__.py +4 -0
  11. pulumi_gcp/clouddeploy/_inputs.py +80 -0
  12. pulumi_gcp/clouddeploy/automation.py +16 -0
  13. pulumi_gcp/clouddeploy/get_target_iam_policy.py +162 -0
  14. pulumi_gcp/clouddeploy/outputs.py +56 -0
  15. pulumi_gcp/clouddeploy/target_iam_binding.py +324 -0
  16. pulumi_gcp/clouddeploy/target_iam_member.py +324 -0
  17. pulumi_gcp/clouddeploy/target_iam_policy.py +253 -0
  18. pulumi_gcp/cloudrunv2/_inputs.py +4 -2
  19. pulumi_gcp/cloudrunv2/outputs.py +8 -4
  20. pulumi_gcp/composer/_inputs.py +18 -2
  21. pulumi_gcp/composer/outputs.py +29 -4
  22. pulumi_gcp/compute/region_target_https_proxy.py +162 -37
  23. pulumi_gcp/gkehub/scope.py +85 -0
  24. pulumi_gcp/monitoring/get_app_engine_service.py +2 -2
  25. pulumi_gcp/spanner/_inputs.py +20 -0
  26. pulumi_gcp/spanner/database_iam_binding.py +134 -0
  27. pulumi_gcp/spanner/database_iam_member.py +134 -0
  28. pulumi_gcp/spanner/database_iam_policy.py +114 -0
  29. pulumi_gcp/spanner/outputs.py +20 -0
  30. {pulumi_gcp-7.12.0a1709561306.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/METADATA +1 -1
  31. {pulumi_gcp-7.12.0a1709561306.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/RECORD +33 -29
  32. {pulumi_gcp-7.12.0a1709561306.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/WHEEL +0 -0
  33. {pulumi_gcp-7.12.0a1709561306.dist-info → pulumi_gcp-7.13.0a1709814369.dist-info}/top_level.txt +0 -0
@@ -18,6 +18,7 @@ class ScopeArgs:
18
18
  def __init__(__self__, *,
19
19
  scope_id: pulumi.Input[str],
20
20
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
21
+ namespace_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
21
22
  project: Optional[pulumi.Input[str]] = None):
22
23
  """
23
24
  The set of arguments for constructing a Scope resource.
@@ -29,12 +30,19 @@ class ScopeArgs:
29
30
 
30
31
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
31
32
  Please refer to the field `effective_labels` for all of the labels present on the resource.
33
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] namespace_labels: Scope-level cluster namespace labels. For the member clusters bound
34
+ to the Scope, these labels are applied to each namespace under the
35
+ Scope. Scope-level labels take precedence over Namespace-level
36
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
37
+ share a key. Keys and values must be Kubernetes-conformant.
32
38
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
33
39
  If it is not provided, the provider project is used.
34
40
  """
35
41
  pulumi.set(__self__, "scope_id", scope_id)
36
42
  if labels is not None:
37
43
  pulumi.set(__self__, "labels", labels)
44
+ if namespace_labels is not None:
45
+ pulumi.set(__self__, "namespace_labels", namespace_labels)
38
46
  if project is not None:
39
47
  pulumi.set(__self__, "project", project)
40
48
 
@@ -68,6 +76,22 @@ class ScopeArgs:
68
76
  def labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
69
77
  pulumi.set(self, "labels", value)
70
78
 
79
+ @property
80
+ @pulumi.getter(name="namespaceLabels")
81
+ def namespace_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
82
+ """
83
+ Scope-level cluster namespace labels. For the member clusters bound
84
+ to the Scope, these labels are applied to each namespace under the
85
+ Scope. Scope-level labels take precedence over Namespace-level
86
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
87
+ share a key. Keys and values must be Kubernetes-conformant.
88
+ """
89
+ return pulumi.get(self, "namespace_labels")
90
+
91
+ @namespace_labels.setter
92
+ def namespace_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
93
+ pulumi.set(self, "namespace_labels", value)
94
+
71
95
  @property
72
96
  @pulumi.getter
73
97
  def project(self) -> Optional[pulumi.Input[str]]:
@@ -90,6 +114,7 @@ class _ScopeState:
90
114
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
91
115
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
92
116
  name: Optional[pulumi.Input[str]] = None,
117
+ namespace_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
93
118
  project: Optional[pulumi.Input[str]] = None,
94
119
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
95
120
  scope_id: Optional[pulumi.Input[str]] = None,
@@ -106,6 +131,11 @@ class _ScopeState:
106
131
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
107
132
  Please refer to the field `effective_labels` for all of the labels present on the resource.
108
133
  :param pulumi.Input[str] name: The unique identifier of the scope
134
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] namespace_labels: Scope-level cluster namespace labels. For the member clusters bound
135
+ to the Scope, these labels are applied to each namespace under the
136
+ Scope. Scope-level labels take precedence over Namespace-level
137
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
138
+ share a key. Keys and values must be Kubernetes-conformant.
109
139
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
110
140
  If it is not provided, the provider project is used.
111
141
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
@@ -129,6 +159,8 @@ class _ScopeState:
129
159
  pulumi.set(__self__, "labels", labels)
130
160
  if name is not None:
131
161
  pulumi.set(__self__, "name", name)
162
+ if namespace_labels is not None:
163
+ pulumi.set(__self__, "namespace_labels", namespace_labels)
132
164
  if project is not None:
133
165
  pulumi.set(__self__, "project", project)
134
166
  if pulumi_labels is not None:
@@ -205,6 +237,22 @@ class _ScopeState:
205
237
  def name(self, value: Optional[pulumi.Input[str]]):
206
238
  pulumi.set(self, "name", value)
207
239
 
240
+ @property
241
+ @pulumi.getter(name="namespaceLabels")
242
+ def namespace_labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
243
+ """
244
+ Scope-level cluster namespace labels. For the member clusters bound
245
+ to the Scope, these labels are applied to each namespace under the
246
+ Scope. Scope-level labels take precedence over Namespace-level
247
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
248
+ share a key. Keys and values must be Kubernetes-conformant.
249
+ """
250
+ return pulumi.get(self, "namespace_labels")
251
+
252
+ @namespace_labels.setter
253
+ def namespace_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
254
+ pulumi.set(self, "namespace_labels", value)
255
+
208
256
  @property
209
257
  @pulumi.getter
210
258
  def project(self) -> Optional[pulumi.Input[str]]:
@@ -290,6 +338,7 @@ class Scope(pulumi.CustomResource):
290
338
  resource_name: str,
291
339
  opts: Optional[pulumi.ResourceOptions] = None,
292
340
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
341
+ namespace_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
293
342
  project: Optional[pulumi.Input[str]] = None,
294
343
  scope_id: Optional[pulumi.Input[str]] = None,
295
344
  __props__=None):
@@ -311,6 +360,11 @@ class Scope(pulumi.CustomResource):
311
360
 
312
361
  scope = gcp.gkehub.Scope("scope",
313
362
  scope_id="my-scope",
363
+ namespace_labels={
364
+ "keyb": "valueb",
365
+ "keya": "valuea",
366
+ "keyc": "valuec",
367
+ },
314
368
  labels={
315
369
  "keyb": "valueb",
316
370
  "keya": "valuea",
@@ -348,6 +402,11 @@ class Scope(pulumi.CustomResource):
348
402
 
349
403
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
350
404
  Please refer to the field `effective_labels` for all of the labels present on the resource.
405
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] namespace_labels: Scope-level cluster namespace labels. For the member clusters bound
406
+ to the Scope, these labels are applied to each namespace under the
407
+ Scope. Scope-level labels take precedence over Namespace-level
408
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
409
+ share a key. Keys and values must be Kubernetes-conformant.
351
410
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
352
411
  If it is not provided, the provider project is used.
353
412
  :param pulumi.Input[str] scope_id: The client-provided identifier of the scope.
@@ -379,6 +438,11 @@ class Scope(pulumi.CustomResource):
379
438
 
380
439
  scope = gcp.gkehub.Scope("scope",
381
440
  scope_id="my-scope",
441
+ namespace_labels={
442
+ "keyb": "valueb",
443
+ "keya": "valuea",
444
+ "keyc": "valuec",
445
+ },
382
446
  labels={
383
447
  "keyb": "valueb",
384
448
  "keya": "valuea",
@@ -426,6 +490,7 @@ class Scope(pulumi.CustomResource):
426
490
  resource_name: str,
427
491
  opts: Optional[pulumi.ResourceOptions] = None,
428
492
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
493
+ namespace_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
429
494
  project: Optional[pulumi.Input[str]] = None,
430
495
  scope_id: Optional[pulumi.Input[str]] = None,
431
496
  __props__=None):
@@ -438,6 +503,7 @@ class Scope(pulumi.CustomResource):
438
503
  __props__ = ScopeArgs.__new__(ScopeArgs)
439
504
 
440
505
  __props__.__dict__["labels"] = labels
506
+ __props__.__dict__["namespace_labels"] = namespace_labels
441
507
  __props__.__dict__["project"] = project
442
508
  if scope_id is None and not opts.urn:
443
509
  raise TypeError("Missing required property 'scope_id'")
@@ -467,6 +533,7 @@ class Scope(pulumi.CustomResource):
467
533
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
468
534
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
469
535
  name: Optional[pulumi.Input[str]] = None,
536
+ namespace_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
470
537
  project: Optional[pulumi.Input[str]] = None,
471
538
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
472
539
  scope_id: Optional[pulumi.Input[str]] = None,
@@ -488,6 +555,11 @@ class Scope(pulumi.CustomResource):
488
555
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
489
556
  Please refer to the field `effective_labels` for all of the labels present on the resource.
490
557
  :param pulumi.Input[str] name: The unique identifier of the scope
558
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] namespace_labels: Scope-level cluster namespace labels. For the member clusters bound
559
+ to the Scope, these labels are applied to each namespace under the
560
+ Scope. Scope-level labels take precedence over Namespace-level
561
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
562
+ share a key. Keys and values must be Kubernetes-conformant.
491
563
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
492
564
  If it is not provided, the provider project is used.
493
565
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
@@ -510,6 +582,7 @@ class Scope(pulumi.CustomResource):
510
582
  __props__.__dict__["effective_labels"] = effective_labels
511
583
  __props__.__dict__["labels"] = labels
512
584
  __props__.__dict__["name"] = name
585
+ __props__.__dict__["namespace_labels"] = namespace_labels
513
586
  __props__.__dict__["project"] = project
514
587
  __props__.__dict__["pulumi_labels"] = pulumi_labels
515
588
  __props__.__dict__["scope_id"] = scope_id
@@ -561,6 +634,18 @@ class Scope(pulumi.CustomResource):
561
634
  """
562
635
  return pulumi.get(self, "name")
563
636
 
637
+ @property
638
+ @pulumi.getter(name="namespaceLabels")
639
+ def namespace_labels(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
640
+ """
641
+ Scope-level cluster namespace labels. For the member clusters bound
642
+ to the Scope, these labels are applied to each namespace under the
643
+ Scope. Scope-level labels take precedence over Namespace-level
644
+ labels (`namespace_labels` in the Fleet Namespace resource) if they
645
+ share a key. Keys and values must be Kubernetes-conformant.
646
+ """
647
+ return pulumi.get(self, "namespace_labels")
648
+
564
649
  @property
565
650
  @pulumi.getter
566
651
  def project(self) -> pulumi.Output[str]:
@@ -153,7 +153,7 @@ def get_app_engine_service(module_id: Optional[str] = None,
153
153
  myapp = gcp.appengine.StandardAppVersion("myapp",
154
154
  version_id="v1",
155
155
  service="myapp",
156
- runtime="nodejs10",
156
+ runtime="nodejs20",
157
157
  entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(
158
158
  shell="node ./app.js",
159
159
  ),
@@ -233,7 +233,7 @@ def get_app_engine_service_output(module_id: Optional[pulumi.Input[str]] = None,
233
233
  myapp = gcp.appengine.StandardAppVersion("myapp",
234
234
  version_id="v1",
235
235
  service="myapp",
236
- runtime="nodejs10",
236
+ runtime="nodejs20",
237
237
  entrypoint=gcp.appengine.StandardAppVersionEntrypointArgs(
238
238
  shell="node ./app.js",
239
239
  ),
@@ -50,6 +50,10 @@ class DatabaseIAMBindingConditionArgs:
50
50
  expression: pulumi.Input[str],
51
51
  title: pulumi.Input[str],
52
52
  description: Optional[pulumi.Input[str]] = None):
53
+ """
54
+ :param pulumi.Input[str] expression: Textual representation of an expression in Common Expression Language syntax.
55
+ :param pulumi.Input[str] title: A title for the expression, i.e. a short string describing its purpose.
56
+ """
53
57
  pulumi.set(__self__, "expression", expression)
54
58
  pulumi.set(__self__, "title", title)
55
59
  if description is not None:
@@ -58,6 +62,9 @@ class DatabaseIAMBindingConditionArgs:
58
62
  @property
59
63
  @pulumi.getter
60
64
  def expression(self) -> pulumi.Input[str]:
65
+ """
66
+ Textual representation of an expression in Common Expression Language syntax.
67
+ """
61
68
  return pulumi.get(self, "expression")
62
69
 
63
70
  @expression.setter
@@ -67,6 +74,9 @@ class DatabaseIAMBindingConditionArgs:
67
74
  @property
68
75
  @pulumi.getter
69
76
  def title(self) -> pulumi.Input[str]:
77
+ """
78
+ A title for the expression, i.e. a short string describing its purpose.
79
+ """
70
80
  return pulumi.get(self, "title")
71
81
 
72
82
  @title.setter
@@ -89,6 +99,10 @@ class DatabaseIAMMemberConditionArgs:
89
99
  expression: pulumi.Input[str],
90
100
  title: pulumi.Input[str],
91
101
  description: Optional[pulumi.Input[str]] = None):
102
+ """
103
+ :param pulumi.Input[str] expression: Textual representation of an expression in Common Expression Language syntax.
104
+ :param pulumi.Input[str] title: A title for the expression, i.e. a short string describing its purpose.
105
+ """
92
106
  pulumi.set(__self__, "expression", expression)
93
107
  pulumi.set(__self__, "title", title)
94
108
  if description is not None:
@@ -97,6 +111,9 @@ class DatabaseIAMMemberConditionArgs:
97
111
  @property
98
112
  @pulumi.getter
99
113
  def expression(self) -> pulumi.Input[str]:
114
+ """
115
+ Textual representation of an expression in Common Expression Language syntax.
116
+ """
100
117
  return pulumi.get(self, "expression")
101
118
 
102
119
  @expression.setter
@@ -106,6 +123,9 @@ class DatabaseIAMMemberConditionArgs:
106
123
  @property
107
124
  @pulumi.getter
108
125
  def title(self) -> pulumi.Input[str]:
126
+ """
127
+ A title for the expression, i.e. a short string describing its purpose.
128
+ """
109
129
  return pulumi.get(self, "title")
110
130
 
111
131
  @title.setter
@@ -38,6 +38,8 @@ class DatabaseIAMBindingArgs:
38
38
  :param pulumi.Input[str] role: The role that should be applied. Only one
39
39
  `spanner.DatabaseIAMBinding` can be used per role. Note that custom roles must be of the format
40
40
  `[projects|organizations]/{parent-name}/roles/{role-name}`.
41
+ :param pulumi.Input['DatabaseIAMBindingConditionArgs'] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
42
+ Structure is documented below.
41
43
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs. If it
42
44
  is not provided, the provider project is used.
43
45
  """
@@ -109,6 +111,10 @@ class DatabaseIAMBindingArgs:
109
111
  @property
110
112
  @pulumi.getter
111
113
  def condition(self) -> Optional[pulumi.Input['DatabaseIAMBindingConditionArgs']]:
114
+ """
115
+ An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
116
+ Structure is documented below.
117
+ """
112
118
  return pulumi.get(self, "condition")
113
119
 
114
120
  @condition.setter
@@ -141,6 +147,8 @@ class _DatabaseIAMBindingState:
141
147
  role: Optional[pulumi.Input[str]] = None):
142
148
  """
143
149
  Input properties used for looking up and filtering DatabaseIAMBinding resources.
150
+ :param pulumi.Input['DatabaseIAMBindingConditionArgs'] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
151
+ Structure is documented below.
144
152
  :param pulumi.Input[str] database: The name of the Spanner database.
145
153
  :param pulumi.Input[str] etag: (Computed) The etag of the database's IAM policy.
146
154
  :param pulumi.Input[str] instance: The name of the Spanner instance the database belongs to.
@@ -177,6 +185,10 @@ class _DatabaseIAMBindingState:
177
185
  @property
178
186
  @pulumi.getter
179
187
  def condition(self) -> Optional[pulumi.Input['DatabaseIAMBindingConditionArgs']]:
188
+ """
189
+ An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
190
+ Structure is documented below.
191
+ """
180
192
  return pulumi.get(self, "condition")
181
193
 
182
194
  @condition.setter
@@ -307,6 +319,27 @@ class DatabaseIAMBinding(pulumi.CustomResource):
307
319
  policy_data=admin.policy_data)
308
320
  ```
309
321
 
322
+ With IAM Conditions:
323
+
324
+ ```python
325
+ import pulumi
326
+ import pulumi_gcp as gcp
327
+
328
+ admin = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(
329
+ role="roles/editor",
330
+ members=["user:jane@example.com"],
331
+ condition=gcp.organizations.GetIAMPolicyBindingConditionArgs(
332
+ title="My Role",
333
+ description="Grant permissions on my_role",
334
+ expression="(resource.type == \\"spanner.googleapis.com/DatabaseRole\\" && (resource.name.endsWith(\\"/myrole\\")))",
335
+ ),
336
+ )])
337
+ database = gcp.spanner.DatabaseIAMPolicy("database",
338
+ instance="your-instance-name",
339
+ database="your-database-name",
340
+ policy_data=admin.policy_data)
341
+ ```
342
+
310
343
  ## google\\_spanner\\_database\\_iam\\_binding
311
344
 
312
345
  ```python
@@ -320,6 +353,24 @@ class DatabaseIAMBinding(pulumi.CustomResource):
320
353
  members=["user:jane@example.com"])
321
354
  ```
322
355
 
356
+ With IAM Conditions:
357
+
358
+ ```python
359
+ import pulumi
360
+ import pulumi_gcp as gcp
361
+
362
+ database = gcp.spanner.DatabaseIAMBinding("database",
363
+ instance="your-instance-name",
364
+ database="your-database-name",
365
+ role="roles/compute.networkUser",
366
+ members=["user:jane@example.com"],
367
+ condition=gcp.spanner.DatabaseIAMBindingConditionArgs(
368
+ title="My Role",
369
+ description="Grant permissions on my_role",
370
+ expression="(resource.type == \\"spanner.googleapis.com/DatabaseRole\\" && (resource.name.endsWith(\\"/myrole\\")))",
371
+ ))
372
+ ```
373
+
323
374
  ## google\\_spanner\\_database\\_iam\\_member
324
375
 
325
376
  ```python
@@ -333,6 +384,24 @@ class DatabaseIAMBinding(pulumi.CustomResource):
333
384
  member="user:jane@example.com")
334
385
  ```
335
386
 
387
+ With IAM Conditions:
388
+
389
+ ```python
390
+ import pulumi
391
+ import pulumi_gcp as gcp
392
+
393
+ database = gcp.spanner.DatabaseIAMMember("database",
394
+ instance="your-instance-name",
395
+ database="your-database-name",
396
+ role="roles/compute.networkUser",
397
+ member="user:jane@example.com",
398
+ condition=gcp.spanner.DatabaseIAMMemberConditionArgs(
399
+ title="My Role",
400
+ description="Grant permissions on my_role",
401
+ expression="(resource.type == \\"spanner.googleapis.com/DatabaseRole\\" && (resource.name.endsWith(\\"/myrole\\")))",
402
+ ))
403
+ ```
404
+
336
405
  ## Import
337
406
 
338
407
  ### Importing IAM policies
@@ -361,6 +430,8 @@ class DatabaseIAMBinding(pulumi.CustomResource):
361
430
 
362
431
  :param str resource_name: The name of the resource.
363
432
  :param pulumi.ResourceOptions opts: Options for the resource.
433
+ :param pulumi.Input[pulumi.InputType['DatabaseIAMBindingConditionArgs']] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
434
+ Structure is documented below.
364
435
  :param pulumi.Input[str] database: The name of the Spanner database.
365
436
  :param pulumi.Input[str] instance: The name of the Spanner instance the database belongs to.
366
437
 
@@ -414,6 +485,27 @@ class DatabaseIAMBinding(pulumi.CustomResource):
414
485
  policy_data=admin.policy_data)
415
486
  ```
416
487
 
488
+ With IAM Conditions:
489
+
490
+ ```python
491
+ import pulumi
492
+ import pulumi_gcp as gcp
493
+
494
+ admin = gcp.organizations.get_iam_policy(bindings=[gcp.organizations.GetIAMPolicyBindingArgs(
495
+ role="roles/editor",
496
+ members=["user:jane@example.com"],
497
+ condition=gcp.organizations.GetIAMPolicyBindingConditionArgs(
498
+ title="My Role",
499
+ description="Grant permissions on my_role",
500
+ expression="(resource.type == \\"spanner.googleapis.com/DatabaseRole\\" && (resource.name.endsWith(\\"/myrole\\")))",
501
+ ),
502
+ )])
503
+ database = gcp.spanner.DatabaseIAMPolicy("database",
504
+ instance="your-instance-name",
505
+ database="your-database-name",
506
+ policy_data=admin.policy_data)
507
+ ```
508
+
417
509
  ## google\\_spanner\\_database\\_iam\\_binding
418
510
 
419
511
  ```python
@@ -427,6 +519,24 @@ class DatabaseIAMBinding(pulumi.CustomResource):
427
519
  members=["user:jane@example.com"])
428
520
  ```
429
521
 
522
+ With IAM Conditions:
523
+
524
+ ```python
525
+ import pulumi
526
+ import pulumi_gcp as gcp
527
+
528
+ database = gcp.spanner.DatabaseIAMBinding("database",
529
+ instance="your-instance-name",
530
+ database="your-database-name",
531
+ role="roles/compute.networkUser",
532
+ members=["user:jane@example.com"],
533
+ condition=gcp.spanner.DatabaseIAMBindingConditionArgs(
534
+ title="My Role",
535
+ description="Grant permissions on my_role",
536
+ expression="(resource.type == \\"spanner.googleapis.com/DatabaseRole\\" && (resource.name.endsWith(\\"/myrole\\")))",
537
+ ))
538
+ ```
539
+
430
540
  ## google\\_spanner\\_database\\_iam\\_member
431
541
 
432
542
  ```python
@@ -440,6 +550,24 @@ class DatabaseIAMBinding(pulumi.CustomResource):
440
550
  member="user:jane@example.com")
441
551
  ```
442
552
 
553
+ With IAM Conditions:
554
+
555
+ ```python
556
+ import pulumi
557
+ import pulumi_gcp as gcp
558
+
559
+ database = gcp.spanner.DatabaseIAMMember("database",
560
+ instance="your-instance-name",
561
+ database="your-database-name",
562
+ role="roles/compute.networkUser",
563
+ member="user:jane@example.com",
564
+ condition=gcp.spanner.DatabaseIAMMemberConditionArgs(
565
+ title="My Role",
566
+ description="Grant permissions on my_role",
567
+ expression="(resource.type == \\"spanner.googleapis.com/DatabaseRole\\" && (resource.name.endsWith(\\"/myrole\\")))",
568
+ ))
569
+ ```
570
+
443
571
  ## Import
444
572
 
445
573
  ### Importing IAM policies
@@ -535,6 +663,8 @@ class DatabaseIAMBinding(pulumi.CustomResource):
535
663
  :param str resource_name: The unique name of the resulting resource.
536
664
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
537
665
  :param pulumi.ResourceOptions opts: Options for the resource.
666
+ :param pulumi.Input[pulumi.InputType['DatabaseIAMBindingConditionArgs']] condition: An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
667
+ Structure is documented below.
538
668
  :param pulumi.Input[str] database: The name of the Spanner database.
539
669
  :param pulumi.Input[str] etag: (Computed) The etag of the database's IAM policy.
540
670
  :param pulumi.Input[str] instance: The name of the Spanner instance the database belongs to.
@@ -569,6 +699,10 @@ class DatabaseIAMBinding(pulumi.CustomResource):
569
699
  @property
570
700
  @pulumi.getter
571
701
  def condition(self) -> pulumi.Output[Optional['outputs.DatabaseIAMBindingCondition']]:
702
+ """
703
+ An [IAM Condition](https://cloud.google.com/iam/docs/conditions-overview) for a given binding.
704
+ Structure is documented below.
705
+ """
572
706
  return pulumi.get(self, "condition")
573
707
 
574
708
  @property