pulumi-gcp 8.23.0a1742538920__py3-none-any.whl → 8.24.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 (106) hide show
  1. pulumi_gcp/__init__.py +59 -0
  2. pulumi_gcp/alloydb/_inputs.py +27 -1
  3. pulumi_gcp/alloydb/outputs.py +33 -2
  4. pulumi_gcp/applicationintegration/client.py +18 -24
  5. pulumi_gcp/bigquery/_inputs.py +178 -0
  6. pulumi_gcp/bigquery/outputs.py +127 -0
  7. pulumi_gcp/bigquery/reservation.py +189 -1
  8. pulumi_gcp/bigquery/table.py +61 -0
  9. pulumi_gcp/bigqueryanalyticshub/listing_subscription.py +11 -7
  10. pulumi_gcp/bigtable/table.py +7 -7
  11. pulumi_gcp/chronicle/data_access_label.py +16 -0
  12. pulumi_gcp/clouddeploy/_inputs.py +20 -0
  13. pulumi_gcp/clouddeploy/outputs.py +15 -1
  14. pulumi_gcp/cloudfunctions/function.py +11 -11
  15. pulumi_gcp/cloudfunctionsv2/function.py +24 -24
  16. pulumi_gcp/cloudidentity/get_group_transitive_memberships.py +41 -2
  17. pulumi_gcp/cloudidentity/outputs.py +18 -38
  18. pulumi_gcp/cloudrunv2/service.py +14 -14
  19. pulumi_gcp/compute/__init__.py +1 -0
  20. pulumi_gcp/compute/_inputs.py +616 -18
  21. pulumi_gcp/compute/firewall_policy.py +20 -0
  22. pulumi_gcp/compute/get_images.py +172 -0
  23. pulumi_gcp/compute/get_resource_policy.py +15 -4
  24. pulumi_gcp/compute/image.py +54 -0
  25. pulumi_gcp/compute/interconnect.py +14 -7
  26. pulumi_gcp/compute/outputs.py +710 -18
  27. pulumi_gcp/compute/region_network_endpoint_group.py +2 -2
  28. pulumi_gcp/compute/resource_policy.py +169 -3
  29. pulumi_gcp/compute/router_route_policy.py +16 -0
  30. pulumi_gcp/compute/subnetwork.py +109 -1
  31. pulumi_gcp/compute/target_https_proxy.py +7 -7
  32. pulumi_gcp/config/__init__.pyi +8 -0
  33. pulumi_gcp/config/vars.py +16 -0
  34. pulumi_gcp/container/_inputs.py +265 -4
  35. pulumi_gcp/container/cluster.py +54 -0
  36. pulumi_gcp/container/get_attached_versions.py +2 -2
  37. pulumi_gcp/container/get_cluster.py +12 -1
  38. pulumi_gcp/container/outputs.py +301 -6
  39. pulumi_gcp/dataform/repository.py +49 -0
  40. pulumi_gcp/dataproc/_inputs.py +23 -0
  41. pulumi_gcp/dataproc/get_metastore_service.py +26 -4
  42. pulumi_gcp/dataproc/metastore_federation.py +56 -0
  43. pulumi_gcp/dataproc/metastore_service.py +58 -2
  44. pulumi_gcp/dataproc/outputs.py +27 -0
  45. pulumi_gcp/eventarc/__init__.py +1 -0
  46. pulumi_gcp/eventarc/_inputs.py +1758 -0
  47. pulumi_gcp/eventarc/outputs.py +1337 -0
  48. pulumi_gcp/eventarc/pipeline.py +1596 -0
  49. pulumi_gcp/firebase/__init__.py +1 -0
  50. pulumi_gcp/firebase/_inputs.py +154 -0
  51. pulumi_gcp/firebase/app_hosting_backend.py +1303 -0
  52. pulumi_gcp/firebase/hosting_version.py +2 -2
  53. pulumi_gcp/firebase/outputs.py +127 -0
  54. pulumi_gcp/kms/get_key_rings.py +39 -2
  55. pulumi_gcp/lustre/__init__.py +8 -0
  56. pulumi_gcp/lustre/instance.py +983 -0
  57. pulumi_gcp/managedkafka/__init__.py +2 -0
  58. pulumi_gcp/managedkafka/_inputs.py +263 -0
  59. pulumi_gcp/managedkafka/connect_cluster.py +795 -0
  60. pulumi_gcp/managedkafka/connector.py +695 -0
  61. pulumi_gcp/managedkafka/outputs.py +248 -0
  62. pulumi_gcp/memorystore/_inputs.py +419 -0
  63. pulumi_gcp/memorystore/get_instance.py +23 -1
  64. pulumi_gcp/memorystore/instance.py +144 -14
  65. pulumi_gcp/memorystore/outputs.py +544 -0
  66. pulumi_gcp/monitoring/uptime_check_config.py +2 -2
  67. pulumi_gcp/networkmanagement/_inputs.py +422 -91
  68. pulumi_gcp/networkmanagement/connectivity_test.py +233 -211
  69. pulumi_gcp/networkmanagement/outputs.py +280 -61
  70. pulumi_gcp/networksecurity/_inputs.py +1277 -242
  71. pulumi_gcp/networksecurity/gateway_security_policy.py +0 -7
  72. pulumi_gcp/networksecurity/intercept_deployment_group.py +44 -16
  73. pulumi_gcp/networksecurity/intercept_endpoint_group.py +90 -36
  74. pulumi_gcp/networksecurity/intercept_endpoint_group_association.py +53 -8
  75. pulumi_gcp/networksecurity/mirroring_deployment.py +22 -0
  76. pulumi_gcp/networksecurity/mirroring_deployment_group.py +20 -0
  77. pulumi_gcp/networksecurity/mirroring_endpoint_group.py +24 -0
  78. pulumi_gcp/networksecurity/mirroring_endpoint_group_association.py +28 -0
  79. pulumi_gcp/networksecurity/outputs.py +723 -8
  80. pulumi_gcp/networksecurity/tls_inspection_policy.py +14 -0
  81. pulumi_gcp/networkservices/gateway.py +242 -120
  82. pulumi_gcp/organizations/__init__.py +1 -0
  83. pulumi_gcp/organizations/get_iam_custom_role.py +198 -0
  84. pulumi_gcp/osconfig/__init__.py +1 -0
  85. pulumi_gcp/osconfig/_inputs.py +5413 -0
  86. pulumi_gcp/osconfig/outputs.py +3962 -0
  87. pulumi_gcp/osconfig/v2_policy_orchestrator.py +971 -0
  88. pulumi_gcp/projects/__init__.py +2 -0
  89. pulumi_gcp/projects/get_iam_custom_role.py +198 -0
  90. pulumi_gcp/projects/get_iam_custom_roles.py +164 -0
  91. pulumi_gcp/projects/outputs.py +96 -0
  92. pulumi_gcp/provider.py +80 -0
  93. pulumi_gcp/pulumi-plugin.json +1 -1
  94. pulumi_gcp/servicenetworking/peered_dns_domain.py +4 -0
  95. pulumi_gcp/sql/outputs.py +8 -8
  96. pulumi_gcp/storage/__init__.py +2 -0
  97. pulumi_gcp/storage/_inputs.py +740 -6
  98. pulumi_gcp/storage/control_project_intelligence_config.py +366 -0
  99. pulumi_gcp/storage/get_control_project_intelligence_config.py +130 -0
  100. pulumi_gcp/storage/insights_report_config.py +121 -20
  101. pulumi_gcp/storage/outputs.py +723 -4
  102. pulumi_gcp/workflows/workflow.py +75 -7
  103. {pulumi_gcp-8.23.0a1742538920.dist-info → pulumi_gcp-8.24.0.dist-info}/METADATA +1 -1
  104. {pulumi_gcp-8.23.0a1742538920.dist-info → pulumi_gcp-8.24.0.dist-info}/RECORD +106 -93
  105. {pulumi_gcp-8.23.0a1742538920.dist-info → pulumi_gcp-8.24.0.dist-info}/WHEEL +1 -1
  106. {pulumi_gcp-8.23.0a1742538920.dist-info → pulumi_gcp-8.24.0.dist-info}/top_level.txt +0 -0
