pulumi-gcp 7.28.0a1718950249__py3-none-any.whl → 7.29.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 (214) hide show
  1. pulumi_gcp/__init__.py +67 -0
  2. pulumi_gcp/_utilities.py +35 -0
  3. pulumi_gcp/accesscontextmanager/_inputs.py +58 -74
  4. pulumi_gcp/accesscontextmanager/access_levels.py +0 -20
  5. pulumi_gcp/accesscontextmanager/outputs.py +58 -74
  6. pulumi_gcp/accesscontextmanager/service_perimeter.py +2 -0
  7. pulumi_gcp/activedirectory/domain.py +14 -14
  8. pulumi_gcp/activedirectory/domain_trust.py +14 -14
  9. pulumi_gcp/alloydb/backup.py +8 -8
  10. pulumi_gcp/alloydb/cluster.py +11 -17
  11. pulumi_gcp/alloydb/instance.py +8 -8
  12. pulumi_gcp/alloydb/user.py +8 -8
  13. pulumi_gcp/apigee/addons_config.py +4 -4
  14. pulumi_gcp/apigee/endpoint_attachment.py +2 -2
  15. pulumi_gcp/apigee/env_group.py +2 -2
  16. pulumi_gcp/apigee/environment.py +2 -2
  17. pulumi_gcp/apigee/instance.py +8 -8
  18. pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +10 -10
  19. pulumi_gcp/apigee/nat_address.py +2 -2
  20. pulumi_gcp/apigee/organization.py +6 -6
  21. pulumi_gcp/apigee/sync_authorization.py +4 -4
  22. pulumi_gcp/apigee/target_server.py +10 -10
  23. pulumi_gcp/apphub/service.py +20 -20
  24. pulumi_gcp/apphub/service_project_attachment.py +8 -8
  25. pulumi_gcp/applicationintegration/auth_config.py +2 -2
  26. pulumi_gcp/applicationintegration/client.py +6 -18
  27. pulumi_gcp/artifactregistry/__init__.py +1 -0
  28. pulumi_gcp/artifactregistry/_inputs.py +4 -4
  29. pulumi_gcp/artifactregistry/get_docker_image.py +244 -0
  30. pulumi_gcp/artifactregistry/outputs.py +6 -6
  31. pulumi_gcp/artifactregistry/repository.py +10 -10
  32. pulumi_gcp/backupdisasterrecovery/management_server.py +2 -2
  33. pulumi_gcp/bigquery/_inputs.py +2 -6
  34. pulumi_gcp/bigquery/data_transfer_config.py +4 -4
  35. pulumi_gcp/bigquery/dataset.py +75 -0
  36. pulumi_gcp/bigquery/get_dataset.py +11 -1
  37. pulumi_gcp/bigquery/job.py +6 -6
  38. pulumi_gcp/bigquery/outputs.py +2 -6
  39. pulumi_gcp/bigtable/_inputs.py +41 -3
  40. pulumi_gcp/bigtable/instance.py +3 -9
  41. pulumi_gcp/bigtable/outputs.py +50 -3
  42. pulumi_gcp/bigtable/table.py +54 -0
  43. pulumi_gcp/billing/_inputs.py +22 -0
  44. pulumi_gcp/billing/budget.py +50 -0
  45. pulumi_gcp/billing/outputs.py +20 -0
  46. pulumi_gcp/certificateauthority/authority.py +2 -2
  47. pulumi_gcp/certificateauthority/certificate.py +4 -4
  48. pulumi_gcp/certificatemanager/_inputs.py +2 -6
  49. pulumi_gcp/certificatemanager/certificate.py +4 -4
  50. pulumi_gcp/certificatemanager/certificate_issuance_config.py +2 -2
  51. pulumi_gcp/certificatemanager/outputs.py +2 -6
  52. pulumi_gcp/cloudbuild/bitbucket_server_config.py +6 -6
  53. pulumi_gcp/cloudbuild/trigger.py +2 -2
  54. pulumi_gcp/cloudbuild/worker_pool.py +6 -6
  55. pulumi_gcp/cloudbuildv2/_inputs.py +383 -0
  56. pulumi_gcp/cloudbuildv2/connection.py +112 -4
  57. pulumi_gcp/cloudbuildv2/outputs.py +421 -0
  58. pulumi_gcp/cloudbuildv2/repository.py +2 -2
  59. pulumi_gcp/cloudfunctionsv2/function.py +28 -28
  60. pulumi_gcp/cloudids/endpoint.py +2 -2
  61. pulumi_gcp/cloudrun/_inputs.py +3 -9
  62. pulumi_gcp/cloudrun/outputs.py +3 -9
  63. pulumi_gcp/cloudrunv2/get_job.py +21 -1
  64. pulumi_gcp/cloudrunv2/job.py +163 -19
  65. pulumi_gcp/cloudrunv2/service.py +8 -8
  66. pulumi_gcp/composer/__init__.py +3 -0
  67. pulumi_gcp/composer/get_user_workloads_config_map.py +190 -0
  68. pulumi_gcp/composer/get_user_workloads_secret.py +188 -0
  69. pulumi_gcp/composer/user_workloads_config_map.py +475 -0
  70. pulumi_gcp/compute/_inputs.py +87 -2
  71. pulumi_gcp/compute/backend_service.py +28 -48
  72. pulumi_gcp/compute/disk.py +3 -9
  73. pulumi_gcp/compute/firewall.py +3 -9
  74. pulumi_gcp/compute/forwarding_rule.py +22 -22
  75. pulumi_gcp/compute/interconnect.py +4 -4
  76. pulumi_gcp/compute/outputs.py +176 -5
  77. pulumi_gcp/compute/packet_mirroring.py +2 -2
  78. pulumi_gcp/compute/project_cloud_armor_tier.py +2 -2
  79. pulumi_gcp/compute/region_backend_service.py +35 -48
  80. pulumi_gcp/compute/region_disk.py +3 -9
  81. pulumi_gcp/compute/region_network_endpoint.py +187 -0
  82. pulumi_gcp/compute/region_network_endpoint_group.py +49 -9
  83. pulumi_gcp/compute/region_security_policy_rule.py +2 -2
  84. pulumi_gcp/compute/region_target_https_proxy.py +7 -14
  85. pulumi_gcp/compute/route.py +2 -2
  86. pulumi_gcp/compute/subnetwork.py +2 -6
  87. pulumi_gcp/compute/target_https_proxy.py +28 -14
  88. pulumi_gcp/compute/target_instance.py +2 -2
  89. pulumi_gcp/compute/vpn_gateway.py +2 -2
  90. pulumi_gcp/compute/vpn_tunnel.py +2 -2
  91. pulumi_gcp/config/__init__.pyi +2 -0
  92. pulumi_gcp/config/vars.py +4 -0
  93. pulumi_gcp/container/_inputs.py +4 -8
  94. pulumi_gcp/container/outputs.py +6 -10
  95. pulumi_gcp/databasemigrationservice/connection_profile.py +16 -16
  96. pulumi_gcp/datacatalog/policy_tag.py +2 -2
  97. pulumi_gcp/datafusion/instance.py +4 -8
  98. pulumi_gcp/dataplex/asset.py +2 -2
  99. pulumi_gcp/dataplex/datascan.py +2 -2
  100. pulumi_gcp/dataproc/_inputs.py +100 -0
  101. pulumi_gcp/dataproc/metastore_service.py +172 -0
  102. pulumi_gcp/dataproc/outputs.py +192 -1
  103. pulumi_gcp/dataproc/workflow_template.py +3 -9
  104. pulumi_gcp/datastore/data_store_index.py +2 -2
  105. pulumi_gcp/datastream/stream.py +6 -6
  106. pulumi_gcp/diagflow/entity_type.py +2 -2
  107. pulumi_gcp/diagflow/fulfillment.py +2 -2
  108. pulumi_gcp/diagflow/intent.py +4 -4
  109. pulumi_gcp/discoveryengine/_inputs.py +227 -0
  110. pulumi_gcp/discoveryengine/data_store.py +108 -0
  111. pulumi_gcp/discoveryengine/outputs.py +280 -0
  112. pulumi_gcp/edgecontainer/_inputs.py +107 -1
  113. pulumi_gcp/edgecontainer/node_pool.py +2 -2
  114. pulumi_gcp/edgecontainer/outputs.py +123 -1
  115. pulumi_gcp/edgecontainer/vpn_connection.py +2 -2
  116. pulumi_gcp/eventarc/channel.py +2 -2
  117. pulumi_gcp/eventarc/google_channel_config.py +2 -2
  118. pulumi_gcp/filestore/instance.py +3 -9
  119. pulumi_gcp/firebase/app_check_app_attest_config.py +8 -8
  120. pulumi_gcp/firebase/app_check_debug_token.py +4 -4
  121. pulumi_gcp/firebase/app_check_device_check_config.py +4 -4
  122. pulumi_gcp/firebase/app_check_play_integrity_config.py +8 -8
  123. pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +4 -4
  124. pulumi_gcp/firebase/app_check_recaptcha_v3_config.py +4 -4
  125. pulumi_gcp/firebase/app_check_service_config.py +6 -6
  126. pulumi_gcp/firebase/database_instance.py +2 -2
  127. pulumi_gcp/firestore/database.py +4 -4
  128. pulumi_gcp/firestore/document.py +12 -12
  129. pulumi_gcp/folder/access_approval_settings.py +2 -2
  130. pulumi_gcp/gkehub/_inputs.py +20 -8
  131. pulumi_gcp/gkehub/membership.py +3 -9
  132. pulumi_gcp/gkehub/membership_binding.py +4 -4
  133. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  134. pulumi_gcp/gkehub/namespace.py +2 -2
  135. pulumi_gcp/gkehub/outputs.py +19 -9
  136. pulumi_gcp/gkehub/scope_rbac_role_binding.py +2 -2
  137. pulumi_gcp/healthcare/fhir_store.py +3 -9
  138. pulumi_gcp/healthcare/hl7_store.py +3 -9
  139. pulumi_gcp/integrationconnectors/connection.py +2 -2
  140. pulumi_gcp/integrationconnectors/managed_zone.py +6 -6
  141. pulumi_gcp/kms/_inputs.py +1 -3
  142. pulumi_gcp/kms/autokey_config.py +16 -16
  143. pulumi_gcp/kms/key_handle.py +22 -22
  144. pulumi_gcp/kms/outputs.py +1 -3
  145. pulumi_gcp/logging/folder_settings.py +2 -2
  146. pulumi_gcp/logging/folder_sink.py +14 -14
  147. pulumi_gcp/logging/linked_dataset.py +2 -2
  148. pulumi_gcp/logging/organization_settings.py +2 -2
  149. pulumi_gcp/logging/organization_sink.py +14 -14
  150. pulumi_gcp/logging/project_bucket_config.py +2 -2
  151. pulumi_gcp/looker/instance.py +2 -2
  152. pulumi_gcp/managedkafka/__init__.py +11 -0
  153. pulumi_gcp/managedkafka/_inputs.py +169 -0
  154. pulumi_gcp/managedkafka/cluster.py +807 -0
  155. pulumi_gcp/managedkafka/outputs.py +197 -0
  156. pulumi_gcp/managedkafka/topic.py +599 -0
  157. pulumi_gcp/netapp/__init__.py +1 -0
  158. pulumi_gcp/netapp/active_directory.py +55 -0
  159. pulumi_gcp/netapp/backup.py +903 -0
  160. pulumi_gcp/netapp/volume_replication.py +2 -2
  161. pulumi_gcp/netapp/volume_snapshot.py +2 -2
  162. pulumi_gcp/networkconnectivity/internal_range.py +2 -2
  163. pulumi_gcp/networksecurity/gateway_security_policy.py +4 -4
  164. pulumi_gcp/networksecurity/tls_inspection_policy.py +4 -4
  165. pulumi_gcp/networkservices/gateway.py +6 -6
  166. pulumi_gcp/organizations/access_approval_settings.py +2 -2
  167. pulumi_gcp/parallelstore/instance.py +2 -2
  168. pulumi_gcp/projects/access_approval_settings.py +5 -11
  169. pulumi_gcp/provider.py +20 -0
  170. pulumi_gcp/pubsub/_inputs.py +40 -0
  171. pulumi_gcp/pubsub/outputs.py +66 -0
  172. pulumi_gcp/pubsub/schema.py +2 -2
  173. pulumi_gcp/pubsub/subscription.py +174 -8
  174. pulumi_gcp/pubsub/topic.py +2 -2
  175. pulumi_gcp/pulumi-plugin.json +1 -1
  176. pulumi_gcp/redis/cluster.py +4 -4
  177. pulumi_gcp/redis/get_instance.py +11 -1
  178. pulumi_gcp/redis/instance.py +49 -2
  179. pulumi_gcp/secretmanager/secret.py +2 -2
  180. pulumi_gcp/securesourcemanager/instance.py +6 -6
  181. pulumi_gcp/securitycenter/__init__.py +3 -0
  182. pulumi_gcp/securitycenter/_inputs.py +1105 -0
  183. pulumi_gcp/securitycenter/instance_iam_binding.py +2 -2
  184. pulumi_gcp/securitycenter/instance_iam_member.py +2 -2
  185. pulumi_gcp/securitycenter/instance_iam_policy.py +2 -2
  186. pulumi_gcp/securitycenter/management_folder_security_health_analytics_custom_module.py +725 -0
  187. pulumi_gcp/securitycenter/management_organization_security_health_analytics_custom_module.py +713 -0
  188. pulumi_gcp/securitycenter/management_project_security_health_analytics_custom_module.py +706 -0
  189. pulumi_gcp/securitycenter/outputs.py +1048 -0
  190. pulumi_gcp/servicenetworking/__init__.py +1 -0
  191. pulumi_gcp/servicenetworking/vpc_service_controls.py +511 -0
  192. pulumi_gcp/sql/_inputs.py +1 -3
  193. pulumi_gcp/sql/database_instance.py +2 -2
  194. pulumi_gcp/sql/outputs.py +1 -3
  195. pulumi_gcp/sql/user.py +21 -7
  196. pulumi_gcp/storage/get_project_service_account.py +2 -2
  197. pulumi_gcp/storage/insights_report_config.py +2 -2
  198. pulumi_gcp/storage/notification.py +2 -2
  199. pulumi_gcp/storage/transfer_agent_pool.py +2 -2
  200. pulumi_gcp/storage/transfer_job.py +4 -4
  201. pulumi_gcp/tpu/v2_vm.py +4 -4
  202. pulumi_gcp/vertex/_inputs.py +1 -3
  203. pulumi_gcp/vertex/ai_endpoint.py +2 -2
  204. pulumi_gcp/vertex/ai_feature_online_store.py +31 -8
  205. pulumi_gcp/vertex/ai_index_endpoint.py +2 -2
  206. pulumi_gcp/vertex/ai_tensorboard.py +2 -2
  207. pulumi_gcp/vertex/outputs.py +1 -3
  208. pulumi_gcp/vmwareengine/external_address.py +2 -2
  209. pulumi_gcp/vmwareengine/network.py +4 -4
  210. pulumi_gcp/vpcaccess/connector.py +2 -8
  211. {pulumi_gcp-7.28.0a1718950249.dist-info → pulumi_gcp-7.29.0.dist-info}/METADATA +1 -1
  212. {pulumi_gcp-7.28.0a1718950249.dist-info → pulumi_gcp-7.29.0.dist-info}/RECORD +214 -200
  213. {pulumi_gcp-7.28.0a1718950249.dist-info → pulumi_gcp-7.29.0.dist-info}/WHEEL +1 -1
  214. {pulumi_gcp-7.28.0a1718950249.dist-info → pulumi_gcp-7.29.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,475 @@
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 pulumi
8
+ import pulumi.runtime
9
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
10
+ from .. import _utilities
11
+
12
+ __all__ = ['UserWorkloadsConfigMapArgs', 'UserWorkloadsConfigMap']
13
+
14
+ @pulumi.input_type
15
+ class UserWorkloadsConfigMapArgs:
16
+ def __init__(__self__, *,
17
+ environment: pulumi.Input[str],
18
+ data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
19
+ name: Optional[pulumi.Input[str]] = None,
20
+ project: Optional[pulumi.Input[str]] = None,
21
+ region: Optional[pulumi.Input[str]] = None):
22
+ """
23
+ The set of arguments for constructing a UserWorkloadsConfigMap resource.
24
+ :param pulumi.Input[str] environment: Environment where the Kubernetes ConfigMap will be stored and used.
25
+
26
+
27
+ - - -
28
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] data: The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
29
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
30
+ :param pulumi.Input[str] name: Name of the Kubernetes ConfigMap.
31
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
32
+ If it is not provided, the provider project is used.
33
+ :param pulumi.Input[str] region: The location or Compute Engine region for the environment.
34
+ """
35
+ pulumi.set(__self__, "environment", environment)
36
+ if data is not None:
37
+ pulumi.set(__self__, "data", 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 region is not None:
43
+ pulumi.set(__self__, "region", region)
44
+
45
+ @property
46
+ @pulumi.getter
47
+ def environment(self) -> pulumi.Input[str]:
48
+ """
49
+ Environment where the Kubernetes ConfigMap will be stored and used.
50
+
51
+
52
+ - - -
53
+ """
54
+ return pulumi.get(self, "environment")
55
+
56
+ @environment.setter
57
+ def environment(self, value: pulumi.Input[str]):
58
+ pulumi.set(self, "environment", value)
59
+
60
+ @property
61
+ @pulumi.getter
62
+ def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
63
+ """
64
+ The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
65
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
66
+ """
67
+ return pulumi.get(self, "data")
68
+
69
+ @data.setter
70
+ def data(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
71
+ pulumi.set(self, "data", value)
72
+
73
+ @property
74
+ @pulumi.getter
75
+ def name(self) -> Optional[pulumi.Input[str]]:
76
+ """
77
+ Name of the Kubernetes ConfigMap.
78
+ """
79
+ return pulumi.get(self, "name")
80
+
81
+ @name.setter
82
+ def name(self, value: Optional[pulumi.Input[str]]):
83
+ pulumi.set(self, "name", value)
84
+
85
+ @property
86
+ @pulumi.getter
87
+ def project(self) -> Optional[pulumi.Input[str]]:
88
+ """
89
+ The ID of the project in which the resource belongs.
90
+ If it is not provided, the provider project is used.
91
+ """
92
+ return pulumi.get(self, "project")
93
+
94
+ @project.setter
95
+ def project(self, value: Optional[pulumi.Input[str]]):
96
+ pulumi.set(self, "project", value)
97
+
98
+ @property
99
+ @pulumi.getter
100
+ def region(self) -> Optional[pulumi.Input[str]]:
101
+ """
102
+ The location or Compute Engine region for the environment.
103
+ """
104
+ return pulumi.get(self, "region")
105
+
106
+ @region.setter
107
+ def region(self, value: Optional[pulumi.Input[str]]):
108
+ pulumi.set(self, "region", value)
109
+
110
+
111
+ @pulumi.input_type
112
+ class _UserWorkloadsConfigMapState:
113
+ def __init__(__self__, *,
114
+ data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
115
+ environment: Optional[pulumi.Input[str]] = None,
116
+ name: Optional[pulumi.Input[str]] = None,
117
+ project: Optional[pulumi.Input[str]] = None,
118
+ region: Optional[pulumi.Input[str]] = None):
119
+ """
120
+ Input properties used for looking up and filtering UserWorkloadsConfigMap resources.
121
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] data: The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
122
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
123
+ :param pulumi.Input[str] environment: Environment where the Kubernetes ConfigMap will be stored and used.
124
+
125
+
126
+ - - -
127
+ :param pulumi.Input[str] name: Name of the Kubernetes ConfigMap.
128
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
129
+ If it is not provided, the provider project is used.
130
+ :param pulumi.Input[str] region: The location or Compute Engine region for the environment.
131
+ """
132
+ if data is not None:
133
+ pulumi.set(__self__, "data", data)
134
+ if environment is not None:
135
+ pulumi.set(__self__, "environment", environment)
136
+ if name is not None:
137
+ pulumi.set(__self__, "name", name)
138
+ if project is not None:
139
+ pulumi.set(__self__, "project", project)
140
+ if region is not None:
141
+ pulumi.set(__self__, "region", region)
142
+
143
+ @property
144
+ @pulumi.getter
145
+ def data(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
146
+ """
147
+ The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
148
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
149
+ """
150
+ return pulumi.get(self, "data")
151
+
152
+ @data.setter
153
+ def data(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
154
+ pulumi.set(self, "data", value)
155
+
156
+ @property
157
+ @pulumi.getter
158
+ def environment(self) -> Optional[pulumi.Input[str]]:
159
+ """
160
+ Environment where the Kubernetes ConfigMap will be stored and used.
161
+
162
+
163
+ - - -
164
+ """
165
+ return pulumi.get(self, "environment")
166
+
167
+ @environment.setter
168
+ def environment(self, value: Optional[pulumi.Input[str]]):
169
+ pulumi.set(self, "environment", value)
170
+
171
+ @property
172
+ @pulumi.getter
173
+ def name(self) -> Optional[pulumi.Input[str]]:
174
+ """
175
+ Name of the Kubernetes ConfigMap.
176
+ """
177
+ return pulumi.get(self, "name")
178
+
179
+ @name.setter
180
+ def name(self, value: Optional[pulumi.Input[str]]):
181
+ pulumi.set(self, "name", value)
182
+
183
+ @property
184
+ @pulumi.getter
185
+ def project(self) -> Optional[pulumi.Input[str]]:
186
+ """
187
+ The ID of the project in which the resource belongs.
188
+ If it is not provided, the provider project is used.
189
+ """
190
+ return pulumi.get(self, "project")
191
+
192
+ @project.setter
193
+ def project(self, value: Optional[pulumi.Input[str]]):
194
+ pulumi.set(self, "project", value)
195
+
196
+ @property
197
+ @pulumi.getter
198
+ def region(self) -> Optional[pulumi.Input[str]]:
199
+ """
200
+ The location or Compute Engine region for the environment.
201
+ """
202
+ return pulumi.get(self, "region")
203
+
204
+ @region.setter
205
+ def region(self, value: Optional[pulumi.Input[str]]):
206
+ pulumi.set(self, "region", value)
207
+
208
+
209
+ class UserWorkloadsConfigMap(pulumi.CustomResource):
210
+ @overload
211
+ def __init__(__self__,
212
+ resource_name: str,
213
+ opts: Optional[pulumi.ResourceOptions] = None,
214
+ data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
215
+ environment: Optional[pulumi.Input[str]] = None,
216
+ name: Optional[pulumi.Input[str]] = None,
217
+ project: Optional[pulumi.Input[str]] = None,
218
+ region: Optional[pulumi.Input[str]] = None,
219
+ __props__=None):
220
+ """
221
+ ## Example Usage
222
+
223
+ ### Composer User Workloads Config Map Basic
224
+
225
+ ```python
226
+ import pulumi
227
+ import pulumi_gcp as gcp
228
+
229
+ environment = gcp.composer.Environment("environment",
230
+ name="test-environment",
231
+ region="us-central1",
232
+ config=gcp.composer.EnvironmentConfigArgs(
233
+ software_config=gcp.composer.EnvironmentConfigSoftwareConfigArgs(
234
+ image_version="composer-3-airflow-2",
235
+ ),
236
+ ))
237
+ config_map = gcp.composer.UserWorkloadsConfigMap("config_map",
238
+ name="test-config-map",
239
+ region="us-central1",
240
+ environment=environment.name,
241
+ data={
242
+ "api_host": "apihost:443",
243
+ })
244
+ ```
245
+
246
+ ## Import
247
+
248
+ UserWorkloadsConfigMap can be imported using any of these accepted formats:
249
+
250
+ * `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}`
251
+
252
+ * `{{project}}/{{region}}/{{environment}}/{{name}}`
253
+
254
+ * `{{region}}/{{environment}}/{{name}}`
255
+
256
+ * `{{environment}}/{{name}}`
257
+
258
+ When using the `pulumi import` command, UserWorkloadsConfigMap can be imported using one of the formats above. For example:
259
+
260
+ ```sh
261
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}
262
+ ```
263
+
264
+ ```sh
265
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{project}}/{{region}}/{{environment}}/{{name}}
266
+ ```
267
+
268
+ ```sh
269
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{region}}/{{environment}}/{{name}}
270
+ ```
271
+
272
+ ```sh
273
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{environment}}/{{name}}
274
+ ```
275
+
276
+ :param str resource_name: The name of the resource.
277
+ :param pulumi.ResourceOptions opts: Options for the resource.
278
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] data: The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
279
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
280
+ :param pulumi.Input[str] environment: Environment where the Kubernetes ConfigMap will be stored and used.
281
+
282
+
283
+ - - -
284
+ :param pulumi.Input[str] name: Name of the Kubernetes ConfigMap.
285
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
286
+ If it is not provided, the provider project is used.
287
+ :param pulumi.Input[str] region: The location or Compute Engine region for the environment.
288
+ """
289
+ ...
290
+ @overload
291
+ def __init__(__self__,
292
+ resource_name: str,
293
+ args: UserWorkloadsConfigMapArgs,
294
+ opts: Optional[pulumi.ResourceOptions] = None):
295
+ """
296
+ ## Example Usage
297
+
298
+ ### Composer User Workloads Config Map Basic
299
+
300
+ ```python
301
+ import pulumi
302
+ import pulumi_gcp as gcp
303
+
304
+ environment = gcp.composer.Environment("environment",
305
+ name="test-environment",
306
+ region="us-central1",
307
+ config=gcp.composer.EnvironmentConfigArgs(
308
+ software_config=gcp.composer.EnvironmentConfigSoftwareConfigArgs(
309
+ image_version="composer-3-airflow-2",
310
+ ),
311
+ ))
312
+ config_map = gcp.composer.UserWorkloadsConfigMap("config_map",
313
+ name="test-config-map",
314
+ region="us-central1",
315
+ environment=environment.name,
316
+ data={
317
+ "api_host": "apihost:443",
318
+ })
319
+ ```
320
+
321
+ ## Import
322
+
323
+ UserWorkloadsConfigMap can be imported using any of these accepted formats:
324
+
325
+ * `projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}`
326
+
327
+ * `{{project}}/{{region}}/{{environment}}/{{name}}`
328
+
329
+ * `{{region}}/{{environment}}/{{name}}`
330
+
331
+ * `{{environment}}/{{name}}`
332
+
333
+ When using the `pulumi import` command, UserWorkloadsConfigMap can be imported using one of the formats above. For example:
334
+
335
+ ```sh
336
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default projects/{{project}}/locations/{{region}}/environments/{{environment}}/userWorkloadsConfigMaps/{{name}}
337
+ ```
338
+
339
+ ```sh
340
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{project}}/{{region}}/{{environment}}/{{name}}
341
+ ```
342
+
343
+ ```sh
344
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{region}}/{{environment}}/{{name}}
345
+ ```
346
+
347
+ ```sh
348
+ $ pulumi import gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap default {{environment}}/{{name}}
349
+ ```
350
+
351
+ :param str resource_name: The name of the resource.
352
+ :param UserWorkloadsConfigMapArgs args: The arguments to use to populate this resource's properties.
353
+ :param pulumi.ResourceOptions opts: Options for the resource.
354
+ """
355
+ ...
356
+ def __init__(__self__, resource_name: str, *args, **kwargs):
357
+ resource_args, opts = _utilities.get_resource_args_opts(UserWorkloadsConfigMapArgs, pulumi.ResourceOptions, *args, **kwargs)
358
+ if resource_args is not None:
359
+ __self__._internal_init(resource_name, opts, **resource_args.__dict__)
360
+ else:
361
+ __self__._internal_init(resource_name, *args, **kwargs)
362
+
363
+ def _internal_init(__self__,
364
+ resource_name: str,
365
+ opts: Optional[pulumi.ResourceOptions] = None,
366
+ data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
367
+ environment: Optional[pulumi.Input[str]] = None,
368
+ name: Optional[pulumi.Input[str]] = None,
369
+ project: Optional[pulumi.Input[str]] = None,
370
+ region: Optional[pulumi.Input[str]] = None,
371
+ __props__=None):
372
+ opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
373
+ if not isinstance(opts, pulumi.ResourceOptions):
374
+ raise TypeError('Expected resource options to be a ResourceOptions instance')
375
+ if opts.id is None:
376
+ if __props__ is not None:
377
+ raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
378
+ __props__ = UserWorkloadsConfigMapArgs.__new__(UserWorkloadsConfigMapArgs)
379
+
380
+ __props__.__dict__["data"] = data
381
+ if environment is None and not opts.urn:
382
+ raise TypeError("Missing required property 'environment'")
383
+ __props__.__dict__["environment"] = environment
384
+ __props__.__dict__["name"] = name
385
+ __props__.__dict__["project"] = project
386
+ __props__.__dict__["region"] = region
387
+ super(UserWorkloadsConfigMap, __self__).__init__(
388
+ 'gcp:composer/userWorkloadsConfigMap:UserWorkloadsConfigMap',
389
+ resource_name,
390
+ __props__,
391
+ opts)
392
+
393
+ @staticmethod
394
+ def get(resource_name: str,
395
+ id: pulumi.Input[str],
396
+ opts: Optional[pulumi.ResourceOptions] = None,
397
+ data: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
398
+ environment: Optional[pulumi.Input[str]] = None,
399
+ name: Optional[pulumi.Input[str]] = None,
400
+ project: Optional[pulumi.Input[str]] = None,
401
+ region: Optional[pulumi.Input[str]] = None) -> 'UserWorkloadsConfigMap':
402
+ """
403
+ Get an existing UserWorkloadsConfigMap resource's state with the given name, id, and optional extra
404
+ properties used to qualify the lookup.
405
+
406
+ :param str resource_name: The unique name of the resulting resource.
407
+ :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
408
+ :param pulumi.ResourceOptions opts: Options for the resource.
409
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] data: The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
410
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
411
+ :param pulumi.Input[str] environment: Environment where the Kubernetes ConfigMap will be stored and used.
412
+
413
+
414
+ - - -
415
+ :param pulumi.Input[str] name: Name of the Kubernetes ConfigMap.
416
+ :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
417
+ If it is not provided, the provider project is used.
418
+ :param pulumi.Input[str] region: The location or Compute Engine region for the environment.
419
+ """
420
+ opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
421
+
422
+ __props__ = _UserWorkloadsConfigMapState.__new__(_UserWorkloadsConfigMapState)
423
+
424
+ __props__.__dict__["data"] = data
425
+ __props__.__dict__["environment"] = environment
426
+ __props__.__dict__["name"] = name
427
+ __props__.__dict__["project"] = project
428
+ __props__.__dict__["region"] = region
429
+ return UserWorkloadsConfigMap(resource_name, opts=opts, __props__=__props__)
430
+
431
+ @property
432
+ @pulumi.getter
433
+ def data(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
434
+ """
435
+ The "data" field of Kubernetes ConfigMap, organized in key-value pairs.
436
+ For details see: https://kubernetes.io/docs/concepts/configuration/configmap/
437
+ """
438
+ return pulumi.get(self, "data")
439
+
440
+ @property
441
+ @pulumi.getter
442
+ def environment(self) -> pulumi.Output[str]:
443
+ """
444
+ Environment where the Kubernetes ConfigMap will be stored and used.
445
+
446
+
447
+ - - -
448
+ """
449
+ return pulumi.get(self, "environment")
450
+
451
+ @property
452
+ @pulumi.getter
453
+ def name(self) -> pulumi.Output[str]:
454
+ """
455
+ Name of the Kubernetes ConfigMap.
456
+ """
457
+ return pulumi.get(self, "name")
458
+
459
+ @property
460
+ @pulumi.getter
461
+ def project(self) -> pulumi.Output[str]:
462
+ """
463
+ The ID of the project in which the resource belongs.
464
+ If it is not provided, the provider project is used.
465
+ """
466
+ return pulumi.get(self, "project")
467
+
468
+ @property
469
+ @pulumi.getter
470
+ def region(self) -> pulumi.Output[str]:
471
+ """
472
+ The location or Compute Engine region for the environment.
473
+ """
474
+ return pulumi.get(self, "region")
475
+
@@ -437,6 +437,8 @@ __all__ = [
437
437
  'SecurityPolicyRuleMatchArgs',
438
438
  'SecurityPolicyRuleMatchConfigArgs',
439
439
  'SecurityPolicyRuleMatchExprArgs',
440
+ 'SecurityPolicyRuleMatchExprOptionsArgs',
441
+ 'SecurityPolicyRuleMatchExprOptionsRecaptchaOptionsArgs',
440
442
  'SecurityPolicyRulePreconfiguredWafConfigArgs',
441
443
  'SecurityPolicyRulePreconfiguredWafConfigExclusionArgs',
442
444
  'SecurityPolicyRulePreconfiguredWafConfigExclusionRequestCookyArgs',
@@ -1758,6 +1760,7 @@ class BackendServiceBackendArgs:
1758
1760
  and CONNECTION (for TCP/SSL).
1759
1761
  See the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)
1760
1762
  for an explanation of load balancing modes.
1763
+ From version 6.0.0 default value will be UTILIZATION to match default GCP value.
1761
1764
  Default value is `UTILIZATION`.
1762
1765
  Possible values are: `UTILIZATION`, `RATE`, `CONNECTION`.
1763
1766
  :param pulumi.Input[float] capacity_scaler: A multiplier applied to the group's maximum servicing capacity
@@ -1858,6 +1861,7 @@ class BackendServiceBackendArgs:
1858
1861
  and CONNECTION (for TCP/SSL).
1859
1862
  See the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)
1860
1863
  for an explanation of load balancing modes.
1864
+ From version 6.0.0 default value will be UTILIZATION to match default GCP value.
1861
1865
  Default value is `UTILIZATION`.
1862
1866
  Possible values are: `UTILIZATION`, `RATE`, `CONNECTION`.
1863
1867
  """
@@ -3687,7 +3691,6 @@ class DiskGuestOsFeatureArgs:
3687
3691
  type: pulumi.Input[str]):
3688
3692
  """
3689
3693
  :param pulumi.Input[str] type: The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.
3690
- Possible values are: `MULTI_IP_SUBNET`, `SECURE_BOOT`, `SEV_CAPABLE`, `UEFI_COMPATIBLE`, `VIRTIO_SCSI_MULTIQUEUE`, `WINDOWS`, `GVNIC`, `SEV_LIVE_MIGRATABLE`, `SEV_SNP_CAPABLE`, `SUSPEND_RESUME_COMPATIBLE`, `TDX_CAPABLE`, `SEV_LIVE_MIGRATABLE_V2`.
3691
3694
  """
3692
3695
  pulumi.set(__self__, "type", type)
3693
3696
 
@@ -3696,7 +3699,6 @@ class DiskGuestOsFeatureArgs:
3696
3699
  def type(self) -> pulumi.Input[str]:
3697
3700
  """
3698
3701
  The type of supported feature. Read [Enabling guest operating system features](https://cloud.google.com/compute/docs/images/create-delete-deprecate-private-images#guest-os-features) to see a list of available options.
3699
- Possible values are: `MULTI_IP_SUBNET`, `SECURE_BOOT`, `SEV_CAPABLE`, `UEFI_COMPATIBLE`, `VIRTIO_SCSI_MULTIQUEUE`, `WINDOWS`, `GVNIC`, `SEV_LIVE_MIGRATABLE`, `SEV_SNP_CAPABLE`, `SUSPEND_RESUME_COMPATIBLE`, `TDX_CAPABLE`, `SEV_LIVE_MIGRATABLE_V2`.
3700
3702
  """
3701
3703
  return pulumi.get(self, "type")
3702
3704
 
@@ -16337,6 +16339,7 @@ class RegionBackendServiceBackendArgs:
16337
16339
  :param pulumi.Input[str] balancing_mode: Specifies the balancing mode for this backend.
16338
16340
  See the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)
16339
16341
  for an explanation of load balancing modes.
16342
+ From version 6.0.0 default value will be UTILIZATION to match default GCP value.
16340
16343
  Default value is `CONNECTION`.
16341
16344
  Possible values are: `UTILIZATION`, `RATE`, `CONNECTION`.
16342
16345
  :param pulumi.Input[float] capacity_scaler: A multiplier applied to the group's maximum servicing capacity
@@ -16449,6 +16452,7 @@ class RegionBackendServiceBackendArgs:
16449
16452
  Specifies the balancing mode for this backend.
16450
16453
  See the [Backend Services Overview](https://cloud.google.com/load-balancing/docs/backend-service#balancing-mode)
16451
16454
  for an explanation of load balancing modes.
16455
+ From version 6.0.0 default value will be UTILIZATION to match default GCP value.
16452
16456
  Default value is `CONNECTION`.
16453
16457
  Possible values are: `UTILIZATION`, `RATE`, `CONNECTION`.
16454
16458
  """
@@ -30827,6 +30831,7 @@ class SecurityPolicyRuleMatchArgs:
30827
30831
  def __init__(__self__, *,
30828
30832
  config: Optional[pulumi.Input['SecurityPolicyRuleMatchConfigArgs']] = None,
30829
30833
  expr: Optional[pulumi.Input['SecurityPolicyRuleMatchExprArgs']] = None,
30834
+ expr_options: Optional[pulumi.Input['SecurityPolicyRuleMatchExprOptionsArgs']] = None,
30830
30835
  versioned_expr: Optional[pulumi.Input[str]] = None):
30831
30836
  """
30832
30837
  :param pulumi.Input['SecurityPolicyRuleMatchConfigArgs'] config: The configuration options available when specifying versionedExpr.
@@ -30834,6 +30839,8 @@ class SecurityPolicyRuleMatchArgs:
30834
30839
  Structure is documented below.
30835
30840
  :param pulumi.Input['SecurityPolicyRuleMatchExprArgs'] expr: User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header.
30836
30841
  Structure is documented below.
30842
+ :param pulumi.Input['SecurityPolicyRuleMatchExprOptionsArgs'] expr_options: The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr').
30843
+ Structure is documented below.
30837
30844
  :param pulumi.Input[str] versioned_expr: Preconfigured versioned expression. If this field is specified, config must also be specified.
30838
30845
  Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding srcIpRange field in config.
30839
30846
  Possible values are: `SRC_IPS_V1`.
@@ -30842,6 +30849,8 @@ class SecurityPolicyRuleMatchArgs:
30842
30849
  pulumi.set(__self__, "config", config)
30843
30850
  if expr is not None:
30844
30851
  pulumi.set(__self__, "expr", expr)
30852
+ if expr_options is not None:
30853
+ pulumi.set(__self__, "expr_options", expr_options)
30845
30854
  if versioned_expr is not None:
30846
30855
  pulumi.set(__self__, "versioned_expr", versioned_expr)
30847
30856
 
@@ -30872,6 +30881,19 @@ class SecurityPolicyRuleMatchArgs:
30872
30881
  def expr(self, value: Optional[pulumi.Input['SecurityPolicyRuleMatchExprArgs']]):
30873
30882
  pulumi.set(self, "expr", value)
30874
30883
 
30884
+ @property
30885
+ @pulumi.getter(name="exprOptions")
30886
+ def expr_options(self) -> Optional[pulumi.Input['SecurityPolicyRuleMatchExprOptionsArgs']]:
30887
+ """
30888
+ The configuration options available when specifying a user defined CEVAL expression (i.e., 'expr').
30889
+ Structure is documented below.
30890
+ """
30891
+ return pulumi.get(self, "expr_options")
30892
+
30893
+ @expr_options.setter
30894
+ def expr_options(self, value: Optional[pulumi.Input['SecurityPolicyRuleMatchExprOptionsArgs']]):
30895
+ pulumi.set(self, "expr_options", value)
30896
+
30875
30897
  @property
30876
30898
  @pulumi.getter(name="versionedExpr")
30877
30899
  def versioned_expr(self) -> Optional[pulumi.Input[str]]:
@@ -30932,6 +30954,69 @@ class SecurityPolicyRuleMatchExprArgs:
30932
30954
  pulumi.set(self, "expression", value)
30933
30955
 
30934
30956
 
30957
+ @pulumi.input_type
30958
+ class SecurityPolicyRuleMatchExprOptionsArgs:
30959
+ def __init__(__self__, *,
30960
+ recaptcha_options: pulumi.Input['SecurityPolicyRuleMatchExprOptionsRecaptchaOptionsArgs']):
30961
+ """
30962
+ :param pulumi.Input['SecurityPolicyRuleMatchExprOptionsRecaptchaOptionsArgs'] recaptcha_options: reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field has no effect.
30963
+ Structure is documented below.
30964
+ """
30965
+ pulumi.set(__self__, "recaptcha_options", recaptcha_options)
30966
+
30967
+ @property
30968
+ @pulumi.getter(name="recaptchaOptions")
30969
+ def recaptcha_options(self) -> pulumi.Input['SecurityPolicyRuleMatchExprOptionsRecaptchaOptionsArgs']:
30970
+ """
30971
+ reCAPTCHA configuration options to be applied for the rule. If the rule does not evaluate reCAPTCHA tokens, this field has no effect.
30972
+ Structure is documented below.
30973
+ """
30974
+ return pulumi.get(self, "recaptcha_options")
30975
+
30976
+ @recaptcha_options.setter
30977
+ def recaptcha_options(self, value: pulumi.Input['SecurityPolicyRuleMatchExprOptionsRecaptchaOptionsArgs']):
30978
+ pulumi.set(self, "recaptcha_options", value)
30979
+
30980
+
30981
+ @pulumi.input_type
30982
+ class SecurityPolicyRuleMatchExprOptionsRecaptchaOptionsArgs:
30983
+ def __init__(__self__, *,
30984
+ action_token_site_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
30985
+ session_token_site_keys: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
30986
+ """
30987
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] action_token_site_keys: A list of site keys to be used during the validation of reCAPTCHA action-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.
30988
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] session_token_site_keys: A list of site keys to be used during the validation of reCAPTCHA session-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.
30989
+ """
30990
+ if action_token_site_keys is not None:
30991
+ pulumi.set(__self__, "action_token_site_keys", action_token_site_keys)
30992
+ if session_token_site_keys is not None:
30993
+ pulumi.set(__self__, "session_token_site_keys", session_token_site_keys)
30994
+
30995
+ @property
30996
+ @pulumi.getter(name="actionTokenSiteKeys")
30997
+ def action_token_site_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
30998
+ """
30999
+ A list of site keys to be used during the validation of reCAPTCHA action-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.
31000
+ """
31001
+ return pulumi.get(self, "action_token_site_keys")
31002
+
31003
+ @action_token_site_keys.setter
31004
+ def action_token_site_keys(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
31005
+ pulumi.set(self, "action_token_site_keys", value)
31006
+
31007
+ @property
31008
+ @pulumi.getter(name="sessionTokenSiteKeys")
31009
+ def session_token_site_keys(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
31010
+ """
31011
+ A list of site keys to be used during the validation of reCAPTCHA session-tokens. The provided site keys need to be created from reCAPTCHA API under the same project where the security policy is created.
31012
+ """
31013
+ return pulumi.get(self, "session_token_site_keys")
31014
+
31015
+ @session_token_site_keys.setter
31016
+ def session_token_site_keys(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
31017
+ pulumi.set(self, "session_token_site_keys", value)
31018
+
31019
+
30935
31020
  @pulumi.input_type
30936
31021
  class SecurityPolicyRulePreconfiguredWafConfigArgs:
30937
31022
  def __init__(__self__, *,