pulumi-gcp 8.11.0a1734348982__py3-none-any.whl → 8.12.0__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 (168) hide show
  1. pulumi_gcp/__init__.py +123 -0
  2. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +6 -0
  3. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +6 -0
  4. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +6 -0
  5. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +6 -0
  6. pulumi_gcp/apigee/app_group.py +7 -7
  7. pulumi_gcp/applicationintegration/client.py +8 -6
  8. pulumi_gcp/artifactregistry/_inputs.py +24 -15
  9. pulumi_gcp/artifactregistry/get_repository_iam_policy.py +12 -4
  10. pulumi_gcp/artifactregistry/outputs.py +32 -20
  11. pulumi_gcp/artifactregistry/repository.py +214 -39
  12. pulumi_gcp/artifactregistry/repository_iam_binding.py +42 -14
  13. pulumi_gcp/artifactregistry/repository_iam_member.py +42 -14
  14. pulumi_gcp/artifactregistry/repository_iam_policy.py +42 -14
  15. pulumi_gcp/assuredworkloads/workload.py +7 -7
  16. pulumi_gcp/backupdisasterrecovery/__init__.py +2 -0
  17. pulumi_gcp/backupdisasterrecovery/backup_plan.py +2 -2
  18. pulumi_gcp/backupdisasterrecovery/backup_vault.py +12 -8
  19. pulumi_gcp/backupdisasterrecovery/get_backup.py +153 -0
  20. pulumi_gcp/backupdisasterrecovery/get_backup_vault.py +415 -0
  21. pulumi_gcp/backupdisasterrecovery/outputs.py +63 -0
  22. pulumi_gcp/bigquery/app_profile.py +75 -0
  23. pulumi_gcp/billing/_inputs.py +6 -6
  24. pulumi_gcp/billing/outputs.py +4 -4
  25. pulumi_gcp/certificateauthority/_inputs.py +9 -9
  26. pulumi_gcp/certificateauthority/outputs.py +8 -8
  27. pulumi_gcp/cloudbuild/_inputs.py +53 -0
  28. pulumi_gcp/cloudbuild/outputs.py +50 -0
  29. pulumi_gcp/cloudbuild/worker_pool.py +47 -0
  30. pulumi_gcp/clouddeploy/_inputs.py +254 -0
  31. pulumi_gcp/clouddeploy/outputs.py +211 -0
  32. pulumi_gcp/clouddeploy/target.py +47 -0
  33. pulumi_gcp/cloudfunctionsv2/_inputs.py +6 -6
  34. pulumi_gcp/cloudfunctionsv2/outputs.py +8 -8
  35. pulumi_gcp/cloudrunv2/job.py +4 -4
  36. pulumi_gcp/cloudrunv2/service.py +4 -4
  37. pulumi_gcp/composer/get_user_workloads_config_map.py +4 -0
  38. pulumi_gcp/composer/get_user_workloads_secret.py +4 -0
  39. pulumi_gcp/composer/user_workloads_config_map.py +14 -0
  40. pulumi_gcp/composer/user_workloads_secret.py +6 -0
  41. pulumi_gcp/compute/_inputs.py +566 -25
  42. pulumi_gcp/compute/disk.py +21 -7
  43. pulumi_gcp/compute/firewall_policy_rule.py +12 -0
  44. pulumi_gcp/compute/get_forwarding_rules.py +2 -2
  45. pulumi_gcp/compute/get_global_forwarding_rule.py +23 -1
  46. pulumi_gcp/compute/get_instance_group_manager.py +12 -1
  47. pulumi_gcp/compute/get_network.py +35 -1
  48. pulumi_gcp/compute/get_region_instance_group_manager.py +12 -1
  49. pulumi_gcp/compute/get_region_network_endpoint_group.py +12 -1
  50. pulumi_gcp/compute/global_forwarding_rule.py +142 -2
  51. pulumi_gcp/compute/instance_group_manager.py +28 -0
  52. pulumi_gcp/compute/network.py +75 -0
  53. pulumi_gcp/compute/outputs.py +655 -26
  54. pulumi_gcp/compute/project_cloud_armor_tier.py +7 -7
  55. pulumi_gcp/compute/region_health_check.py +28 -0
  56. pulumi_gcp/compute/region_instance_group_manager.py +28 -0
  57. pulumi_gcp/compute/region_network_endpoint.py +28 -0
  58. pulumi_gcp/compute/region_network_endpoint_group.py +70 -2
  59. pulumi_gcp/compute/subnetwork.py +30 -2
  60. pulumi_gcp/compute/url_map.py +7 -7
  61. pulumi_gcp/config/__init__.pyi +2 -0
  62. pulumi_gcp/config/vars.py +4 -0
  63. pulumi_gcp/container/_inputs.py +201 -3
  64. pulumi_gcp/container/cluster.py +68 -14
  65. pulumi_gcp/container/get_cluster.py +12 -1
  66. pulumi_gcp/container/outputs.py +249 -3
  67. pulumi_gcp/dataproc/_inputs.py +209 -1
  68. pulumi_gcp/dataproc/batch.py +76 -0
  69. pulumi_gcp/dataproc/outputs.py +169 -3
  70. pulumi_gcp/diagflow/_inputs.py +3 -3
  71. pulumi_gcp/diagflow/outputs.py +2 -2
  72. pulumi_gcp/discoveryengine/search_engine.py +7 -7
  73. pulumi_gcp/firebase/_inputs.py +99 -0
  74. pulumi_gcp/firebase/database_instance.py +24 -6
  75. pulumi_gcp/firebase/hosting_version.py +96 -0
  76. pulumi_gcp/firebase/outputs.py +59 -0
  77. pulumi_gcp/firebase/project.py +6 -6
  78. pulumi_gcp/firebaserules/release.py +76 -0
  79. pulumi_gcp/firestore/field.py +4 -4
  80. pulumi_gcp/gemini/__init__.py +15 -0
  81. pulumi_gcp/gemini/_inputs.py +183 -0
  82. pulumi_gcp/gemini/code_repository_index.py +659 -0
  83. pulumi_gcp/gemini/get_repository_group_iam_policy.py +171 -0
  84. pulumi_gcp/gemini/outputs.py +130 -0
  85. pulumi_gcp/gemini/repository_group.py +586 -0
  86. pulumi_gcp/gemini/repository_group_iam_binding.py +604 -0
  87. pulumi_gcp/gemini/repository_group_iam_member.py +604 -0
  88. pulumi_gcp/gemini/repository_group_iam_policy.py +443 -0
  89. pulumi_gcp/gkehub/_inputs.py +30 -10
  90. pulumi_gcp/gkehub/membership_binding.py +6 -6
  91. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  92. pulumi_gcp/gkehub/namespace.py +4 -4
  93. pulumi_gcp/gkehub/outputs.py +21 -7
  94. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  95. pulumi_gcp/iam/__init__.py +1 -0
  96. pulumi_gcp/iam/_inputs.py +137 -0
  97. pulumi_gcp/iam/folders_policy_binding.py +16 -0
  98. pulumi_gcp/iam/organizations_policy_binding.py +16 -0
  99. pulumi_gcp/iam/outputs.py +99 -0
  100. pulumi_gcp/iam/principal_access_boundary_policy.py +16 -0
  101. pulumi_gcp/iam/projects_policy_binding.py +917 -0
  102. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  103. pulumi_gcp/identityplatform/_inputs.py +6 -6
  104. pulumi_gcp/identityplatform/config.py +2 -2
  105. pulumi_gcp/identityplatform/outputs.py +4 -4
  106. pulumi_gcp/integrationconnectors/_inputs.py +15 -15
  107. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  108. pulumi_gcp/integrationconnectors/outputs.py +10 -10
  109. pulumi_gcp/looker/instance.py +35 -14
  110. pulumi_gcp/monitoring/_inputs.py +13 -6
  111. pulumi_gcp/monitoring/outputs.py +10 -4
  112. pulumi_gcp/netapp/_inputs.py +3 -3
  113. pulumi_gcp/netapp/active_directory.py +7 -7
  114. pulumi_gcp/netapp/outputs.py +2 -2
  115. pulumi_gcp/netapp/volume.py +11 -11
  116. pulumi_gcp/networkconnectivity/_inputs.py +10 -12
  117. pulumi_gcp/networkconnectivity/outputs.py +6 -8
  118. pulumi_gcp/networkconnectivity/spoke.py +10 -10
  119. pulumi_gcp/networksecurity/__init__.py +7 -0
  120. pulumi_gcp/networksecurity/_inputs.py +2018 -0
  121. pulumi_gcp/networksecurity/authz_policy.py +1008 -0
  122. pulumi_gcp/networksecurity/intercept_deployment.py +846 -0
  123. pulumi_gcp/networksecurity/intercept_deployment_group.py +752 -0
  124. pulumi_gcp/networksecurity/mirroring_deployment.py +848 -0
  125. pulumi_gcp/networksecurity/mirroring_deployment_group.py +752 -0
  126. pulumi_gcp/networksecurity/mirroring_endpoint_group.py +737 -0
  127. pulumi_gcp/networksecurity/mirroring_endpoint_group_association.py +840 -0
  128. pulumi_gcp/networksecurity/outputs.py +1463 -0
  129. pulumi_gcp/networkservices/__init__.py +1 -0
  130. pulumi_gcp/networkservices/authz_extension.py +1080 -0
  131. pulumi_gcp/oracledatabase/autonomous_database.py +46 -8
  132. pulumi_gcp/oracledatabase/cloud_exadata_infrastructure.py +42 -4
  133. pulumi_gcp/oracledatabase/cloud_vm_cluster.py +50 -8
  134. pulumi_gcp/oracledatabase/get_autonomous_database.py +12 -1
  135. pulumi_gcp/oracledatabase/get_cloud_exadata_infrastructure.py +12 -1
  136. pulumi_gcp/oracledatabase/get_cloud_vm_cluster.py +12 -1
  137. pulumi_gcp/oracledatabase/outputs.py +21 -0
  138. pulumi_gcp/orgpolicy/_inputs.py +40 -0
  139. pulumi_gcp/orgpolicy/outputs.py +24 -0
  140. pulumi_gcp/orgpolicy/policy.py +66 -10
  141. pulumi_gcp/parallelstore/instance.py +4 -0
  142. pulumi_gcp/provider.py +20 -0
  143. pulumi_gcp/pubsub/subscription.py +6 -6
  144. pulumi_gcp/pulumi-plugin.json +1 -1
  145. pulumi_gcp/redis/_inputs.py +435 -3
  146. pulumi_gcp/redis/cluster.py +287 -16
  147. pulumi_gcp/redis/outputs.py +304 -2
  148. pulumi_gcp/serviceaccount/get_account_id_token.py +2 -2
  149. pulumi_gcp/serviceaccount/get_account_key.py +2 -2
  150. pulumi_gcp/sql/_inputs.py +3 -3
  151. pulumi_gcp/sql/database_instance.py +14 -14
  152. pulumi_gcp/sql/outputs.py +2 -2
  153. pulumi_gcp/storage/_inputs.py +53 -6
  154. pulumi_gcp/storage/get_bucket.py +2 -2
  155. pulumi_gcp/storage/get_bucket_object_content.py +2 -2
  156. pulumi_gcp/storage/outputs.py +33 -4
  157. pulumi_gcp/tpu/__init__.py +1 -0
  158. pulumi_gcp/tpu/_inputs.py +214 -24
  159. pulumi_gcp/tpu/outputs.py +182 -16
  160. pulumi_gcp/tpu/v2_queued_resource.py +434 -0
  161. pulumi_gcp/tpu/v2_vm.py +63 -0
  162. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  163. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  164. pulumi_gcp/vertex/ai_index_endpoint.py +2 -2
  165. {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/METADATA +1 -1
  166. {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/RECORD +168 -147
  167. {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/WHEEL +0 -0
  168. {pulumi_gcp-8.11.0a1734348982.dist-info → pulumi_gcp-8.12.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,917 @@
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
+ from . import outputs
17
+ from ._inputs import *
18
+
19
+ __all__ = ['ProjectsPolicyBindingArgs', 'ProjectsPolicyBinding']
20
+
21
+ @pulumi.input_type
22
+ class ProjectsPolicyBindingArgs:
23
+ def __init__(__self__, *,
24
+ location: pulumi.Input[str],
25
+ policy: pulumi.Input[str],
26
+ policy_binding_id: pulumi.Input[str],
27
+ target: pulumi.Input['ProjectsPolicyBindingTargetArgs'],
28
+ annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
29
+ condition: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']] = None,
30
+ display_name: Optional[pulumi.Input[str]] = None,
31
+ policy_kind: Optional[pulumi.Input[str]] = None,
32
+ project: Optional[pulumi.Input[str]] = None):
33
+ """
34
+ The set of arguments for constructing a ProjectsPolicyBinding resource.
35
+ :param pulumi.Input[str] location: The location of the Policy Binding
36
+ :param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
37
+ :param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
38
+ :param pulumi.Input['ProjectsPolicyBindingTargetArgs'] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
39
+ Structure is documented below.
40
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
41
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
42
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
43
+ :param pulumi.Input['ProjectsPolicyBindingConditionArgs'] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
44
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
45
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
46
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
47
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
48
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
49
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
50
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
51
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
52
+ documentation for additional information.
53
+ :param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
54
+ :param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
55
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
56
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
57
+ """
58
+ pulumi.set(__self__, "location", location)
59
+ pulumi.set(__self__, "policy", policy)
60
+ pulumi.set(__self__, "policy_binding_id", policy_binding_id)
61
+ pulumi.set(__self__, "target", target)
62
+ if annotations is not None:
63
+ pulumi.set(__self__, "annotations", annotations)
64
+ if condition is not None:
65
+ pulumi.set(__self__, "condition", condition)
66
+ if display_name is not None:
67
+ pulumi.set(__self__, "display_name", display_name)
68
+ if policy_kind is not None:
69
+ pulumi.set(__self__, "policy_kind", policy_kind)
70
+ if project is not None:
71
+ pulumi.set(__self__, "project", project)
72
+
73
+ @property
74
+ @pulumi.getter
75
+ def location(self) -> pulumi.Input[str]:
76
+ """
77
+ The location of the Policy Binding
78
+ """
79
+ return pulumi.get(self, "location")
80
+
81
+ @location.setter
82
+ def location(self, value: pulumi.Input[str]):
83
+ pulumi.set(self, "location", value)
84
+
85
+ @property
86
+ @pulumi.getter
87
+ def policy(self) -> pulumi.Input[str]:
88
+ """
89
+ Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
90
+ """
91
+ return pulumi.get(self, "policy")
92
+
93
+ @policy.setter
94
+ def policy(self, value: pulumi.Input[str]):
95
+ pulumi.set(self, "policy", value)
96
+
97
+ @property
98
+ @pulumi.getter(name="policyBindingId")
99
+ def policy_binding_id(self) -> pulumi.Input[str]:
100
+ """
101
+ The Policy Binding ID.
102
+ """
103
+ return pulumi.get(self, "policy_binding_id")
104
+
105
+ @policy_binding_id.setter
106
+ def policy_binding_id(self, value: pulumi.Input[str]):
107
+ pulumi.set(self, "policy_binding_id", value)
108
+
109
+ @property
110
+ @pulumi.getter
111
+ def target(self) -> pulumi.Input['ProjectsPolicyBindingTargetArgs']:
112
+ """
113
+ Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
114
+ Structure is documented below.
115
+ """
116
+ return pulumi.get(self, "target")
117
+
118
+ @target.setter
119
+ def target(self, value: pulumi.Input['ProjectsPolicyBindingTargetArgs']):
120
+ pulumi.set(self, "target", value)
121
+
122
+ @property
123
+ @pulumi.getter
124
+ def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
125
+ """
126
+ Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
127
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
128
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
129
+ """
130
+ return pulumi.get(self, "annotations")
131
+
132
+ @annotations.setter
133
+ def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
134
+ pulumi.set(self, "annotations", value)
135
+
136
+ @property
137
+ @pulumi.getter
138
+ def condition(self) -> Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]:
139
+ """
140
+ Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
141
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
142
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
143
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
144
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
145
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
146
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
147
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
148
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
149
+ documentation for additional information.
150
+ """
151
+ return pulumi.get(self, "condition")
152
+
153
+ @condition.setter
154
+ def condition(self, value: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]):
155
+ pulumi.set(self, "condition", value)
156
+
157
+ @property
158
+ @pulumi.getter(name="displayName")
159
+ def display_name(self) -> Optional[pulumi.Input[str]]:
160
+ """
161
+ Optional. The description of the policy binding. Must be less than or equal to 63 characters.
162
+ """
163
+ return pulumi.get(self, "display_name")
164
+
165
+ @display_name.setter
166
+ def display_name(self, value: Optional[pulumi.Input[str]]):
167
+ pulumi.set(self, "display_name", value)
168
+
169
+ @property
170
+ @pulumi.getter(name="policyKind")
171
+ def policy_kind(self) -> Optional[pulumi.Input[str]]:
172
+ """
173
+ Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
174
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
175
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
176
+ """
177
+ return pulumi.get(self, "policy_kind")
178
+
179
+ @policy_kind.setter
180
+ def policy_kind(self, value: Optional[pulumi.Input[str]]):
181
+ pulumi.set(self, "policy_kind", value)
182
+
183
+ @property
184
+ @pulumi.getter
185
+ def project(self) -> Optional[pulumi.Input[str]]:
186
+ return pulumi.get(self, "project")
187
+
188
+ @project.setter
189
+ def project(self, value: Optional[pulumi.Input[str]]):
190
+ pulumi.set(self, "project", value)
191
+
192
+
193
+ @pulumi.input_type
194
+ class _ProjectsPolicyBindingState:
195
+ def __init__(__self__, *,
196
+ annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
197
+ condition: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']] = None,
198
+ create_time: Optional[pulumi.Input[str]] = None,
199
+ display_name: Optional[pulumi.Input[str]] = None,
200
+ effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
201
+ etag: Optional[pulumi.Input[str]] = None,
202
+ location: Optional[pulumi.Input[str]] = None,
203
+ name: Optional[pulumi.Input[str]] = None,
204
+ policy: Optional[pulumi.Input[str]] = None,
205
+ policy_binding_id: Optional[pulumi.Input[str]] = None,
206
+ policy_kind: Optional[pulumi.Input[str]] = None,
207
+ policy_uid: Optional[pulumi.Input[str]] = None,
208
+ project: Optional[pulumi.Input[str]] = None,
209
+ target: Optional[pulumi.Input['ProjectsPolicyBindingTargetArgs']] = None,
210
+ uid: Optional[pulumi.Input[str]] = None,
211
+ update_time: Optional[pulumi.Input[str]] = None):
212
+ """
213
+ Input properties used for looking up and filtering ProjectsPolicyBinding resources.
214
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
215
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
216
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
217
+ :param pulumi.Input['ProjectsPolicyBindingConditionArgs'] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
218
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
219
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
220
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
221
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
222
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
223
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
224
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
225
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
226
+ documentation for additional information.
227
+ :param pulumi.Input[str] create_time: Output only. The time when the policy binding was created.
228
+ :param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
229
+ :param pulumi.Input[str] etag: Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
230
+ :param pulumi.Input[str] location: The location of the Policy Binding
231
+ :param pulumi.Input[str] name: The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
232
+ :param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
233
+ :param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
234
+ :param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
235
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
236
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
237
+ :param pulumi.Input[str] policy_uid: Output only. The globally unique ID of the policy to be bound.
238
+ :param pulumi.Input['ProjectsPolicyBindingTargetArgs'] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
239
+ Structure is documented below.
240
+ :param pulumi.Input[str] uid: Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
241
+ :param pulumi.Input[str] update_time: Output only. The time when the policy binding was most recently updated.
242
+ """
243
+ if annotations is not None:
244
+ pulumi.set(__self__, "annotations", annotations)
245
+ if condition is not None:
246
+ pulumi.set(__self__, "condition", condition)
247
+ if create_time is not None:
248
+ pulumi.set(__self__, "create_time", create_time)
249
+ if display_name is not None:
250
+ pulumi.set(__self__, "display_name", display_name)
251
+ if effective_annotations is not None:
252
+ pulumi.set(__self__, "effective_annotations", effective_annotations)
253
+ if etag is not None:
254
+ pulumi.set(__self__, "etag", etag)
255
+ if location is not None:
256
+ pulumi.set(__self__, "location", location)
257
+ if name is not None:
258
+ pulumi.set(__self__, "name", name)
259
+ if policy is not None:
260
+ pulumi.set(__self__, "policy", policy)
261
+ if policy_binding_id is not None:
262
+ pulumi.set(__self__, "policy_binding_id", policy_binding_id)
263
+ if policy_kind is not None:
264
+ pulumi.set(__self__, "policy_kind", policy_kind)
265
+ if policy_uid is not None:
266
+ pulumi.set(__self__, "policy_uid", policy_uid)
267
+ if project is not None:
268
+ pulumi.set(__self__, "project", project)
269
+ if target is not None:
270
+ pulumi.set(__self__, "target", target)
271
+ if uid is not None:
272
+ pulumi.set(__self__, "uid", uid)
273
+ if update_time is not None:
274
+ pulumi.set(__self__, "update_time", update_time)
275
+
276
+ @property
277
+ @pulumi.getter
278
+ def annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
279
+ """
280
+ Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
281
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
282
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
283
+ """
284
+ return pulumi.get(self, "annotations")
285
+
286
+ @annotations.setter
287
+ def annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
288
+ pulumi.set(self, "annotations", value)
289
+
290
+ @property
291
+ @pulumi.getter
292
+ def condition(self) -> Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]:
293
+ """
294
+ Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
295
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
296
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
297
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
298
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
299
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
300
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
301
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
302
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
303
+ documentation for additional information.
304
+ """
305
+ return pulumi.get(self, "condition")
306
+
307
+ @condition.setter
308
+ def condition(self, value: Optional[pulumi.Input['ProjectsPolicyBindingConditionArgs']]):
309
+ pulumi.set(self, "condition", value)
310
+
311
+ @property
312
+ @pulumi.getter(name="createTime")
313
+ def create_time(self) -> Optional[pulumi.Input[str]]:
314
+ """
315
+ Output only. The time when the policy binding was created.
316
+ """
317
+ return pulumi.get(self, "create_time")
318
+
319
+ @create_time.setter
320
+ def create_time(self, value: Optional[pulumi.Input[str]]):
321
+ pulumi.set(self, "create_time", value)
322
+
323
+ @property
324
+ @pulumi.getter(name="displayName")
325
+ def display_name(self) -> Optional[pulumi.Input[str]]:
326
+ """
327
+ Optional. The description of the policy binding. Must be less than or equal to 63 characters.
328
+ """
329
+ return pulumi.get(self, "display_name")
330
+
331
+ @display_name.setter
332
+ def display_name(self, value: Optional[pulumi.Input[str]]):
333
+ pulumi.set(self, "display_name", value)
334
+
335
+ @property
336
+ @pulumi.getter(name="effectiveAnnotations")
337
+ def effective_annotations(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
338
+ return pulumi.get(self, "effective_annotations")
339
+
340
+ @effective_annotations.setter
341
+ def effective_annotations(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
342
+ pulumi.set(self, "effective_annotations", value)
343
+
344
+ @property
345
+ @pulumi.getter
346
+ def etag(self) -> Optional[pulumi.Input[str]]:
347
+ """
348
+ Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
349
+ """
350
+ return pulumi.get(self, "etag")
351
+
352
+ @etag.setter
353
+ def etag(self, value: Optional[pulumi.Input[str]]):
354
+ pulumi.set(self, "etag", value)
355
+
356
+ @property
357
+ @pulumi.getter
358
+ def location(self) -> Optional[pulumi.Input[str]]:
359
+ """
360
+ The location of the Policy Binding
361
+ """
362
+ return pulumi.get(self, "location")
363
+
364
+ @location.setter
365
+ def location(self, value: Optional[pulumi.Input[str]]):
366
+ pulumi.set(self, "location", value)
367
+
368
+ @property
369
+ @pulumi.getter
370
+ def name(self) -> Optional[pulumi.Input[str]]:
371
+ """
372
+ The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
373
+ """
374
+ return pulumi.get(self, "name")
375
+
376
+ @name.setter
377
+ def name(self, value: Optional[pulumi.Input[str]]):
378
+ pulumi.set(self, "name", value)
379
+
380
+ @property
381
+ @pulumi.getter
382
+ def policy(self) -> Optional[pulumi.Input[str]]:
383
+ """
384
+ Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
385
+ """
386
+ return pulumi.get(self, "policy")
387
+
388
+ @policy.setter
389
+ def policy(self, value: Optional[pulumi.Input[str]]):
390
+ pulumi.set(self, "policy", value)
391
+
392
+ @property
393
+ @pulumi.getter(name="policyBindingId")
394
+ def policy_binding_id(self) -> Optional[pulumi.Input[str]]:
395
+ """
396
+ The Policy Binding ID.
397
+ """
398
+ return pulumi.get(self, "policy_binding_id")
399
+
400
+ @policy_binding_id.setter
401
+ def policy_binding_id(self, value: Optional[pulumi.Input[str]]):
402
+ pulumi.set(self, "policy_binding_id", value)
403
+
404
+ @property
405
+ @pulumi.getter(name="policyKind")
406
+ def policy_kind(self) -> Optional[pulumi.Input[str]]:
407
+ """
408
+ Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
409
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
410
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
411
+ """
412
+ return pulumi.get(self, "policy_kind")
413
+
414
+ @policy_kind.setter
415
+ def policy_kind(self, value: Optional[pulumi.Input[str]]):
416
+ pulumi.set(self, "policy_kind", value)
417
+
418
+ @property
419
+ @pulumi.getter(name="policyUid")
420
+ def policy_uid(self) -> Optional[pulumi.Input[str]]:
421
+ """
422
+ Output only. The globally unique ID of the policy to be bound.
423
+ """
424
+ return pulumi.get(self, "policy_uid")
425
+
426
+ @policy_uid.setter
427
+ def policy_uid(self, value: Optional[pulumi.Input[str]]):
428
+ pulumi.set(self, "policy_uid", value)
429
+
430
+ @property
431
+ @pulumi.getter
432
+ def project(self) -> Optional[pulumi.Input[str]]:
433
+ return pulumi.get(self, "project")
434
+
435
+ @project.setter
436
+ def project(self, value: Optional[pulumi.Input[str]]):
437
+ pulumi.set(self, "project", value)
438
+
439
+ @property
440
+ @pulumi.getter
441
+ def target(self) -> Optional[pulumi.Input['ProjectsPolicyBindingTargetArgs']]:
442
+ """
443
+ Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
444
+ Structure is documented below.
445
+ """
446
+ return pulumi.get(self, "target")
447
+
448
+ @target.setter
449
+ def target(self, value: Optional[pulumi.Input['ProjectsPolicyBindingTargetArgs']]):
450
+ pulumi.set(self, "target", value)
451
+
452
+ @property
453
+ @pulumi.getter
454
+ def uid(self) -> Optional[pulumi.Input[str]]:
455
+ """
456
+ Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
457
+ """
458
+ return pulumi.get(self, "uid")
459
+
460
+ @uid.setter
461
+ def uid(self, value: Optional[pulumi.Input[str]]):
462
+ pulumi.set(self, "uid", value)
463
+
464
+ @property
465
+ @pulumi.getter(name="updateTime")
466
+ def update_time(self) -> Optional[pulumi.Input[str]]:
467
+ """
468
+ Output only. The time when the policy binding was most recently updated.
469
+ """
470
+ return pulumi.get(self, "update_time")
471
+
472
+ @update_time.setter
473
+ def update_time(self, value: Optional[pulumi.Input[str]]):
474
+ pulumi.set(self, "update_time", value)
475
+
476
+
477
+ class ProjectsPolicyBinding(pulumi.CustomResource):
478
+ @overload
479
+ def __init__(__self__,
480
+ resource_name: str,
481
+ opts: Optional[pulumi.ResourceOptions] = None,
482
+ annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
483
+ condition: Optional[pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']]] = None,
484
+ display_name: Optional[pulumi.Input[str]] = None,
485
+ location: Optional[pulumi.Input[str]] = None,
486
+ policy: Optional[pulumi.Input[str]] = None,
487
+ policy_binding_id: Optional[pulumi.Input[str]] = None,
488
+ policy_kind: Optional[pulumi.Input[str]] = None,
489
+ project: Optional[pulumi.Input[str]] = None,
490
+ target: Optional[pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']]] = None,
491
+ __props__=None):
492
+ """
493
+ A policy binding to a Project
494
+
495
+ To get more information about ProjectsPolicyBinding, see:
496
+
497
+ * [API documentation](https://cloud.google.com/iam/docs/reference/rest/v3/projects.locations.policyBindings)
498
+ * How-to Guides
499
+ * [Apply a policy binding](https://cloud.google.com/iam/docs/principal-access-boundary-policies-create#create_binding)
500
+
501
+ ## Example Usage
502
+
503
+ ### Iam Projects Policy Binding
504
+
505
+ ```python
506
+ import pulumi
507
+ import pulumi_gcp as gcp
508
+
509
+ project = gcp.organizations.get_project()
510
+ pab_policy = gcp.iam.PrincipalAccessBoundaryPolicy("pab_policy",
511
+ organization="123456789",
512
+ location="global",
513
+ display_name="test project binding",
514
+ principal_access_boundary_policy_id="my-pab-policy")
515
+ my_project_binding = gcp.iam.ProjectsPolicyBinding("my-project-binding",
516
+ project=project.project_id,
517
+ location="global",
518
+ display_name="test project binding",
519
+ policy_kind="PRINCIPAL_ACCESS_BOUNDARY",
520
+ policy_binding_id="test-project-binding",
521
+ policy=pab_policy.principal_access_boundary_policy_id.apply(lambda principal_access_boundary_policy_id: f"organizations/123456789/locations/global/principalAccessBoundaryPolicies/{principal_access_boundary_policy_id}"),
522
+ target={
523
+ "principal_set": f"//cloudresourcemanager.googleapis.com/projects/{project.project_id}",
524
+ })
525
+ ```
526
+
527
+ ## Import
528
+
529
+ ProjectsPolicyBinding can be imported using any of these accepted formats:
530
+
531
+ * `projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}`
532
+
533
+ * `{{project}}/{{location}}/{{policy_binding_id}}`
534
+
535
+ * `{{location}}/{{policy_binding_id}}`
536
+
537
+ When using the `pulumi import` command, ProjectsPolicyBinding can be imported using one of the formats above. For example:
538
+
539
+ ```sh
540
+ $ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}
541
+ ```
542
+
543
+ ```sh
544
+ $ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{project}}/{{location}}/{{policy_binding_id}}
545
+ ```
546
+
547
+ ```sh
548
+ $ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{location}}/{{policy_binding_id}}
549
+ ```
550
+
551
+ :param str resource_name: The name of the resource.
552
+ :param pulumi.ResourceOptions opts: Options for the resource.
553
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
554
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
555
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
556
+ :param pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
557
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
558
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
559
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
560
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
561
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
562
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
563
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
564
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
565
+ documentation for additional information.
566
+ :param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
567
+ :param pulumi.Input[str] location: The location of the Policy Binding
568
+ :param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
569
+ :param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
570
+ :param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
571
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
572
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
573
+ :param pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
574
+ Structure is documented below.
575
+ """
576
+ ...
577
+ @overload
578
+ def __init__(__self__,
579
+ resource_name: str,
580
+ args: ProjectsPolicyBindingArgs,
581
+ opts: Optional[pulumi.ResourceOptions] = None):
582
+ """
583
+ A policy binding to a Project
584
+
585
+ To get more information about ProjectsPolicyBinding, see:
586
+
587
+ * [API documentation](https://cloud.google.com/iam/docs/reference/rest/v3/projects.locations.policyBindings)
588
+ * How-to Guides
589
+ * [Apply a policy binding](https://cloud.google.com/iam/docs/principal-access-boundary-policies-create#create_binding)
590
+
591
+ ## Example Usage
592
+
593
+ ### Iam Projects Policy Binding
594
+
595
+ ```python
596
+ import pulumi
597
+ import pulumi_gcp as gcp
598
+
599
+ project = gcp.organizations.get_project()
600
+ pab_policy = gcp.iam.PrincipalAccessBoundaryPolicy("pab_policy",
601
+ organization="123456789",
602
+ location="global",
603
+ display_name="test project binding",
604
+ principal_access_boundary_policy_id="my-pab-policy")
605
+ my_project_binding = gcp.iam.ProjectsPolicyBinding("my-project-binding",
606
+ project=project.project_id,
607
+ location="global",
608
+ display_name="test project binding",
609
+ policy_kind="PRINCIPAL_ACCESS_BOUNDARY",
610
+ policy_binding_id="test-project-binding",
611
+ policy=pab_policy.principal_access_boundary_policy_id.apply(lambda principal_access_boundary_policy_id: f"organizations/123456789/locations/global/principalAccessBoundaryPolicies/{principal_access_boundary_policy_id}"),
612
+ target={
613
+ "principal_set": f"//cloudresourcemanager.googleapis.com/projects/{project.project_id}",
614
+ })
615
+ ```
616
+
617
+ ## Import
618
+
619
+ ProjectsPolicyBinding can be imported using any of these accepted formats:
620
+
621
+ * `projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}`
622
+
623
+ * `{{project}}/{{location}}/{{policy_binding_id}}`
624
+
625
+ * `{{location}}/{{policy_binding_id}}`
626
+
627
+ When using the `pulumi import` command, ProjectsPolicyBinding can be imported using one of the formats above. For example:
628
+
629
+ ```sh
630
+ $ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default projects/{{project}}/locations/{{location}}/policyBindings/{{policy_binding_id}}
631
+ ```
632
+
633
+ ```sh
634
+ $ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{project}}/{{location}}/{{policy_binding_id}}
635
+ ```
636
+
637
+ ```sh
638
+ $ pulumi import gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding default {{location}}/{{policy_binding_id}}
639
+ ```
640
+
641
+ :param str resource_name: The name of the resource.
642
+ :param ProjectsPolicyBindingArgs args: The arguments to use to populate this resource's properties.
643
+ :param pulumi.ResourceOptions opts: Options for the resource.
644
+ """
645
+ ...
646
+ def __init__(__self__, resource_name: str, *args, **kwargs):
647
+ resource_args, opts = _utilities.get_resource_args_opts(ProjectsPolicyBindingArgs, pulumi.ResourceOptions, *args, **kwargs)
648
+ if resource_args is not None:
649
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
650
+ else:
651
+ __self__._internal_init(resource_name, *args, **kwargs)
652
+
653
+ def _internal_init(__self__,
654
+ resource_name: str,
655
+ opts: Optional[pulumi.ResourceOptions] = None,
656
+ annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
657
+ condition: Optional[pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']]] = None,
658
+ display_name: Optional[pulumi.Input[str]] = None,
659
+ location: Optional[pulumi.Input[str]] = None,
660
+ policy: Optional[pulumi.Input[str]] = None,
661
+ policy_binding_id: Optional[pulumi.Input[str]] = None,
662
+ policy_kind: Optional[pulumi.Input[str]] = None,
663
+ project: Optional[pulumi.Input[str]] = None,
664
+ target: Optional[pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']]] = None,
665
+ __props__=None):
666
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
667
+ if not isinstance(opts, pulumi.ResourceOptions):
668
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
669
+ if opts.id is None:
670
+ if __props__ is not None:
671
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
672
+ __props__ = ProjectsPolicyBindingArgs.__new__(ProjectsPolicyBindingArgs)
673
+
674
+ __props__.__dict__["annotations"] = annotations
675
+ __props__.__dict__["condition"] = condition
676
+ __props__.__dict__["display_name"] = display_name
677
+ if location is None and not opts.urn:
678
+ raise TypeError("Missing required property 'location'")
679
+ __props__.__dict__["location"] = location
680
+ if policy is None and not opts.urn:
681
+ raise TypeError("Missing required property 'policy'")
682
+ __props__.__dict__["policy"] = policy
683
+ if policy_binding_id is None and not opts.urn:
684
+ raise TypeError("Missing required property 'policy_binding_id'")
685
+ __props__.__dict__["policy_binding_id"] = policy_binding_id
686
+ __props__.__dict__["policy_kind"] = policy_kind
687
+ __props__.__dict__["project"] = project
688
+ if target is None and not opts.urn:
689
+ raise TypeError("Missing required property 'target'")
690
+ __props__.__dict__["target"] = target
691
+ __props__.__dict__["create_time"] = None
692
+ __props__.__dict__["effective_annotations"] = None
693
+ __props__.__dict__["etag"] = None
694
+ __props__.__dict__["name"] = None
695
+ __props__.__dict__["policy_uid"] = None
696
+ __props__.__dict__["uid"] = None
697
+ __props__.__dict__["update_time"] = None
698
+ super(ProjectsPolicyBinding, __self__).__init__(
699
+ 'gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding',
700
+ resource_name,
701
+ __props__,
702
+ opts)
703
+
704
+ @staticmethod
705
+ def get(resource_name: str,
706
+ id: pulumi.Input[str],
707
+ opts: Optional[pulumi.ResourceOptions] = None,
708
+ annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
709
+ condition: Optional[pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']]] = None,
710
+ create_time: Optional[pulumi.Input[str]] = None,
711
+ display_name: Optional[pulumi.Input[str]] = None,
712
+ effective_annotations: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
713
+ etag: Optional[pulumi.Input[str]] = None,
714
+ location: Optional[pulumi.Input[str]] = None,
715
+ name: Optional[pulumi.Input[str]] = None,
716
+ policy: Optional[pulumi.Input[str]] = None,
717
+ policy_binding_id: Optional[pulumi.Input[str]] = None,
718
+ policy_kind: Optional[pulumi.Input[str]] = None,
719
+ policy_uid: Optional[pulumi.Input[str]] = None,
720
+ project: Optional[pulumi.Input[str]] = None,
721
+ target: Optional[pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']]] = None,
722
+ uid: Optional[pulumi.Input[str]] = None,
723
+ update_time: Optional[pulumi.Input[str]] = None) -> 'ProjectsPolicyBinding':
724
+ """
725
+ Get an existing ProjectsPolicyBinding resource's state with the given name, id, and optional extra
726
+ properties used to qualify the lookup.
727
+
728
+ :param str resource_name: The unique name of the resulting resource.
729
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
730
+ :param pulumi.ResourceOptions opts: Options for the resource.
731
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] annotations: Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
732
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
733
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
734
+ :param pulumi.Input[Union['ProjectsPolicyBindingConditionArgs', 'ProjectsPolicyBindingConditionArgsDict']] condition: Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
735
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
736
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
737
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
738
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
739
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
740
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
741
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
742
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
743
+ documentation for additional information.
744
+ :param pulumi.Input[str] create_time: Output only. The time when the policy binding was created.
745
+ :param pulumi.Input[str] display_name: Optional. The description of the policy binding. Must be less than or equal to 63 characters.
746
+ :param pulumi.Input[str] etag: Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
747
+ :param pulumi.Input[str] location: The location of the Policy Binding
748
+ :param pulumi.Input[str] name: The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
749
+ :param pulumi.Input[str] policy: Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
750
+ :param pulumi.Input[str] policy_binding_id: The Policy Binding ID.
751
+ :param pulumi.Input[str] policy_kind: Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
752
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
753
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
754
+ :param pulumi.Input[str] policy_uid: Output only. The globally unique ID of the policy to be bound.
755
+ :param pulumi.Input[Union['ProjectsPolicyBindingTargetArgs', 'ProjectsPolicyBindingTargetArgsDict']] target: Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
756
+ Structure is documented below.
757
+ :param pulumi.Input[str] uid: Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
758
+ :param pulumi.Input[str] update_time: Output only. The time when the policy binding was most recently updated.
759
+ """
760
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
761
+
762
+ __props__ = _ProjectsPolicyBindingState.__new__(_ProjectsPolicyBindingState)
763
+
764
+ __props__.__dict__["annotations"] = annotations
765
+ __props__.__dict__["condition"] = condition
766
+ __props__.__dict__["create_time"] = create_time
767
+ __props__.__dict__["display_name"] = display_name
768
+ __props__.__dict__["effective_annotations"] = effective_annotations
769
+ __props__.__dict__["etag"] = etag
770
+ __props__.__dict__["location"] = location
771
+ __props__.__dict__["name"] = name
772
+ __props__.__dict__["policy"] = policy
773
+ __props__.__dict__["policy_binding_id"] = policy_binding_id
774
+ __props__.__dict__["policy_kind"] = policy_kind
775
+ __props__.__dict__["policy_uid"] = policy_uid
776
+ __props__.__dict__["project"] = project
777
+ __props__.__dict__["target"] = target
778
+ __props__.__dict__["uid"] = uid
779
+ __props__.__dict__["update_time"] = update_time
780
+ return ProjectsPolicyBinding(resource_name, opts=opts, __props__=__props__)
781
+
782
+ @property
783
+ @pulumi.getter
784
+ def annotations(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
785
+ """
786
+ Optional. User defined annotations. See https://google.aip.dev/148#annotations for more details such as format and size
787
+ limitations **Note**: This field is non-authoritative, and will only manage the annotations present in your
788
+ configuration. Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
789
+ """
790
+ return pulumi.get(self, "annotations")
791
+
792
+ @property
793
+ @pulumi.getter
794
+ def condition(self) -> pulumi.Output[Optional['outputs.ProjectsPolicyBindingCondition']]:
795
+ """
796
+ Represents a textual expression in the Common Expression Language (CEL) syntax. CEL is a C-like expression language. The
797
+ syntax and semantics of CEL are documented at https://github.com/google/cel-spec. Example (Comparison): title: \\"Summary
798
+ size limit\\" description: \\"Determines if a summary is less than 100 chars\\" expression: \\"document.summary.size() <
799
+ 100\\" Example (Equality): title: \\"Requestor is owner\\" description: \\"Determines if requestor is the document owner\\"
800
+ expression: \\"document.owner == request.auth.claims.email\\" Example (Logic): title: \\"Public documents\\" description:
801
+ \\"Determine whether the document should be publicly visible\\" expression: \\"document.type != 'private' && document.type
802
+ != 'internal'\\" Example (Data Manipulation): title: \\"Notification string\\" description: \\"Create a notification string
803
+ with a timestamp.\\" expression: \\"'New message received at ' + string(document.create_time)\\" The exact variables and
804
+ functions that may be referenced within an expression are determined by the service that evaluates it. See the service
805
+ documentation for additional information.
806
+ """
807
+ return pulumi.get(self, "condition")
808
+
809
+ @property
810
+ @pulumi.getter(name="createTime")
811
+ def create_time(self) -> pulumi.Output[str]:
812
+ """
813
+ Output only. The time when the policy binding was created.
814
+ """
815
+ return pulumi.get(self, "create_time")
816
+
817
+ @property
818
+ @pulumi.getter(name="displayName")
819
+ def display_name(self) -> pulumi.Output[Optional[str]]:
820
+ """
821
+ Optional. The description of the policy binding. Must be less than or equal to 63 characters.
822
+ """
823
+ return pulumi.get(self, "display_name")
824
+
825
+ @property
826
+ @pulumi.getter(name="effectiveAnnotations")
827
+ def effective_annotations(self) -> pulumi.Output[Mapping[str, str]]:
828
+ return pulumi.get(self, "effective_annotations")
829
+
830
+ @property
831
+ @pulumi.getter
832
+ def etag(self) -> pulumi.Output[str]:
833
+ """
834
+ Optional. The etag for the policy binding. If this is provided on update, it must match the server's etag.
835
+ """
836
+ return pulumi.get(self, "etag")
837
+
838
+ @property
839
+ @pulumi.getter
840
+ def location(self) -> pulumi.Output[str]:
841
+ """
842
+ The location of the Policy Binding
843
+ """
844
+ return pulumi.get(self, "location")
845
+
846
+ @property
847
+ @pulumi.getter
848
+ def name(self) -> pulumi.Output[str]:
849
+ """
850
+ The name of the policy binding in the format `{binding_parent/locations/{location}/policyBindings/{policy_binding_id}`
851
+ """
852
+ return pulumi.get(self, "name")
853
+
854
+ @property
855
+ @pulumi.getter
856
+ def policy(self) -> pulumi.Output[str]:
857
+ """
858
+ Required. Immutable. The resource name of the policy to be bound. The binding parent and policy must belong to the same Organization (or Project).
859
+ """
860
+ return pulumi.get(self, "policy")
861
+
862
+ @property
863
+ @pulumi.getter(name="policyBindingId")
864
+ def policy_binding_id(self) -> pulumi.Output[str]:
865
+ """
866
+ The Policy Binding ID.
867
+ """
868
+ return pulumi.get(self, "policy_binding_id")
869
+
870
+ @property
871
+ @pulumi.getter(name="policyKind")
872
+ def policy_kind(self) -> pulumi.Output[Optional[str]]:
873
+ """
874
+ Immutable. The kind of the policy to attach in this binding. This field must be one of the following: - Left empty (will
875
+ be automatically set to the policy kind) - The input policy kind Possible values: POLICY_KIND_UNSPECIFIED
876
+ PRINCIPAL_ACCESS_BOUNDARY ACCESS
877
+ """
878
+ return pulumi.get(self, "policy_kind")
879
+
880
+ @property
881
+ @pulumi.getter(name="policyUid")
882
+ def policy_uid(self) -> pulumi.Output[str]:
883
+ """
884
+ Output only. The globally unique ID of the policy to be bound.
885
+ """
886
+ return pulumi.get(self, "policy_uid")
887
+
888
+ @property
889
+ @pulumi.getter
890
+ def project(self) -> pulumi.Output[str]:
891
+ return pulumi.get(self, "project")
892
+
893
+ @property
894
+ @pulumi.getter
895
+ def target(self) -> pulumi.Output['outputs.ProjectsPolicyBindingTarget']:
896
+ """
897
+ Target is the full resource name of the resource to which the policy will be bound. Immutable once set.
898
+ Structure is documented below.
899
+ """
900
+ return pulumi.get(self, "target")
901
+
902
+ @property
903
+ @pulumi.getter
904
+ def uid(self) -> pulumi.Output[str]:
905
+ """
906
+ Output only. The globally unique ID of the policy binding. Assigned when the policy binding is created.
907
+ """
908
+ return pulumi.get(self, "uid")
909
+
910
+ @property
911
+ @pulumi.getter(name="updateTime")
912
+ def update_time(self) -> pulumi.Output[str]:
913
+ """
914
+ Output only. The time when the policy binding was most recently updated.
915
+ """
916
+ return pulumi.get(self, "update_time")
917
+