@@ -19,6 +19,42 @@ __all__ = [
19
19
  'GoogleApiSourceLoggingConfigArgsDict',
20
20
  'MessageBusLoggingConfigArgs',
21
21
  'MessageBusLoggingConfigArgsDict',
22
+ 'PipelineDestinationArgs',
23
+ 'PipelineDestinationArgsDict',
24
+ 'PipelineDestinationAuthenticationConfigArgs',
25
+ 'PipelineDestinationAuthenticationConfigArgsDict',
26
+ 'PipelineDestinationAuthenticationConfigGoogleOidcArgs',
27
+ 'PipelineDestinationAuthenticationConfigGoogleOidcArgsDict',
28
+ 'PipelineDestinationAuthenticationConfigOauthTokenArgs',
29
+ 'PipelineDestinationAuthenticationConfigOauthTokenArgsDict',
30
+ 'PipelineDestinationHttpEndpointArgs',
31
+ 'PipelineDestinationHttpEndpointArgsDict',
32
+ 'PipelineDestinationNetworkConfigArgs',
33
+ 'PipelineDestinationNetworkConfigArgsDict',
34
+ 'PipelineDestinationOutputPayloadFormatArgs',
35
+ 'PipelineDestinationOutputPayloadFormatArgsDict',
36
+ 'PipelineDestinationOutputPayloadFormatAvroArgs',
37
+ 'PipelineDestinationOutputPayloadFormatAvroArgsDict',
38
+ 'PipelineDestinationOutputPayloadFormatJsonArgs',
39
+ 'PipelineDestinationOutputPayloadFormatJsonArgsDict',
40
+ 'PipelineDestinationOutputPayloadFormatProtobufArgs',
41
+ 'PipelineDestinationOutputPayloadFormatProtobufArgsDict',
42
+ 'PipelineInputPayloadFormatArgs',
43
+ 'PipelineInputPayloadFormatArgsDict',
44
+ 'PipelineInputPayloadFormatAvroArgs',
45
+ 'PipelineInputPayloadFormatAvroArgsDict',
46
+ 'PipelineInputPayloadFormatJsonArgs',
47
+ 'PipelineInputPayloadFormatJsonArgsDict',
48
+ 'PipelineInputPayloadFormatProtobufArgs',
49
+ 'PipelineInputPayloadFormatProtobufArgsDict',
50
+ 'PipelineLoggingConfigArgs',
51
+ 'PipelineLoggingConfigArgsDict',
52
+ 'PipelineMediationArgs',
53
+ 'PipelineMediationArgsDict',
54
+ 'PipelineMediationTransformationArgs',
55
+ 'PipelineMediationTransformationArgsDict',
56
+ 'PipelineRetryPolicyArgs',
57
+ 'PipelineRetryPolicyArgsDict',
22
58
  'TriggerDestinationArgs',
23
59
  'TriggerDestinationArgsDict',
24
60
  'TriggerDestinationCloudRunServiceArgs',
@@ -115,6 +151,1728 @@ class MessageBusLoggingConfigArgs:
115
151
  pulumi.set(self, "log_severity", value)
116
152
 
117
153
 
154
+ if not MYPY:
155
+ class PipelineDestinationArgsDict(TypedDict):
156
+ authentication_config: NotRequired[pulumi.Input['PipelineDestinationAuthenticationConfigArgsDict']]
157
+ """
158
+ Represents a config used to authenticate message requests.
159
+ Structure is documented below.
160
+ """
161
+ http_endpoint: NotRequired[pulumi.Input['PipelineDestinationHttpEndpointArgsDict']]
162
+ """
163
+ Represents a HTTP endpoint destination.
164
+ Structure is documented below.
165
+ """
166
+ message_bus: NotRequired[pulumi.Input[str]]
167
+ """
168
+ The resource name of the Message Bus to which events should be
169
+ published. The Message Bus resource should exist in the same project as
170
+ the Pipeline. Format:
171
+ `projects/{project}/locations/{location}/messageBuses/{message_bus}`
172
+ """
173
+ network_config: NotRequired[pulumi.Input['PipelineDestinationNetworkConfigArgsDict']]
174
+ """
175
+ Represents a network config to be used for destination resolution and
176
+ connectivity.
177
+ Structure is documented below.
178
+ """
179
+ output_payload_format: NotRequired[pulumi.Input['PipelineDestinationOutputPayloadFormatArgsDict']]
180
+ """
181
+ Represents the format of message data.
182
+ Structure is documented below.
183
+ """
184
+ topic: NotRequired[pulumi.Input[str]]
185
+ """
186
+ The resource name of the Pub/Sub topic to which events should be
187
+ published. Format:
188
+ `projects/{project}/locations/{location}/topics/{topic}`
189
+ """
190
+ workflow: NotRequired[pulumi.Input[str]]
191
+ """
192
+ The resource name of the Workflow whose Executions are triggered by
193
+ the events. The Workflow resource should be deployed in the same
194
+ project as the Pipeline. Format:
195
+ `projects/{project}/locations/{location}/workflows/{workflow}`
196
+ """
197
+ elif False:
198
+ PipelineDestinationArgsDict: TypeAlias = Mapping[str, Any]
199
+
200
+ @pulumi.input_type
201
+ class PipelineDestinationArgs:
202
+ def __init__(__self__, *,
203
+ authentication_config: Optional[pulumi.Input['PipelineDestinationAuthenticationConfigArgs']] = None,
204
+ http_endpoint: Optional[pulumi.Input['PipelineDestinationHttpEndpointArgs']] = None,
205
+ message_bus: Optional[pulumi.Input[str]] = None,
206
+ network_config: Optional[pulumi.Input['PipelineDestinationNetworkConfigArgs']] = None,
207
+ output_payload_format: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatArgs']] = None,
208
+ topic: Optional[pulumi.Input[str]] = None,
209
+ workflow: Optional[pulumi.Input[str]] = None):
210
+ """
211
+ :param pulumi.Input['PipelineDestinationAuthenticationConfigArgs'] authentication_config: Represents a config used to authenticate message requests.
212
+ Structure is documented below.
213
+ :param pulumi.Input['PipelineDestinationHttpEndpointArgs'] http_endpoint: Represents a HTTP endpoint destination.
214
+ Structure is documented below.
215
+ :param pulumi.Input[str] message_bus: The resource name of the Message Bus to which events should be
216
+ published. The Message Bus resource should exist in the same project as
217
+ the Pipeline. Format:
218
+ `projects/{project}/locations/{location}/messageBuses/{message_bus}`
219
+ :param pulumi.Input['PipelineDestinationNetworkConfigArgs'] network_config: Represents a network config to be used for destination resolution and
220
+ connectivity.
221
+ Structure is documented below.
222
+ :param pulumi.Input['PipelineDestinationOutputPayloadFormatArgs'] output_payload_format: Represents the format of message data.
223
+ Structure is documented below.
224
+ :param pulumi.Input[str] topic: The resource name of the Pub/Sub topic to which events should be
225
+ published. Format:
226
+ `projects/{project}/locations/{location}/topics/{topic}`
227
+ :param pulumi.Input[str] workflow: The resource name of the Workflow whose Executions are triggered by
228
+ the events. The Workflow resource should be deployed in the same
229
+ project as the Pipeline. Format:
230
+ `projects/{project}/locations/{location}/workflows/{workflow}`
231
+ """
232
+ if authentication_config is not None:
233
+ pulumi.set(__self__, "authentication_config", authentication_config)
234
+ if http_endpoint is not None:
235
+ pulumi.set(__self__, "http_endpoint", http_endpoint)
236
+ if message_bus is not None:
237
+ pulumi.set(__self__, "message_bus", message_bus)
238
+ if network_config is not None:
239
+ pulumi.set(__self__, "network_config", network_config)
240
+ if output_payload_format is not None:
241
+ pulumi.set(__self__, "output_payload_format", output_payload_format)
242
+ if topic is not None:
243
+ pulumi.set(__self__, "topic", topic)
244
+ if workflow is not None:
245
+ pulumi.set(__self__, "workflow", workflow)
246
+
247
+ @property
248
+ @pulumi.getter(name="authenticationConfig")
249
+ def authentication_config(self) -> Optional[pulumi.Input['PipelineDestinationAuthenticationConfigArgs']]:
250
+ """
251
+ Represents a config used to authenticate message requests.
252
+ Structure is documented below.
253
+ """
254
+ return pulumi.get(self, "authentication_config")
255
+
256
+ @authentication_config.setter
257
+ def authentication_config(self, value: Optional[pulumi.Input['PipelineDestinationAuthenticationConfigArgs']]):
258
+ pulumi.set(self, "authentication_config", value)
259
+
260
+ @property
261
+ @pulumi.getter(name="httpEndpoint")
262
+ def http_endpoint(self) -> Optional[pulumi.Input['PipelineDestinationHttpEndpointArgs']]:
263
+ """
264
+ Represents a HTTP endpoint destination.
265
+ Structure is documented below.
266
+ """
267
+ return pulumi.get(self, "http_endpoint")
268
+
269
+ @http_endpoint.setter
270
+ def http_endpoint(self, value: Optional[pulumi.Input['PipelineDestinationHttpEndpointArgs']]):
271
+ pulumi.set(self, "http_endpoint", value)
272
+
273
+ @property
274
+ @pulumi.getter(name="messageBus")
275
+ def message_bus(self) -> Optional[pulumi.Input[str]]:
276
+ """
277
+ The resource name of the Message Bus to which events should be
278
+ published. The Message Bus resource should exist in the same project as
279
+ the Pipeline. Format:
280
+ `projects/{project}/locations/{location}/messageBuses/{message_bus}`
281
+ """
282
+ return pulumi.get(self, "message_bus")
283
+
284
+ @message_bus.setter
285
+ def message_bus(self, value: Optional[pulumi.Input[str]]):
286
+ pulumi.set(self, "message_bus", value)
287
+
288
+ @property
289
+ @pulumi.getter(name="networkConfig")
290
+ def network_config(self) -> Optional[pulumi.Input['PipelineDestinationNetworkConfigArgs']]:
291
+ """
292
+ Represents a network config to be used for destination resolution and
293
+ connectivity.
294
+ Structure is documented below.
295
+ """
296
+ return pulumi.get(self, "network_config")
297
+
298
+ @network_config.setter
299
+ def network_config(self, value: Optional[pulumi.Input['PipelineDestinationNetworkConfigArgs']]):
300
+ pulumi.set(self, "network_config", value)
301
+
302
+ @property
303
+ @pulumi.getter(name="outputPayloadFormat")
304
+ def output_payload_format(self) -> Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatArgs']]:
305
+ """
306
+ Represents the format of message data.
307
+ Structure is documented below.
308
+ """
309
+ return pulumi.get(self, "output_payload_format")
310
+
311
+ @output_payload_format.setter
312
+ def output_payload_format(self, value: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatArgs']]):
313
+ pulumi.set(self, "output_payload_format", value)
314
+
315
+ @property
316
+ @pulumi.getter
317
+ def topic(self) -> Optional[pulumi.Input[str]]:
318
+ """
319
+ The resource name of the Pub/Sub topic to which events should be
320
+ published. Format:
321
+ `projects/{project}/locations/{location}/topics/{topic}`
322
+ """
323
+ return pulumi.get(self, "topic")
324
+
325
+ @topic.setter
326
+ def topic(self, value: Optional[pulumi.Input[str]]):
327
+ pulumi.set(self, "topic", value)
328
+
329
+ @property
330
+ @pulumi.getter
331
+ def workflow(self) -> Optional[pulumi.Input[str]]:
332
+ """
333
+ The resource name of the Workflow whose Executions are triggered by
334
+ the events. The Workflow resource should be deployed in the same
335
+ project as the Pipeline. Format:
336
+ `projects/{project}/locations/{location}/workflows/{workflow}`
337
+ """
338
+ return pulumi.get(self, "workflow")
339
+
340
+ @workflow.setter
341
+ def workflow(self, value: Optional[pulumi.Input[str]]):
342
+ pulumi.set(self, "workflow", value)
343
+
344
+
345
+ if not MYPY:
346
+ class PipelineDestinationAuthenticationConfigArgsDict(TypedDict):
347
+ google_oidc: NotRequired[pulumi.Input['PipelineDestinationAuthenticationConfigGoogleOidcArgsDict']]
348
+ """
349
+ Represents a config used to authenticate with a Google OIDC token using
350
+ a GCP service account. Use this authentication method to invoke your
351
+ Cloud Run and Cloud Functions destinations or HTTP endpoints that
352
+ support Google OIDC.
353
+ Structure is documented below.
354
+ """
355
+ oauth_token: NotRequired[pulumi.Input['PipelineDestinationAuthenticationConfigOauthTokenArgsDict']]
356
+ """
357
+ Contains information needed for generating an
358
+ [OAuth token](https://developers.google.com/identity/protocols/OAuth2).
359
+ This type of authorization should generally only be used when calling
360
+ Google APIs hosted on *.googleapis.com.
361
+ Structure is documented below.
362
+ """
363
+ elif False:
364
+ PipelineDestinationAuthenticationConfigArgsDict: TypeAlias = Mapping[str, Any]
365
+
366
+ @pulumi.input_type
367
+ class PipelineDestinationAuthenticationConfigArgs:
368
+ def __init__(__self__, *,
369
+ google_oidc: Optional[pulumi.Input['PipelineDestinationAuthenticationConfigGoogleOidcArgs']] = None,
370
+ oauth_token: Optional[pulumi.Input['PipelineDestinationAuthenticationConfigOauthTokenArgs']] = None):
371
+ """
372
+ :param pulumi.Input['PipelineDestinationAuthenticationConfigGoogleOidcArgs'] google_oidc: Represents a config used to authenticate with a Google OIDC token using
373
+ a GCP service account. Use this authentication method to invoke your
374
+ Cloud Run and Cloud Functions destinations or HTTP endpoints that
375
+ support Google OIDC.
376
+ Structure is documented below.
377
+ :param pulumi.Input['PipelineDestinationAuthenticationConfigOauthTokenArgs'] oauth_token: Contains information needed for generating an
378
+ [OAuth token](https://developers.google.com/identity/protocols/OAuth2).
379
+ This type of authorization should generally only be used when calling
380
+ Google APIs hosted on *.googleapis.com.
381
+ Structure is documented below.
382
+ """
383
+ if google_oidc is not None:
384
+ pulumi.set(__self__, "google_oidc", google_oidc)
385
+ if oauth_token is not None:
386
+ pulumi.set(__self__, "oauth_token", oauth_token)
387
+
388
+ @property
389
+ @pulumi.getter(name="googleOidc")
390
+ def google_oidc(self) -> Optional[pulumi.Input['PipelineDestinationAuthenticationConfigGoogleOidcArgs']]:
391
+ """
392
+ Represents a config used to authenticate with a Google OIDC token using
393
+ a GCP service account. Use this authentication method to invoke your
394
+ Cloud Run and Cloud Functions destinations or HTTP endpoints that
395
+ support Google OIDC.
396
+ Structure is documented below.
397
+ """
398
+ return pulumi.get(self, "google_oidc")
399
+
400
+ @google_oidc.setter
401
+ def google_oidc(self, value: Optional[pulumi.Input['PipelineDestinationAuthenticationConfigGoogleOidcArgs']]):
402
+ pulumi.set(self, "google_oidc", value)
403
+
404
+ @property
405
+ @pulumi.getter(name="oauthToken")
406
+ def oauth_token(self) -> Optional[pulumi.Input['PipelineDestinationAuthenticationConfigOauthTokenArgs']]:
407
+ """
408
+ Contains information needed for generating an
409
+ [OAuth token](https://developers.google.com/identity/protocols/OAuth2).
410
+ This type of authorization should generally only be used when calling
411
+ Google APIs hosted on *.googleapis.com.
412
+ Structure is documented below.
413
+ """
414
+ return pulumi.get(self, "oauth_token")
415
+
416
+ @oauth_token.setter
417
+ def oauth_token(self, value: Optional[pulumi.Input['PipelineDestinationAuthenticationConfigOauthTokenArgs']]):
418
+ pulumi.set(self, "oauth_token", value)
419
+
420
+
421
+ if not MYPY:
422
+ class PipelineDestinationAuthenticationConfigGoogleOidcArgsDict(TypedDict):
423
+ service_account: pulumi.Input[str]
424
+ """
425
+ Service account email used to generate the OIDC Token.
426
+ The principal who calls this API must have
427
+ iam.serviceAccounts.actAs permission in the service account. See
428
+ https://cloud.google.com/iam/docs/understanding-service-accounts
429
+ for more information. Eventarc service agents must have
430
+ roles/roles/iam.serviceAccountTokenCreator role to allow the
431
+ Pipeline to create OpenID tokens for authenticated requests.
432
+ """
433
+ audience: NotRequired[pulumi.Input[str]]
434
+ """
435
+ Audience to be used to generate the OIDC Token. The audience claim
436
+ identifies the recipient that the JWT is intended for. If
437
+ unspecified, the destination URI will be used.
438
+ """
439
+ elif False:
440
+ PipelineDestinationAuthenticationConfigGoogleOidcArgsDict: TypeAlias = Mapping[str, Any]
441
+
442
+ @pulumi.input_type
443
+ class PipelineDestinationAuthenticationConfigGoogleOidcArgs:
444
+ def __init__(__self__, *,
445
+ service_account: pulumi.Input[str],
446
+ audience: Optional[pulumi.Input[str]] = None):
447
+ """
448
+ :param pulumi.Input[str] service_account: Service account email used to generate the OIDC Token.
449
+ The principal who calls this API must have
450
+ iam.serviceAccounts.actAs permission in the service account. See
451
+ https://cloud.google.com/iam/docs/understanding-service-accounts
452
+ for more information. Eventarc service agents must have
453
+ roles/roles/iam.serviceAccountTokenCreator role to allow the
454
+ Pipeline to create OpenID tokens for authenticated requests.
455
+ :param pulumi.Input[str] audience: Audience to be used to generate the OIDC Token. The audience claim
456
+ identifies the recipient that the JWT is intended for. If
457
+ unspecified, the destination URI will be used.
458
+ """
459
+ pulumi.set(__self__, "service_account", service_account)
460
+ if audience is not None:
461
+ pulumi.set(__self__, "audience", audience)
462
+
463
+ @property
464
+ @pulumi.getter(name="serviceAccount")
465
+ def service_account(self) -> pulumi.Input[str]:
466
+ """
467
+ Service account email used to generate the OIDC Token.
468
+ The principal who calls this API must have
469
+ iam.serviceAccounts.actAs permission in the service account. See
470
+ https://cloud.google.com/iam/docs/understanding-service-accounts
471
+ for more information. Eventarc service agents must have
472
+ roles/roles/iam.serviceAccountTokenCreator role to allow the
473
+ Pipeline to create OpenID tokens for authenticated requests.
474
+ """
475
+ return pulumi.get(self, "service_account")
476
+
477
+ @service_account.setter
478
+ def service_account(self, value: pulumi.Input[str]):
479
+ pulumi.set(self, "service_account", value)
480
+
481
+ @property
482
+ @pulumi.getter
483
+ def audience(self) -> Optional[pulumi.Input[str]]:
484
+ """
485
+ Audience to be used to generate the OIDC Token. The audience claim
486
+ identifies the recipient that the JWT is intended for. If
487
+ unspecified, the destination URI will be used.
488
+ """
489
+ return pulumi.get(self, "audience")
490
+
491
+ @audience.setter
492
+ def audience(self, value: Optional[pulumi.Input[str]]):
493
+ pulumi.set(self, "audience", value)
494
+
495
+
496
+ if not MYPY:
497
+ class PipelineDestinationAuthenticationConfigOauthTokenArgsDict(TypedDict):
498
+ service_account: pulumi.Input[str]
499
+ """
500
+ Service account email used to generate the [OAuth
501
+ token](https://developers.google.com/identity/protocols/OAuth2).
502
+ The principal who calls this API must have
503
+ iam.serviceAccounts.actAs permission in the service account. See
504
+ https://cloud.google.com/iam/docs/understanding-service-accounts
505
+ for more information. Eventarc service agents must have
506
+ roles/roles/iam.serviceAccountTokenCreator role to allow Pipeline
507
+ to create OAuth2 tokens for authenticated requests.
508
+ """
509
+ scope: NotRequired[pulumi.Input[str]]
510
+ """
511
+ OAuth scope to be used for generating OAuth access token. If not
512
+ specified, "https://www.googleapis.com/auth/cloud-platform" will be
513
+ used.
514
+ """
515
+ elif False:
516
+ PipelineDestinationAuthenticationConfigOauthTokenArgsDict: TypeAlias = Mapping[str, Any]
517
+
518
+ @pulumi.input_type
519
+ class PipelineDestinationAuthenticationConfigOauthTokenArgs:
520
+ def __init__(__self__, *,
521
+ service_account: pulumi.Input[str],
522
+ scope: Optional[pulumi.Input[str]] = None):
523
+ """
524
+ :param pulumi.Input[str] service_account: Service account email used to generate the [OAuth
525
+ token](https://developers.google.com/identity/protocols/OAuth2).
526
+ The principal who calls this API must have
527
+ iam.serviceAccounts.actAs permission in the service account. See
528
+ https://cloud.google.com/iam/docs/understanding-service-accounts
529
+ for more information. Eventarc service agents must have
530
+ roles/roles/iam.serviceAccountTokenCreator role to allow Pipeline
531
+ to create OAuth2 tokens for authenticated requests.
532
+ :param pulumi.Input[str] scope: OAuth scope to be used for generating OAuth access token. If not
533
+ specified, "https://www.googleapis.com/auth/cloud-platform" will be
534
+ used.
535
+ """
536
+ pulumi.set(__self__, "service_account", service_account)
537
+ if scope is not None:
538
+ pulumi.set(__self__, "scope", scope)
539
+
540
+ @property
541
+ @pulumi.getter(name="serviceAccount")
542
+ def service_account(self) -> pulumi.Input[str]:
543
+ """
544
+ Service account email used to generate the [OAuth
545
+ token](https://developers.google.com/identity/protocols/OAuth2).
546
+ The principal who calls this API must have
547
+ iam.serviceAccounts.actAs permission in the service account. See
548
+ https://cloud.google.com/iam/docs/understanding-service-accounts
549
+ for more information. Eventarc service agents must have
550
+ roles/roles/iam.serviceAccountTokenCreator role to allow Pipeline
551
+ to create OAuth2 tokens for authenticated requests.
552
+ """
553
+ return pulumi.get(self, "service_account")
554
+
555
+ @service_account.setter
556
+ def service_account(self, value: pulumi.Input[str]):
557
+ pulumi.set(self, "service_account", value)
558
+
559
+ @property
560
+ @pulumi.getter
561
+ def scope(self) -> Optional[pulumi.Input[str]]:
562
+ """
563
+ OAuth scope to be used for generating OAuth access token. If not
564
+ specified, "https://www.googleapis.com/auth/cloud-platform" will be
565
+ used.
566
+ """
567
+ return pulumi.get(self, "scope")
568
+
569
+ @scope.setter
570
+ def scope(self, value: Optional[pulumi.Input[str]]):
571
+ pulumi.set(self, "scope", value)
572
+
573
+
574
+ if not MYPY:
575
+ class PipelineDestinationHttpEndpointArgsDict(TypedDict):
576
+ uri: pulumi.Input[str]
577
+ """
578
+ The URI of the HTTP enpdoint.
579
+ The value must be a RFC2396 URI string.
580
+ Examples: `https://svc.us-central1.p.local:8080/route`.
581
+ Only the HTTPS protocol is supported.
582
+ """
583
+ message_binding_template: NotRequired[pulumi.Input[str]]
584
+ """
585
+ The CEL expression used to modify how the destination-bound HTTP
586
+ request is constructed.
587
+ If a binding expression is not specified here, the message
588
+ is treated as a CloudEvent and is mapped to the HTTP request according
589
+ to the CloudEvent HTTP Protocol Binding Binary Content Mode
590
+ (https://github.com/cloudevents/spec/blob/main/cloudevents/bindings/http-protocol-binding.md#31-binary-content-mode).
591
+ In this representation, all fields except the `data` and
592
+ `datacontenttype` field on the message are mapped to HTTP request
593
+ headers with a prefix of `ce-`.
594
+ To construct the HTTP request payload and the value of the content-type
595
+ HTTP header, the payload format is defined as follows:
596
+ 1) Use the output_payload_format_type on the Pipeline.Destination if it
597
+ is set, else:
598
+ 2) Use the input_payload_format_type on the Pipeline if it is set,
599
+ else:
600
+ 3) Treat the payload as opaque binary data.
601
+ The `data` field of the message is converted to the payload format or
602
+ left as-is for case 3) and then attached as the payload of the HTTP
603
+ request. The `content-type` header on the HTTP request is set to the
604
+ payload format type or left empty for case 3). However, if a mediation
605
+ has updated the `datacontenttype` field on the message so that it is
606
+ not the same as the payload format type but it is still a prefix of the
607
+ payload format type, then the `content-type` header on the HTTP request
608
+ is set to this `datacontenttype` value. For example, if the
609
+ `datacontenttype` is "application/json" and the payload format type is
610
+ "application/json; charset=utf-8", then the `content-type` header on
611
+ the HTTP request is set to "application/json; charset=utf-8".
612
+ If a non-empty binding expression is specified then this expression is
613
+ used to modify the default CloudEvent HTTP Protocol Binding Binary
614
+ Content representation.
615
+ The result of the CEL expression must be a map of key/value pairs
616
+ which is used as follows:
617
+ - If a map named `headers` exists on the result of the expression,
618
+ then its key/value pairs are directly mapped to the HTTP request
619
+ headers. The headers values are constructed from the corresponding
620
+ value type's canonical representation. If the `headers` field doesn't
621
+ exist then the resulting HTTP request will be the headers of the
622
+ CloudEvent HTTP Binding Binary Content Mode representation of the final
623
+ message. Note: If the specified binding expression, has updated the
624
+ `datacontenttype` field on the message so that it is not the same as
625
+ the payload format type but it is still a prefix of the payload format
626
+ type, then the `content-type` header in the `headers` map is set to
627
+ this `datacontenttype` value.
628
+ - If a field named `body` exists on the result of the expression then
629
+ its value is directly mapped to the body of the request. If the value
630
+ of the `body` field is of type bytes or string then it is used for
631
+ the HTTP request body as-is, with no conversion. If the body field is
632
+ of any other type then it is converted to a JSON string. If the body
633
+ field does not exist then the resulting payload of the HTTP request
634
+ will be data value of the CloudEvent HTTP Binding Binary Content Mode
635
+ representation of the final message as described earlier.
636
+ - Any other fields in the resulting expression will be ignored.
637
+ The CEL expression may access the incoming CloudEvent message in its
638
+ definition, as follows:
639
+ - The `data` field of the incoming CloudEvent message can be accessed
640
+ using the `message.data` value. Subfields of `message.data` may also be
641
+ accessed if an input_payload_format has been specified on the Pipeline.
642
+ - Each attribute of the incoming CloudEvent message can be accessed
643
+ using the `message.` value, where is replaced with the
644
+ name of the attribute.
645
+ - Existing headers can be accessed in the CEL expression using the
646
+ `headers` variable. The `headers` variable defines a map of key/value
647
+ pairs corresponding to the HTTP headers of the CloudEvent HTTP Binding
648
+ Binary Content Mode representation of the final message as described
649
+ earlier. For example, the following CEL expression can be used to
650
+ construct an HTTP request by adding an additional header to the HTTP
651
+ headers of the CloudEvent HTTP Binding Binary Content Mode
652
+ representation of the final message and by overwriting the body of the
653
+ request:
654
+ ```
655
+ {
656
+ "headers": headers.merge({"new-header-key": "new-header-value"}),
657
+ "body": "new-body"
658
+ }
659
+ ```
660
+ - The default binding for the message payload can be accessed using the
661
+ `body` variable. It conatins a string representation of the message
662
+ payload in the format specified by the `output_payload_format` field.
663
+ If the `input_payload_format` field is not set, the `body`
664
+ variable contains the same message payload bytes that were published.
665
+ Additionally, the following CEL extension functions are provided for
666
+ use in this CEL expression:
667
+ - toBase64Url:
668
+ map.toBase64Url() > string
669
+ - Converts a CelValue to a base64url encoded string
670
+ - toJsonString: map.toJsonString() > string
671
+ - Converts a CelValue to a JSON string
672
+ - merge:
673
+ map1.merge(map2) > map3
674
+ - Merges the passed CEL map with the existing CEL map the
675
+ function is applied to.
676
+ - If the same key exists in both maps, if the key's value is type
677
+ map both maps are merged else the value from the passed map is
678
+ used.
679
+ - denormalize:
680
+ map.denormalize() > map
681
+ - Denormalizes a CEL map such that every value of type map or key
682
+ in the map is expanded to return a single level map.
683
+ - The resulting keys are "." separated indices of the map keys.
684
+ - For example:
685
+ {
686
+ "a": 1,
687
+ "b": {
688
+ "c": 2,
689
+ "d": 3
690
+ }
691
+ "e": [4, 5]
692
+ }
693
+ .denormalize()
694
+ > {
695
+ "a": 1,
696
+ "b.c": 2,
697
+ "b.d": 3,
698
+ "e.0": 4,
699
+ "e.1": 5
700
+ }
701
+ - setField:
702
+ map.setField(key, value) > message
703
+ - Sets the field of the message with the given key to the
704
+ given value.
705
+ - If the field is not present it will be added.
706
+ - If the field is present it will be overwritten.
707
+ - The key can be a dot separated path to set a field in a nested
708
+ message.
709
+ - Key must be of type string.
710
+ - Value may be any valid type.
711
+ - removeFields:
712
+ map.removeFields([key1, key2, ...]) > message
713
+ - Removes the fields of the map with the given keys.
714
+ - The keys can be a dot separated path to remove a field in a
715
+ nested message.
716
+ - If a key is not found it will be ignored.
717
+ - Keys must be of type string.
718
+ - toMap:
719
+ [map1, map2, ...].toMap() > map
720
+ - Converts a CEL list of CEL maps to a single CEL map
721
+ - toCloudEventJsonWithPayloadFormat:
722
+ message.toCloudEventJsonWithPayloadFormat() > map
723
+ - Converts a message to the corresponding structure of JSON
724
+ format for CloudEvents.
725
+ - It converts `data` to destination payload format
726
+ specified in `output_payload_format`. If `output_payload_format` is
727
+ not set, the data will remain unchanged.
728
+ - It also sets the corresponding datacontenttype of
729
+ the CloudEvent, as indicated by
730
+ `output_payload_format`. If no
731
+ `output_payload_format` is set it will use the value of the
732
+ "datacontenttype" attribute on the CloudEvent if present, else
733
+ remove "datacontenttype" attribute.
734
+ - This function expects that the content of the message will
735
+ adhere to the standard CloudEvent format. If it doesn't then this
736
+ function will fail.
737
+ - The result is a CEL map that corresponds to the JSON
738
+ representation of the CloudEvent. To convert that data to a JSON
739
+ string it can be chained with the toJsonString function.
740
+ The Pipeline expects that the message it receives adheres to the
741
+ standard CloudEvent format. If it doesn't then the outgoing message
742
+ request may fail with a persistent error.
743
+
744
+ - - -
745
+ """
746
+ elif False:
747
+ PipelineDestinationHttpEndpointArgsDict: TypeAlias = Mapping[str, Any]
748
+
749
+ @pulumi.input_type
750
+ class PipelineDestinationHttpEndpointArgs:
751
+ def __init__(__self__, *,
752
+ uri: pulumi.Input[str],
753
+ message_binding_template: Optional[pulumi.Input[str]] = None):
754
+ """
755
+ :param pulumi.Input[str] uri: The URI of the HTTP enpdoint.
756
+ The value must be a RFC2396 URI string.
757
+ Examples: `https://svc.us-central1.p.local:8080/route`.
758
+ Only the HTTPS protocol is supported.
759
+ :param pulumi.Input[str] message_binding_template: The CEL expression used to modify how the destination-bound HTTP
760
+ request is constructed.
761
+ If a binding expression is not specified here, the message
762
+ is treated as a CloudEvent and is mapped to the HTTP request according
763
+ to the CloudEvent HTTP Protocol Binding Binary Content Mode
764
+ (https://github.com/cloudevents/spec/blob/main/cloudevents/bindings/http-protocol-binding.md#31-binary-content-mode).
765
+ In this representation, all fields except the `data` and
766
+ `datacontenttype` field on the message are mapped to HTTP request
767
+ headers with a prefix of `ce-`.
768
+ To construct the HTTP request payload and the value of the content-type
769
+ HTTP header, the payload format is defined as follows:
770
+ 1) Use the output_payload_format_type on the Pipeline.Destination if it
771
+ is set, else:
772
+ 2) Use the input_payload_format_type on the Pipeline if it is set,
773
+ else:
774
+ 3) Treat the payload as opaque binary data.
775
+ The `data` field of the message is converted to the payload format or
776
+ left as-is for case 3) and then attached as the payload of the HTTP
777
+ request. The `content-type` header on the HTTP request is set to the
778
+ payload format type or left empty for case 3). However, if a mediation
779
+ has updated the `datacontenttype` field on the message so that it is
780
+ not the same as the payload format type but it is still a prefix of the
781
+ payload format type, then the `content-type` header on the HTTP request
782
+ is set to this `datacontenttype` value. For example, if the
783
+ `datacontenttype` is "application/json" and the payload format type is
784
+ "application/json; charset=utf-8", then the `content-type` header on
785
+ the HTTP request is set to "application/json; charset=utf-8".
786
+ If a non-empty binding expression is specified then this expression is
787
+ used to modify the default CloudEvent HTTP Protocol Binding Binary
788
+ Content representation.
789
+ The result of the CEL expression must be a map of key/value pairs
790
+ which is used as follows:
791
+ - If a map named `headers` exists on the result of the expression,
792
+ then its key/value pairs are directly mapped to the HTTP request
793
+ headers. The headers values are constructed from the corresponding
794
+ value type's canonical representation. If the `headers` field doesn't
795
+ exist then the resulting HTTP request will be the headers of the
796
+ CloudEvent HTTP Binding Binary Content Mode representation of the final
797
+ message. Note: If the specified binding expression, has updated the
798
+ `datacontenttype` field on the message so that it is not the same as
799
+ the payload format type but it is still a prefix of the payload format
800
+ type, then the `content-type` header in the `headers` map is set to
801
+ this `datacontenttype` value.
802
+ - If a field named `body` exists on the result of the expression then
803
+ its value is directly mapped to the body of the request. If the value
804
+ of the `body` field is of type bytes or string then it is used for
805
+ the HTTP request body as-is, with no conversion. If the body field is
806
+ of any other type then it is converted to a JSON string. If the body
807
+ field does not exist then the resulting payload of the HTTP request
808
+ will be data value of the CloudEvent HTTP Binding Binary Content Mode
809
+ representation of the final message as described earlier.
810
+ - Any other fields in the resulting expression will be ignored.
811
+ The CEL expression may access the incoming CloudEvent message in its
812
+ definition, as follows:
813
+ - The `data` field of the incoming CloudEvent message can be accessed
814
+ using the `message.data` value. Subfields of `message.data` may also be
815
+ accessed if an input_payload_format has been specified on the Pipeline.
816
+ - Each attribute of the incoming CloudEvent message can be accessed
817
+ using the `message.` value, where is replaced with the
818
+ name of the attribute.
819
+ - Existing headers can be accessed in the CEL expression using the
820
+ `headers` variable. The `headers` variable defines a map of key/value
821
+ pairs corresponding to the HTTP headers of the CloudEvent HTTP Binding
822
+ Binary Content Mode representation of the final message as described
823
+ earlier. For example, the following CEL expression can be used to
824
+ construct an HTTP request by adding an additional header to the HTTP
825
+ headers of the CloudEvent HTTP Binding Binary Content Mode
826
+ representation of the final message and by overwriting the body of the
827
+ request:
828
+ ```
829
+ {
830
+ "headers": headers.merge({"new-header-key": "new-header-value"}),
831
+ "body": "new-body"
832
+ }
833
+ ```
834
+ - The default binding for the message payload can be accessed using the
835
+ `body` variable. It conatins a string representation of the message
836
+ payload in the format specified by the `output_payload_format` field.
837
+ If the `input_payload_format` field is not set, the `body`
838
+ variable contains the same message payload bytes that were published.
839
+ Additionally, the following CEL extension functions are provided for
840
+ use in this CEL expression:
841
+ - toBase64Url:
842
+ map.toBase64Url() > string
843
+ - Converts a CelValue to a base64url encoded string
844
+ - toJsonString: map.toJsonString() > string
845
+ - Converts a CelValue to a JSON string
846
+ - merge:
847
+ map1.merge(map2) > map3
848
+ - Merges the passed CEL map with the existing CEL map the
849
+ function is applied to.
850
+ - If the same key exists in both maps, if the key's value is type
851
+ map both maps are merged else the value from the passed map is
852
+ used.
853
+ - denormalize:
854
+ map.denormalize() > map
855
+ - Denormalizes a CEL map such that every value of type map or key
856
+ in the map is expanded to return a single level map.
857
+ - The resulting keys are "." separated indices of the map keys.
858
+ - For example:
859
+ {
860
+ "a": 1,
861
+ "b": {
862
+ "c": 2,
863
+ "d": 3
864
+ }
865
+ "e": [4, 5]
866
+ }
867
+ .denormalize()
868
+ > {
869
+ "a": 1,
870
+ "b.c": 2,
871
+ "b.d": 3,
872
+ "e.0": 4,
873
+ "e.1": 5
874
+ }
875
+ - setField:
876
+ map.setField(key, value) > message
877
+ - Sets the field of the message with the given key to the
878
+ given value.
879
+ - If the field is not present it will be added.
880
+ - If the field is present it will be overwritten.
881
+ - The key can be a dot separated path to set a field in a nested
882
+ message.
883
+ - Key must be of type string.
884
+ - Value may be any valid type.
885
+ - removeFields:
886
+ map.removeFields([key1, key2, ...]) > message
887
+ - Removes the fields of the map with the given keys.
888
+ - The keys can be a dot separated path to remove a field in a
889
+ nested message.
890
+ - If a key is not found it will be ignored.
891
+ - Keys must be of type string.
892
+ - toMap:
893
+ [map1, map2, ...].toMap() > map
894
+ - Converts a CEL list of CEL maps to a single CEL map
895
+ - toCloudEventJsonWithPayloadFormat:
896
+ message.toCloudEventJsonWithPayloadFormat() > map
897
+ - Converts a message to the corresponding structure of JSON
898
+ format for CloudEvents.
899
+ - It converts `data` to destination payload format
900
+ specified in `output_payload_format`. If `output_payload_format` is
901
+ not set, the data will remain unchanged.
902
+ - It also sets the corresponding datacontenttype of
903
+ the CloudEvent, as indicated by
904
+ `output_payload_format`. If no
905
+ `output_payload_format` is set it will use the value of the
906
+ "datacontenttype" attribute on the CloudEvent if present, else
907
+ remove "datacontenttype" attribute.
908
+ - This function expects that the content of the message will
909
+ adhere to the standard CloudEvent format. If it doesn't then this
910
+ function will fail.
911
+ - The result is a CEL map that corresponds to the JSON
912
+ representation of the CloudEvent. To convert that data to a JSON
913
+ string it can be chained with the toJsonString function.
914
+ The Pipeline expects that the message it receives adheres to the
915
+ standard CloudEvent format. If it doesn't then the outgoing message
916
+ request may fail with a persistent error.
917
+
918
+ - - -
919
+ """
920
+ pulumi.set(__self__, "uri", uri)
921
+ if message_binding_template is not None:
922
+ pulumi.set(__self__, "message_binding_template", message_binding_template)
923
+
924
+ @property
925
+ @pulumi.getter
926
+ def uri(self) -> pulumi.Input[str]:
927
+ """
928
+ The URI of the HTTP enpdoint.
929
+ The value must be a RFC2396 URI string.
930
+ Examples: `https://svc.us-central1.p.local:8080/route`.
931
+ Only the HTTPS protocol is supported.
932
+ """
933
+ return pulumi.get(self, "uri")
934
+
935
+ @uri.setter
936
+ def uri(self, value: pulumi.Input[str]):
937
+ pulumi.set(self, "uri", value)
938
+
939
+ @property
940
+ @pulumi.getter(name="messageBindingTemplate")
941
+ def message_binding_template(self) -> Optional[pulumi.Input[str]]:
942
+ """
943
+ The CEL expression used to modify how the destination-bound HTTP
944
+ request is constructed.
945
+ If a binding expression is not specified here, the message
946
+ is treated as a CloudEvent and is mapped to the HTTP request according
947
+ to the CloudEvent HTTP Protocol Binding Binary Content Mode
948
+ (https://github.com/cloudevents/spec/blob/main/cloudevents/bindings/http-protocol-binding.md#31-binary-content-mode).
949
+ In this representation, all fields except the `data` and
950
+ `datacontenttype` field on the message are mapped to HTTP request
951
+ headers with a prefix of `ce-`.
952
+ To construct the HTTP request payload and the value of the content-type
953
+ HTTP header, the payload format is defined as follows:
954
+ 1) Use the output_payload_format_type on the Pipeline.Destination if it
955
+ is set, else:
956
+ 2) Use the input_payload_format_type on the Pipeline if it is set,
957
+ else:
958
+ 3) Treat the payload as opaque binary data.
959
+ The `data` field of the message is converted to the payload format or
960
+ left as-is for case 3) and then attached as the payload of the HTTP
961
+ request. The `content-type` header on the HTTP request is set to the
962
+ payload format type or left empty for case 3). However, if a mediation
963
+ has updated the `datacontenttype` field on the message so that it is
964
+ not the same as the payload format type but it is still a prefix of the
965
+ payload format type, then the `content-type` header on the HTTP request
966
+ is set to this `datacontenttype` value. For example, if the
967
+ `datacontenttype` is "application/json" and the payload format type is
968
+ "application/json; charset=utf-8", then the `content-type` header on
969
+ the HTTP request is set to "application/json; charset=utf-8".
970
+ If a non-empty binding expression is specified then this expression is
971
+ used to modify the default CloudEvent HTTP Protocol Binding Binary
972
+ Content representation.
973
+ The result of the CEL expression must be a map of key/value pairs
974
+ which is used as follows:
975
+ - If a map named `headers` exists on the result of the expression,
976
+ then its key/value pairs are directly mapped to the HTTP request
977
+ headers. The headers values are constructed from the corresponding
978
+ value type's canonical representation. If the `headers` field doesn't
979
+ exist then the resulting HTTP request will be the headers of the
980
+ CloudEvent HTTP Binding Binary Content Mode representation of the final
981
+ message. Note: If the specified binding expression, has updated the
982
+ `datacontenttype` field on the message so that it is not the same as
983
+ the payload format type but it is still a prefix of the payload format
984
+ type, then the `content-type` header in the `headers` map is set to
985
+ this `datacontenttype` value.
986
+ - If a field named `body` exists on the result of the expression then
987
+ its value is directly mapped to the body of the request. If the value
988
+ of the `body` field is of type bytes or string then it is used for
989
+ the HTTP request body as-is, with no conversion. If the body field is
990
+ of any other type then it is converted to a JSON string. If the body
991
+ field does not exist then the resulting payload of the HTTP request
992
+ will be data value of the CloudEvent HTTP Binding Binary Content Mode
993
+ representation of the final message as described earlier.
994
+ - Any other fields in the resulting expression will be ignored.
995
+ The CEL expression may access the incoming CloudEvent message in its
996
+ definition, as follows:
997
+ - The `data` field of the incoming CloudEvent message can be accessed
998
+ using the `message.data` value. Subfields of `message.data` may also be
999
+ accessed if an input_payload_format has been specified on the Pipeline.
1000
+ - Each attribute of the incoming CloudEvent message can be accessed
1001
+ using the `message.` value, where is replaced with the
1002
+ name of the attribute.
1003
+ - Existing headers can be accessed in the CEL expression using the
1004
+ `headers` variable. The `headers` variable defines a map of key/value
1005
+ pairs corresponding to the HTTP headers of the CloudEvent HTTP Binding
1006
+ Binary Content Mode representation of the final message as described
1007
+ earlier. For example, the following CEL expression can be used to
1008
+ construct an HTTP request by adding an additional header to the HTTP
1009
+ headers of the CloudEvent HTTP Binding Binary Content Mode
1010
+ representation of the final message and by overwriting the body of the
1011
+ request:
1012
+ ```
1013
+ {
1014
+ "headers": headers.merge({"new-header-key": "new-header-value"}),
1015
+ "body": "new-body"
1016
+ }
1017
+ ```
1018
+ - The default binding for the message payload can be accessed using the
1019
+ `body` variable. It conatins a string representation of the message
1020
+ payload in the format specified by the `output_payload_format` field.
1021
+ If the `input_payload_format` field is not set, the `body`
1022
+ variable contains the same message payload bytes that were published.
1023
+ Additionally, the following CEL extension functions are provided for
1024
+ use in this CEL expression:
1025
+ - toBase64Url:
1026
+ map.toBase64Url() > string
1027
+ - Converts a CelValue to a base64url encoded string
1028
+ - toJsonString: map.toJsonString() > string
1029
+ - Converts a CelValue to a JSON string
1030
+ - merge:
1031
+ map1.merge(map2) > map3
1032
+ - Merges the passed CEL map with the existing CEL map the
1033
+ function is applied to.
1034
+ - If the same key exists in both maps, if the key's value is type
1035
+ map both maps are merged else the value from the passed map is
1036
+ used.
1037
+ - denormalize:
1038
+ map.denormalize() > map
1039
+ - Denormalizes a CEL map such that every value of type map or key
1040
+ in the map is expanded to return a single level map.
1041
+ - The resulting keys are "." separated indices of the map keys.
1042
+ - For example:
1043
+ {
1044
+ "a": 1,
1045
+ "b": {
1046
+ "c": 2,
1047
+ "d": 3
1048
+ }
1049
+ "e": [4, 5]
1050
+ }
1051
+ .denormalize()
1052
+ > {
1053
+ "a": 1,
1054
+ "b.c": 2,
1055
+ "b.d": 3,
1056
+ "e.0": 4,
1057
+ "e.1": 5
1058
+ }
1059
+ - setField:
1060
+ map.setField(key, value) > message
1061
+ - Sets the field of the message with the given key to the
1062
+ given value.
1063
+ - If the field is not present it will be added.
1064
+ - If the field is present it will be overwritten.
1065
+ - The key can be a dot separated path to set a field in a nested
1066
+ message.
1067
+ - Key must be of type string.
1068
+ - Value may be any valid type.
1069
+ - removeFields:
1070
+ map.removeFields([key1, key2, ...]) > message
1071
+ - Removes the fields of the map with the given keys.
1072
+ - The keys can be a dot separated path to remove a field in a
1073
+ nested message.
1074
+ - If a key is not found it will be ignored.
1075
+ - Keys must be of type string.
1076
+ - toMap:
1077
+ [map1, map2, ...].toMap() > map
1078
+ - Converts a CEL list of CEL maps to a single CEL map
1079
+ - toCloudEventJsonWithPayloadFormat:
1080
+ message.toCloudEventJsonWithPayloadFormat() > map
1081
+ - Converts a message to the corresponding structure of JSON
1082
+ format for CloudEvents.
1083
+ - It converts `data` to destination payload format
1084
+ specified in `output_payload_format`. If `output_payload_format` is
1085
+ not set, the data will remain unchanged.
1086
+ - It also sets the corresponding datacontenttype of
1087
+ the CloudEvent, as indicated by
1088
+ `output_payload_format`. If no
1089
+ `output_payload_format` is set it will use the value of the
1090
+ "datacontenttype" attribute on the CloudEvent if present, else
1091
+ remove "datacontenttype" attribute.
1092
+ - This function expects that the content of the message will
1093
+ adhere to the standard CloudEvent format. If it doesn't then this
1094
+ function will fail.
1095
+ - The result is a CEL map that corresponds to the JSON
1096
+ representation of the CloudEvent. To convert that data to a JSON
1097
+ string it can be chained with the toJsonString function.
1098
+ The Pipeline expects that the message it receives adheres to the
1099
+ standard CloudEvent format. If it doesn't then the outgoing message
1100
+ request may fail with a persistent error.
1101
+
1102
+ - - -
1103
+ """
1104
+ return pulumi.get(self, "message_binding_template")
1105
+
1106
+ @message_binding_template.setter
1107
+ def message_binding_template(self, value: Optional[pulumi.Input[str]]):
1108
+ pulumi.set(self, "message_binding_template", value)
1109
+
1110
+
1111
+ if not MYPY:
1112
+ class PipelineDestinationNetworkConfigArgsDict(TypedDict):
1113
+ network_attachment: pulumi.Input[str]
1114
+ """
1115
+ Name of the NetworkAttachment that allows access to the consumer VPC.
1116
+ Format:
1117
+ `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`
1118
+ """
1119
+ elif False:
1120
+ PipelineDestinationNetworkConfigArgsDict: TypeAlias = Mapping[str, Any]
1121
+
1122
+ @pulumi.input_type
1123
+ class PipelineDestinationNetworkConfigArgs:
1124
+ def __init__(__self__, *,
1125
+ network_attachment: pulumi.Input[str]):
1126
+ """
1127
+ :param pulumi.Input[str] network_attachment: Name of the NetworkAttachment that allows access to the consumer VPC.
1128
+ Format:
1129
+ `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`
1130
+ """
1131
+ pulumi.set(__self__, "network_attachment", network_attachment)
1132
+
1133
+ @property
1134
+ @pulumi.getter(name="networkAttachment")
1135
+ def network_attachment(self) -> pulumi.Input[str]:
1136
+ """
1137
+ Name of the NetworkAttachment that allows access to the consumer VPC.
1138
+ Format:
1139
+ `projects/{PROJECT_ID}/regions/{REGION}/networkAttachments/{NETWORK_ATTACHMENT_NAME}`
1140
+ """
1141
+ return pulumi.get(self, "network_attachment")
1142
+
1143
+ @network_attachment.setter
1144
+ def network_attachment(self, value: pulumi.Input[str]):
1145
+ pulumi.set(self, "network_attachment", value)
1146
+
1147
+
1148
+ if not MYPY:
1149
+ class PipelineDestinationOutputPayloadFormatArgsDict(TypedDict):
1150
+ avro: NotRequired[pulumi.Input['PipelineDestinationOutputPayloadFormatAvroArgsDict']]
1151
+ """
1152
+ The format of an AVRO message payload.
1153
+ Structure is documented below.
1154
+ """
1155
+ json: NotRequired[pulumi.Input['PipelineDestinationOutputPayloadFormatJsonArgsDict']]
1156
+ """
1157
+ The format of a JSON message payload.
1158
+ """
1159
+ protobuf: NotRequired[pulumi.Input['PipelineDestinationOutputPayloadFormatProtobufArgsDict']]
1160
+ """
1161
+ The format of a Protobuf message payload.
1162
+ Structure is documented below.
1163
+ """
1164
+ elif False:
1165
+ PipelineDestinationOutputPayloadFormatArgsDict: TypeAlias = Mapping[str, Any]
1166
+
1167
+ @pulumi.input_type
1168
+ class PipelineDestinationOutputPayloadFormatArgs:
1169
+ def __init__(__self__, *,
1170
+ avro: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatAvroArgs']] = None,
1171
+ json: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatJsonArgs']] = None,
1172
+ protobuf: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatProtobufArgs']] = None):
1173
+ """
1174
+ :param pulumi.Input['PipelineDestinationOutputPayloadFormatAvroArgs'] avro: The format of an AVRO message payload.
1175
+ Structure is documented below.
1176
+ :param pulumi.Input['PipelineDestinationOutputPayloadFormatJsonArgs'] json: The format of a JSON message payload.
1177
+ :param pulumi.Input['PipelineDestinationOutputPayloadFormatProtobufArgs'] protobuf: The format of a Protobuf message payload.
1178
+ Structure is documented below.
1179
+ """
1180
+ if avro is not None:
1181
+ pulumi.set(__self__, "avro", avro)
1182
+ if json is not None:
1183
+ pulumi.set(__self__, "json", json)
1184
+ if protobuf is not None:
1185
+ pulumi.set(__self__, "protobuf", protobuf)
1186
+
1187
+ @property
1188
+ @pulumi.getter
1189
+ def avro(self) -> Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatAvroArgs']]:
1190
+ """
1191
+ The format of an AVRO message payload.
1192
+ Structure is documented below.
1193
+ """
1194
+ return pulumi.get(self, "avro")
1195
+
1196
+ @avro.setter
1197
+ def avro(self, value: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatAvroArgs']]):
1198
+ pulumi.set(self, "avro", value)
1199
+
1200
+ @property
1201
+ @pulumi.getter
1202
+ def json(self) -> Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatJsonArgs']]:
1203
+ """
1204
+ The format of a JSON message payload.
1205
+ """
1206
+ return pulumi.get(self, "json")
1207
+
1208
+ @json.setter
1209
+ def json(self, value: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatJsonArgs']]):
1210
+ pulumi.set(self, "json", value)
1211
+
1212
+ @property
1213
+ @pulumi.getter
1214
+ def protobuf(self) -> Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatProtobufArgs']]:
1215
+ """
1216
+ The format of a Protobuf message payload.
1217
+ Structure is documented below.
1218
+ """
1219
+ return pulumi.get(self, "protobuf")
1220
+
1221
+ @protobuf.setter
1222
+ def protobuf(self, value: Optional[pulumi.Input['PipelineDestinationOutputPayloadFormatProtobufArgs']]):
1223
+ pulumi.set(self, "protobuf", value)
1224
+
1225
+
1226
+ if not MYPY:
1227
+ class PipelineDestinationOutputPayloadFormatAvroArgsDict(TypedDict):
1228
+ schema_definition: NotRequired[pulumi.Input[str]]
1229
+ """
1230
+ The entire schema definition is stored in this field.
1231
+ """
1232
+ elif False:
1233
+ PipelineDestinationOutputPayloadFormatAvroArgsDict: TypeAlias = Mapping[str, Any]
1234
+
1235
+ @pulumi.input_type
1236
+ class PipelineDestinationOutputPayloadFormatAvroArgs:
1237
+ def __init__(__self__, *,
1238
+ schema_definition: Optional[pulumi.Input[str]] = None):
1239
+ """
1240
+ :param pulumi.Input[str] schema_definition: The entire schema definition is stored in this field.
1241
+ """
1242
+ if schema_definition is not None:
1243
+ pulumi.set(__self__, "schema_definition", schema_definition)
1244
+
1245
+ @property
1246
+ @pulumi.getter(name="schemaDefinition")
1247
+ def schema_definition(self) -> Optional[pulumi.Input[str]]:
1248
+ """
1249
+ The entire schema definition is stored in this field.
1250
+ """
1251
+ return pulumi.get(self, "schema_definition")
1252
+
1253
+ @schema_definition.setter
1254
+ def schema_definition(self, value: Optional[pulumi.Input[str]]):
1255
+ pulumi.set(self, "schema_definition", value)
1256
+
1257
+
1258
+ if not MYPY:
1259
+ class PipelineDestinationOutputPayloadFormatJsonArgsDict(TypedDict):
1260
+ pass
1261
+ elif False:
1262
+ PipelineDestinationOutputPayloadFormatJsonArgsDict: TypeAlias = Mapping[str, Any]
1263
+
1264
+ @pulumi.input_type
1265
+ class PipelineDestinationOutputPayloadFormatJsonArgs:
1266
+ def __init__(__self__):
1267
+ pass
1268
+
1269
+
1270
+ if not MYPY:
1271
+ class PipelineDestinationOutputPayloadFormatProtobufArgsDict(TypedDict):
1272
+ schema_definition: NotRequired[pulumi.Input[str]]
1273
+ """
1274
+ The entire schema definition is stored in this field.
1275
+ """
1276
+ elif False:
1277
+ PipelineDestinationOutputPayloadFormatProtobufArgsDict: TypeAlias = Mapping[str, Any]
1278
+
1279
+ @pulumi.input_type
1280
+ class PipelineDestinationOutputPayloadFormatProtobufArgs:
1281
+ def __init__(__self__, *,
1282
+ schema_definition: Optional[pulumi.Input[str]] = None):
1283
+ """
1284
+ :param pulumi.Input[str] schema_definition: The entire schema definition is stored in this field.
1285
+ """
1286
+ if schema_definition is not None:
1287
+ pulumi.set(__self__, "schema_definition", schema_definition)
1288
+
1289
+ @property
1290
+ @pulumi.getter(name="schemaDefinition")
1291
+ def schema_definition(self) -> Optional[pulumi.Input[str]]:
1292
+ """
1293
+ The entire schema definition is stored in this field.
1294
+ """
1295
+ return pulumi.get(self, "schema_definition")
1296
+
1297
+ @schema_definition.setter
1298
+ def schema_definition(self, value: Optional[pulumi.Input[str]]):
1299
+ pulumi.set(self, "schema_definition", value)
1300
+
1301
+
1302
+ if not MYPY:
1303
+ class PipelineInputPayloadFormatArgsDict(TypedDict):
1304
+ avro: NotRequired[pulumi.Input['PipelineInputPayloadFormatAvroArgsDict']]
1305
+ """
1306
+ The format of an AVRO message payload.
1307
+ Structure is documented below.
1308
+ """
1309
+ json: NotRequired[pulumi.Input['PipelineInputPayloadFormatJsonArgsDict']]
1310
+ """
1311
+ The format of a JSON message payload.
1312
+ """
1313
+ protobuf: NotRequired[pulumi.Input['PipelineInputPayloadFormatProtobufArgsDict']]
1314
+ """
1315
+ The format of a Protobuf message payload.
1316
+ Structure is documented below.
1317
+ """
1318
+ elif False:
1319
+ PipelineInputPayloadFormatArgsDict: TypeAlias = Mapping[str, Any]
1320
+
1321
+ @pulumi.input_type
1322
+ class PipelineInputPayloadFormatArgs:
1323
+ def __init__(__self__, *,
1324
+ avro: Optional[pulumi.Input['PipelineInputPayloadFormatAvroArgs']] = None,
1325
+ json: Optional[pulumi.Input['PipelineInputPayloadFormatJsonArgs']] = None,
1326
+ protobuf: Optional[pulumi.Input['PipelineInputPayloadFormatProtobufArgs']] = None):
1327
+ """
1328
+ :param pulumi.Input['PipelineInputPayloadFormatAvroArgs'] avro: The format of an AVRO message payload.
1329
+ Structure is documented below.
1330
+ :param pulumi.Input['PipelineInputPayloadFormatJsonArgs'] json: The format of a JSON message payload.
1331
+ :param pulumi.Input['PipelineInputPayloadFormatProtobufArgs'] protobuf: The format of a Protobuf message payload.
1332
+ Structure is documented below.
1333
+ """
1334
+ if avro is not None:
1335
+ pulumi.set(__self__, "avro", avro)
1336
+ if json is not None:
1337
+ pulumi.set(__self__, "json", json)
1338
+ if protobuf is not None:
1339
+ pulumi.set(__self__, "protobuf", protobuf)
1340
+
1341
+ @property
1342
+ @pulumi.getter
1343
+ def avro(self) -> Optional[pulumi.Input['PipelineInputPayloadFormatAvroArgs']]:
1344
+ """
1345
+ The format of an AVRO message payload.
1346
+ Structure is documented below.
1347
+ """
1348
+ return pulumi.get(self, "avro")
1349
+
1350
+ @avro.setter
1351
+ def avro(self, value: Optional[pulumi.Input['PipelineInputPayloadFormatAvroArgs']]):
1352
+ pulumi.set(self, "avro", value)
1353
+
1354
+ @property
1355
+ @pulumi.getter
1356
+ def json(self) -> Optional[pulumi.Input['PipelineInputPayloadFormatJsonArgs']]:
1357
+ """
1358
+ The format of a JSON message payload.
1359
+ """
1360
+ return pulumi.get(self, "json")
1361
+
1362
+ @json.setter
1363
+ def json(self, value: Optional[pulumi.Input['PipelineInputPayloadFormatJsonArgs']]):
1364
+ pulumi.set(self, "json", value)
1365
+
1366
+ @property
1367
+ @pulumi.getter
1368
+ def protobuf(self) -> Optional[pulumi.Input['PipelineInputPayloadFormatProtobufArgs']]:
1369
+ """
1370
+ The format of a Protobuf message payload.
1371
+ Structure is documented below.
1372
+ """
1373
+ return pulumi.get(self, "protobuf")
1374
+
1375
+ @protobuf.setter
1376
+ def protobuf(self, value: Optional[pulumi.Input['PipelineInputPayloadFormatProtobufArgs']]):
1377
+ pulumi.set(self, "protobuf", value)
1378
+
1379
+
1380
+ if not MYPY:
1381
+ class PipelineInputPayloadFormatAvroArgsDict(TypedDict):
1382
+ schema_definition: NotRequired[pulumi.Input[str]]
1383
+ """
1384
+ The entire schema definition is stored in this field.
1385
+ """
1386
+ elif False:
1387
+ PipelineInputPayloadFormatAvroArgsDict: TypeAlias = Mapping[str, Any]
1388
+
1389
+ @pulumi.input_type
1390
+ class PipelineInputPayloadFormatAvroArgs:
1391
+ def __init__(__self__, *,
1392
+ schema_definition: Optional[pulumi.Input[str]] = None):
1393
+ """
1394
+ :param pulumi.Input[str] schema_definition: The entire schema definition is stored in this field.
1395
+ """
1396
+ if schema_definition is not None:
1397
+ pulumi.set(__self__, "schema_definition", schema_definition)
1398
+
1399
+ @property
1400
+ @pulumi.getter(name="schemaDefinition")
1401
+ def schema_definition(self) -> Optional[pulumi.Input[str]]:
1402
+ """
1403
+ The entire schema definition is stored in this field.
1404
+ """
1405
+ return pulumi.get(self, "schema_definition")
1406
+
1407
+ @schema_definition.setter
1408
+ def schema_definition(self, value: Optional[pulumi.Input[str]]):
1409
+ pulumi.set(self, "schema_definition", value)
1410
+
1411
+
1412
+ if not MYPY:
1413
+ class PipelineInputPayloadFormatJsonArgsDict(TypedDict):
1414
+ pass
1415
+ elif False:
1416
+ PipelineInputPayloadFormatJsonArgsDict: TypeAlias = Mapping[str, Any]
1417
+
1418
+ @pulumi.input_type
1419
+ class PipelineInputPayloadFormatJsonArgs:
1420
+ def __init__(__self__):
1421
+ pass
1422
+
1423
+
1424
+ if not MYPY:
1425
+ class PipelineInputPayloadFormatProtobufArgsDict(TypedDict):
1426
+ schema_definition: NotRequired[pulumi.Input[str]]
1427
+ """
1428
+ The entire schema definition is stored in this field.
1429
+ """
1430
+ elif False:
1431
+ PipelineInputPayloadFormatProtobufArgsDict: TypeAlias = Mapping[str, Any]
1432
+
1433
+ @pulumi.input_type
1434
+ class PipelineInputPayloadFormatProtobufArgs:
1435
+ def __init__(__self__, *,
1436
+ schema_definition: Optional[pulumi.Input[str]] = None):
1437
+ """
1438
+ :param pulumi.Input[str] schema_definition: The entire schema definition is stored in this field.
1439
+ """
1440
+ if schema_definition is not None:
1441
+ pulumi.set(__self__, "schema_definition", schema_definition)
1442
+
1443
+ @property
1444
+ @pulumi.getter(name="schemaDefinition")
1445
+ def schema_definition(self) -> Optional[pulumi.Input[str]]:
1446
+ """
1447
+ The entire schema definition is stored in this field.
1448
+ """
1449
+ return pulumi.get(self, "schema_definition")
1450
+
1451
+ @schema_definition.setter
1452
+ def schema_definition(self, value: Optional[pulumi.Input[str]]):
1453
+ pulumi.set(self, "schema_definition", value)
1454
+
1455
+
1456
+ if not MYPY:
1457
+ class PipelineLoggingConfigArgsDict(TypedDict):
1458
+ log_severity: NotRequired[pulumi.Input[str]]
1459
+ """
1460
+ The minimum severity of logs that will be sent to Stackdriver/Platform
1461
+ Telemetry. Logs at severitiy ≥ this value will be sent, unless it is NONE.
1462
+ Possible values are: `NONE`, `DEBUG`, `INFO`, `NOTICE`, `WARNING`, `ERROR`, `CRITICAL`, `ALERT`, `EMERGENCY`.
1463
+ """
1464
+ elif False:
1465
+ PipelineLoggingConfigArgsDict: TypeAlias = Mapping[str, Any]
1466
+
1467
+ @pulumi.input_type
1468
+ class PipelineLoggingConfigArgs:
1469
+ def __init__(__self__, *,
1470
+ log_severity: Optional[pulumi.Input[str]] = None):
1471
+ """
1472
+ :param pulumi.Input[str] log_severity: The minimum severity of logs that will be sent to Stackdriver/Platform
1473
+ Telemetry. Logs at severitiy ≥ this value will be sent, unless it is NONE.
1474
+ Possible values are: `NONE`, `DEBUG`, `INFO`, `NOTICE`, `WARNING`, `ERROR`, `CRITICAL`, `ALERT`, `EMERGENCY`.
1475
+ """
1476
+ if log_severity is not None:
1477
+ pulumi.set(__self__, "log_severity", log_severity)
1478
+
1479
+ @property
1480
+ @pulumi.getter(name="logSeverity")
1481
+ def log_severity(self) -> Optional[pulumi.Input[str]]:
1482
+ """
1483
+ The minimum severity of logs that will be sent to Stackdriver/Platform
1484
+ Telemetry. Logs at severitiy ≥ this value will be sent, unless it is NONE.
1485
+ Possible values are: `NONE`, `DEBUG`, `INFO`, `NOTICE`, `WARNING`, `ERROR`, `CRITICAL`, `ALERT`, `EMERGENCY`.
1486
+ """
1487
+ return pulumi.get(self, "log_severity")
1488
+
1489
+ @log_severity.setter
1490
+ def log_severity(self, value: Optional[pulumi.Input[str]]):
1491
+ pulumi.set(self, "log_severity", value)
1492
+
1493
+
1494
+ if not MYPY:
1495
+ class PipelineMediationArgsDict(TypedDict):
1496
+ transformation: NotRequired[pulumi.Input['PipelineMediationTransformationArgsDict']]
1497
+ """
1498
+ Transformation defines the way to transform an incoming message.
1499
+ Structure is documented below.
1500
+ """
1501
+ elif False:
1502
+ PipelineMediationArgsDict: TypeAlias = Mapping[str, Any]
1503
+
1504
+ @pulumi.input_type
1505
+ class PipelineMediationArgs:
1506
+ def __init__(__self__, *,
1507
+ transformation: Optional[pulumi.Input['PipelineMediationTransformationArgs']] = None):
1508
+ """
1509
+ :param pulumi.Input['PipelineMediationTransformationArgs'] transformation: Transformation defines the way to transform an incoming message.
1510
+ Structure is documented below.
1511
+ """
1512
+ if transformation is not None:
1513
+ pulumi.set(__self__, "transformation", transformation)
1514
+
1515
+ @property
1516
+ @pulumi.getter
1517
+ def transformation(self) -> Optional[pulumi.Input['PipelineMediationTransformationArgs']]:
1518
+ """
1519
+ Transformation defines the way to transform an incoming message.
1520
+ Structure is documented below.
1521
+ """
1522
+ return pulumi.get(self, "transformation")
1523
+
1524
+ @transformation.setter
1525
+ def transformation(self, value: Optional[pulumi.Input['PipelineMediationTransformationArgs']]):
1526
+ pulumi.set(self, "transformation", value)
1527
+
1528
+
1529
+ if not MYPY:
1530
+ class PipelineMediationTransformationArgsDict(TypedDict):
1531
+ transformation_template: NotRequired[pulumi.Input[str]]
1532
+ """
1533
+ The CEL expression template to apply to transform messages.
1534
+ The following CEL extension functions are provided for
1535
+ use in this CEL expression:
1536
+ - merge:
1537
+ map1.merge(map2) > map3
1538
+ - Merges the passed CEL map with the existing CEL map the
1539
+ function is applied to.
1540
+ - If the same key exists in both maps, if the key's value is type
1541
+ map both maps are merged else the value from the passed map is
1542
+ used.
1543
+ - denormalize:
1544
+ map.denormalize() > map
1545
+ - Denormalizes a CEL map such that every value of type map or key
1546
+ in the map is expanded to return a single level map.
1547
+ - The resulting keys are "." separated indices of the map keys.
1548
+ - For example:
1549
+ {
1550
+ "a": 1,
1551
+ "b": {
1552
+ "c": 2,
1553
+ "d": 3
1554
+ }
1555
+ "e": [4, 5]
1556
+ }
1557
+ .denormalize()
1558
+ > {
1559
+ "a": 1,
1560
+ "b.c": 2,
1561
+ "b.d": 3,
1562
+ "e.0": 4,
1563
+ "e.1": 5
1564
+ }
1565
+ - setField:
1566
+ map.setField(key, value) > message
1567
+ - Sets the field of the message with the given key to the
1568
+ given value.
1569
+ - If the field is not present it will be added.
1570
+ - If the field is present it will be overwritten.
1571
+ - The key can be a dot separated path to set a field in a nested
1572
+ message.
1573
+ - Key must be of type string.
1574
+ - Value may be any valid type.
1575
+ - removeFields:
1576
+ map.removeFields([key1, key2, ...]) > message
1577
+ - Removes the fields of the map with the given keys.
1578
+ - The keys can be a dot separated path to remove a field in a
1579
+ nested message.
1580
+ - If a key is not found it will be ignored.
1581
+ - Keys must be of type string.
1582
+ - toMap:
1583
+ [map1, map2, ...].toMap() > map
1584
+ - Converts a CEL list of CEL maps to a single CEL map
1585
+ - toDestinationPayloadFormat():
1586
+ message.data.toDestinationPayloadFormat() > string or bytes
1587
+ - Converts the message data to the destination payload format
1588
+ specified in Pipeline.Destination.output_payload_format
1589
+ - This function is meant to be applied to the message.data field.
1590
+ - If the destination payload format is not set, the function will
1591
+ return the message data unchanged.
1592
+ - toCloudEventJsonWithPayloadFormat:
1593
+ message.toCloudEventJsonWithPayloadFormat() > map
1594
+ - Converts a message to the corresponding structure of JSON
1595
+ format for CloudEvents
1596
+ - This function applies toDestinationPayloadFormat() to the
1597
+ message data. It also sets the corresponding datacontenttype of
1598
+ the CloudEvent, as indicated by
1599
+ Pipeline.Destination.output_payload_format. If no
1600
+ output_payload_format is set it will use the existing
1601
+ datacontenttype on the CloudEvent if present, else leave
1602
+ datacontenttype absent.
1603
+ - This function expects that the content of the message will
1604
+ adhere to the standard CloudEvent format. If it doesn't then this
1605
+ function will fail.
1606
+ - The result is a CEL map that corresponds to the JSON
1607
+ representation of the CloudEvent. To convert that data to a JSON
1608
+ string it can be chained with the toJsonString function.
1609
+ """
1610
+ elif False:
1611
+ PipelineMediationTransformationArgsDict: TypeAlias = Mapping[str, Any]
1612
+
1613
+ @pulumi.input_type
1614
+ class PipelineMediationTransformationArgs:
1615
+ def __init__(__self__, *,
1616
+ transformation_template: Optional[pulumi.Input[str]] = None):
1617
+ """
1618
+ :param pulumi.Input[str] transformation_template: The CEL expression template to apply to transform messages.
1619
+ The following CEL extension functions are provided for
1620
+ use in this CEL expression:
1621
+ - merge:
1622
+ map1.merge(map2) > map3
1623
+ - Merges the passed CEL map with the existing CEL map the
1624
+ function is applied to.
1625
+ - If the same key exists in both maps, if the key's value is type
1626
+ map both maps are merged else the value from the passed map is
1627
+ used.
1628
+ - denormalize:
1629
+ map.denormalize() > map
1630
+ - Denormalizes a CEL map such that every value of type map or key
1631
+ in the map is expanded to return a single level map.
1632
+ - The resulting keys are "." separated indices of the map keys.
1633
+ - For example:
1634
+ {
1635
+ "a": 1,
1636
+ "b": {
1637
+ "c": 2,
1638
+ "d": 3
1639
+ }
1640
+ "e": [4, 5]
1641
+ }
1642
+ .denormalize()
1643
+ > {
1644
+ "a": 1,
1645
+ "b.c": 2,
1646
+ "b.d": 3,
1647
+ "e.0": 4,
1648
+ "e.1": 5
1649
+ }
1650
+ - setField:
1651
+ map.setField(key, value) > message
1652
+ - Sets the field of the message with the given key to the
1653
+ given value.
1654
+ - If the field is not present it will be added.
1655
+ - If the field is present it will be overwritten.
1656
+ - The key can be a dot separated path to set a field in a nested
1657
+ message.
1658
+ - Key must be of type string.
1659
+ - Value may be any valid type.
1660
+ - removeFields:
1661
+ map.removeFields([key1, key2, ...]) > message
1662
+ - Removes the fields of the map with the given keys.
1663
+ - The keys can be a dot separated path to remove a field in a
1664
+ nested message.
1665
+ - If a key is not found it will be ignored.
1666
+ - Keys must be of type string.
1667
+ - toMap:
1668
+ [map1, map2, ...].toMap() > map
1669
+ - Converts a CEL list of CEL maps to a single CEL map
1670
+ - toDestinationPayloadFormat():
1671
+ message.data.toDestinationPayloadFormat() > string or bytes
1672
+ - Converts the message data to the destination payload format
1673
+ specified in Pipeline.Destination.output_payload_format
1674
+ - This function is meant to be applied to the message.data field.
1675
+ - If the destination payload format is not set, the function will
1676
+ return the message data unchanged.
1677
+ - toCloudEventJsonWithPayloadFormat:
1678
+ message.toCloudEventJsonWithPayloadFormat() > map
1679
+ - Converts a message to the corresponding structure of JSON
1680
+ format for CloudEvents
1681
+ - This function applies toDestinationPayloadFormat() to the
1682
+ message data. It also sets the corresponding datacontenttype of
1683
+ the CloudEvent, as indicated by
1684
+ Pipeline.Destination.output_payload_format. If no
1685
+ output_payload_format is set it will use the existing
1686
+ datacontenttype on the CloudEvent if present, else leave
1687
+ datacontenttype absent.
1688
+ - This function expects that the content of the message will
1689
+ adhere to the standard CloudEvent format. If it doesn't then this
1690
+ function will fail.
1691
+ - The result is a CEL map that corresponds to the JSON
1692
+ representation of the CloudEvent. To convert that data to a JSON
1693
+ string it can be chained with the toJsonString function.
1694
+ """
1695
+ if transformation_template is not None:
1696
+ pulumi.set(__self__, "transformation_template", transformation_template)
1697
+
1698
+ @property
1699
+ @pulumi.getter(name="transformationTemplate")
1700
+ def transformation_template(self) -> Optional[pulumi.Input[str]]:
1701
+ """
1702
+ The CEL expression template to apply to transform messages.
1703
+ The following CEL extension functions are provided for
1704
+ use in this CEL expression:
1705
+ - merge:
1706
+ map1.merge(map2) > map3
1707
+ - Merges the passed CEL map with the existing CEL map the
1708
+ function is applied to.
1709
+ - If the same key exists in both maps, if the key's value is type
1710
+ map both maps are merged else the value from the passed map is
1711
+ used.
1712
+ - denormalize:
1713
+ map.denormalize() > map
1714
+ - Denormalizes a CEL map such that every value of type map or key
1715
+ in the map is expanded to return a single level map.
1716
+ - The resulting keys are "." separated indices of the map keys.
1717
+ - For example:
1718
+ {
1719
+ "a": 1,
1720
+ "b": {
1721
+ "c": 2,
1722
+ "d": 3
1723
+ }
1724
+ "e": [4, 5]
1725
+ }
1726
+ .denormalize()
1727
+ > {
1728
+ "a": 1,
1729
+ "b.c": 2,
1730
+ "b.d": 3,
1731
+ "e.0": 4,
1732
+ "e.1": 5
1733
+ }
1734
+ - setField:
1735
+ map.setField(key, value) > message
1736
+ - Sets the field of the message with the given key to the
1737
+ given value.
1738
+ - If the field is not present it will be added.
1739
+ - If the field is present it will be overwritten.
1740
+ - The key can be a dot separated path to set a field in a nested
1741
+ message.
1742
+ - Key must be of type string.
1743
+ - Value may be any valid type.
1744
+ - removeFields:
1745
+ map.removeFields([key1, key2, ...]) > message
1746
+ - Removes the fields of the map with the given keys.
1747
+ - The keys can be a dot separated path to remove a field in a
1748
+ nested message.
1749
+ - If a key is not found it will be ignored.
1750
+ - Keys must be of type string.
1751
+ - toMap:
1752
+ [map1, map2, ...].toMap() > map
1753
+ - Converts a CEL list of CEL maps to a single CEL map
1754
+ - toDestinationPayloadFormat():
1755
+ message.data.toDestinationPayloadFormat() > string or bytes
1756
+ - Converts the message data to the destination payload format
1757
+ specified in Pipeline.Destination.output_payload_format
1758
+ - This function is meant to be applied to the message.data field.
1759
+ - If the destination payload format is not set, the function will
1760
+ return the message data unchanged.
1761
+ - toCloudEventJsonWithPayloadFormat:
1762
+ message.toCloudEventJsonWithPayloadFormat() > map
1763
+ - Converts a message to the corresponding structure of JSON
1764
+ format for CloudEvents
1765
+ - This function applies toDestinationPayloadFormat() to the
1766
+ message data. It also sets the corresponding datacontenttype of
1767
+ the CloudEvent, as indicated by
1768
+ Pipeline.Destination.output_payload_format. If no
1769
+ output_payload_format is set it will use the existing
1770
+ datacontenttype on the CloudEvent if present, else leave
1771
+ datacontenttype absent.
1772
+ - This function expects that the content of the message will
1773
+ adhere to the standard CloudEvent format. If it doesn't then this
1774
+ function will fail.
1775
+ - The result is a CEL map that corresponds to the JSON
1776
+ representation of the CloudEvent. To convert that data to a JSON
1777
+ string it can be chained with the toJsonString function.
1778
+ """
1779
+ return pulumi.get(self, "transformation_template")
1780
+
1781
+ @transformation_template.setter
1782
+ def transformation_template(self, value: Optional[pulumi.Input[str]]):
1783
+ pulumi.set(self, "transformation_template", value)
1784
+
1785
+
1786
+ if not MYPY:
1787
+ class PipelineRetryPolicyArgsDict(TypedDict):
1788
+ max_attempts: NotRequired[pulumi.Input[int]]
1789
+ """
1790
+ The maximum number of delivery attempts for any message. The value must
1791
+ be between 1 and 100.
1792
+ The default value for this field is 5.
1793
+ """
1794
+ max_retry_delay: NotRequired[pulumi.Input[str]]
1795
+ """
1796
+ The maximum amount of seconds to wait between retry attempts. The value
1797
+ must be between 1 and 600.
1798
+ The default value for this field is 60.
1799
+ """
1800
+ min_retry_delay: NotRequired[pulumi.Input[str]]
1801
+ """
1802
+ The minimum amount of seconds to wait between retry attempts. The value
1803
+ must be between 1 and 600.
1804
+ The default value for this field is 5.
1805
+ """
1806
+ elif False:
1807
+ PipelineRetryPolicyArgsDict: TypeAlias = Mapping[str, Any]
1808
+
1809
+ @pulumi.input_type
1810
+ class PipelineRetryPolicyArgs:
1811
+ def __init__(__self__, *,
1812
+ max_attempts: Optional[pulumi.Input[int]] = None,
1813
+ max_retry_delay: Optional[pulumi.Input[str]] = None,
1814
+ min_retry_delay: Optional[pulumi.Input[str]] = None):
1815
+ """
1816
+ :param pulumi.Input[int] max_attempts: The maximum number of delivery attempts for any message. The value must
1817
+ be between 1 and 100.
1818
+ The default value for this field is 5.
1819
+ :param pulumi.Input[str] max_retry_delay: The maximum amount of seconds to wait between retry attempts. The value
1820
+ must be between 1 and 600.
1821
+ The default value for this field is 60.
1822
+ :param pulumi.Input[str] min_retry_delay: The minimum amount of seconds to wait between retry attempts. The value
1823
+ must be between 1 and 600.
1824
+ The default value for this field is 5.
1825
+ """
1826
+ if max_attempts is not None:
1827
+ pulumi.set(__self__, "max_attempts", max_attempts)
1828
+ if max_retry_delay is not None:
1829
+ pulumi.set(__self__, "max_retry_delay", max_retry_delay)
1830
+ if min_retry_delay is not None:
1831
+ pulumi.set(__self__, "min_retry_delay", min_retry_delay)
1832
+
1833
+ @property
1834
+ @pulumi.getter(name="maxAttempts")
1835
+ def max_attempts(self) -> Optional[pulumi.Input[int]]:
1836
+ """
1837
+ The maximum number of delivery attempts for any message. The value must
1838
+ be between 1 and 100.
1839
+ The default value for this field is 5.
1840
+ """
1841
+ return pulumi.get(self, "max_attempts")
1842
+
1843
+ @max_attempts.setter
1844
+ def max_attempts(self, value: Optional[pulumi.Input[int]]):
1845
+ pulumi.set(self, "max_attempts", value)
1846
+
1847
+ @property
1848
+ @pulumi.getter(name="maxRetryDelay")
1849
+ def max_retry_delay(self) -> Optional[pulumi.Input[str]]:
1850
+ """
1851
+ The maximum amount of seconds to wait between retry attempts. The value
1852
+ must be between 1 and 600.
1853
+ The default value for this field is 60.
1854
+ """
1855
+ return pulumi.get(self, "max_retry_delay")
1856
+
1857
+ @max_retry_delay.setter
1858
+ def max_retry_delay(self, value: Optional[pulumi.Input[str]]):
1859
+ pulumi.set(self, "max_retry_delay", value)
1860
+
1861
+ @property
1862
+ @pulumi.getter(name="minRetryDelay")
1863
+ def min_retry_delay(self) -> Optional[pulumi.Input[str]]:
1864
+ """
1865
+ The minimum amount of seconds to wait between retry attempts. The value
1866
+ must be between 1 and 600.
1867
+ The default value for this field is 5.
1868
+ """
1869
+ return pulumi.get(self, "min_retry_delay")
1870
+
1871
+ @min_retry_delay.setter
1872
+ def min_retry_delay(self, value: Optional[pulumi.Input[str]]):
1873
+ pulumi.set(self, "min_retry_delay", value)
1874
+
1875
+
118
1876
  if not MYPY:
119
1877
  class TriggerDestinationArgsDict(TypedDict):
120
1878
  cloud_function: NotRequired[pulumi.Input[str]]