pulumi-gcp 7.8.0a1706829616__py3-none-any.whl → 7.8.0a1706905467__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. pulumi_gcp/__init__.py +30 -0
  2. pulumi_gcp/artifactregistry/repository.py +26 -28
  3. pulumi_gcp/cloudrun/_inputs.py +87 -4
  4. pulumi_gcp/cloudrun/outputs.py +152 -4
  5. pulumi_gcp/composer/_inputs.py +63 -0
  6. pulumi_gcp/composer/outputs.py +136 -0
  7. pulumi_gcp/compute/_inputs.py +8 -18
  8. pulumi_gcp/compute/backend_service.py +28 -0
  9. pulumi_gcp/compute/outputs.py +10 -20
  10. pulumi_gcp/compute/region_backend_service.py +30 -0
  11. pulumi_gcp/config/__init__.pyi +4 -0
  12. pulumi_gcp/config/vars.py +8 -0
  13. pulumi_gcp/discoveryengine/__init__.py +8 -0
  14. pulumi_gcp/discoveryengine/data_store.py +734 -0
  15. pulumi_gcp/eventarc/_inputs.py +2 -2
  16. pulumi_gcp/eventarc/outputs.py +2 -2
  17. pulumi_gcp/firebase/_inputs.py +4 -2
  18. pulumi_gcp/firebase/extensions_instance.py +6 -8
  19. pulumi_gcp/firebase/outputs.py +4 -2
  20. pulumi_gcp/firestore/backup_schedule.py +36 -12
  21. pulumi_gcp/firestore/database.py +0 -8
  22. pulumi_gcp/firestore/document.py +0 -68
  23. pulumi_gcp/firestore/field.py +22 -102
  24. pulumi_gcp/firestore/index.py +4 -42
  25. pulumi_gcp/gkehub/feature.py +2 -2
  26. pulumi_gcp/provider.py +40 -0
  27. pulumi_gcp/pubsub/_inputs.py +26 -4
  28. pulumi_gcp/pubsub/outputs.py +45 -8
  29. pulumi_gcp/pubsub/subscription.py +82 -0
  30. pulumi_gcp/securityposture/__init__.py +11 -0
  31. pulumi_gcp/securityposture/_inputs.py +1364 -0
  32. pulumi_gcp/securityposture/outputs.py +1372 -0
  33. pulumi_gcp/securityposture/posture.py +828 -0
  34. pulumi_gcp/securityposture/posture_deployment.py +872 -0
  35. pulumi_gcp/vertex/_inputs.py +156 -0
  36. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +259 -3
  37. pulumi_gcp/vertex/outputs.py +170 -0
  38. pulumi_gcp/workflows/workflow.py +75 -7
  39. pulumi_gcp/workstations/_inputs.py +38 -0
  40. pulumi_gcp/workstations/outputs.py +30 -0
  41. pulumi_gcp/workstations/workstation_config.py +54 -0
  42. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/METADATA +1 -1
  43. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/RECORD +45 -38
  44. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/WHEEL +0 -0
  45. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/top_level.txt +0 -0
pulumi_gcp/provider.py CHANGED
@@ -83,6 +83,7 @@ class ProviderArgs:
83
83
  dialogflow_custom_endpoint: Optional[pulumi.Input[str]] = None,
84
84
  dialogflow_cx_custom_endpoint: Optional[pulumi.Input[str]] = None,
85
85
  disable_google_partner_name: Optional[pulumi.Input[bool]] = None,
86
+ discovery_engine_custom_endpoint: Optional[pulumi.Input[str]] = None,
86
87
  dns_custom_endpoint: Optional[pulumi.Input[str]] = None,
87
88
  document_ai_custom_endpoint: Optional[pulumi.Input[str]] = None,
88
89
  document_ai_warehouse_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -150,6 +151,7 @@ class ProviderArgs:
150
151
  secure_source_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
151
152
  security_center_custom_endpoint: Optional[pulumi.Input[str]] = None,
152
153
  security_scanner_custom_endpoint: Optional[pulumi.Input[str]] = None,
154
+ securityposture_custom_endpoint: Optional[pulumi.Input[str]] = None,
153
155
  service_directory_custom_endpoint: Optional[pulumi.Input[str]] = None,
154
156
  service_management_custom_endpoint: Optional[pulumi.Input[str]] = None,
155
157
  service_networking_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -312,6 +314,8 @@ class ProviderArgs:
312
314
  pulumi.set(__self__, "dialogflow_cx_custom_endpoint", dialogflow_cx_custom_endpoint)
313
315
  if disable_google_partner_name is not None:
314
316
  pulumi.set(__self__, "disable_google_partner_name", disable_google_partner_name)
317
+ if discovery_engine_custom_endpoint is not None:
318
+ pulumi.set(__self__, "discovery_engine_custom_endpoint", discovery_engine_custom_endpoint)
315
319
  if dns_custom_endpoint is not None:
316
320
  pulumi.set(__self__, "dns_custom_endpoint", dns_custom_endpoint)
317
321
  if document_ai_custom_endpoint is not None:
@@ -450,6 +454,8 @@ class ProviderArgs:
450
454
  pulumi.set(__self__, "security_center_custom_endpoint", security_center_custom_endpoint)
451
455
  if security_scanner_custom_endpoint is not None:
452
456
  pulumi.set(__self__, "security_scanner_custom_endpoint", security_scanner_custom_endpoint)
457
+ if securityposture_custom_endpoint is not None:
458
+ pulumi.set(__self__, "securityposture_custom_endpoint", securityposture_custom_endpoint)
453
459
  if service_directory_custom_endpoint is not None:
454
460
  pulumi.set(__self__, "service_directory_custom_endpoint", service_directory_custom_endpoint)
455
461
  if service_management_custom_endpoint is not None:
@@ -1111,6 +1117,15 @@ class ProviderArgs:
1111
1117
  def disable_google_partner_name(self, value: Optional[pulumi.Input[bool]]):
1112
1118
  pulumi.set(self, "disable_google_partner_name", value)
1113
1119
 
1120
+ @property
1121
+ @pulumi.getter(name="discoveryEngineCustomEndpoint")
1122
+ def discovery_engine_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
1123
+ return pulumi.get(self, "discovery_engine_custom_endpoint")
1124
+
1125
+ @discovery_engine_custom_endpoint.setter
1126
+ def discovery_engine_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
1127
+ pulumi.set(self, "discovery_engine_custom_endpoint", value)
1128
+
1114
1129
  @property
1115
1130
  @pulumi.getter(name="dnsCustomEndpoint")
1116
1131
  def dns_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
@@ -1714,6 +1729,15 @@ class ProviderArgs:
1714
1729
  def security_scanner_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
1715
1730
  pulumi.set(self, "security_scanner_custom_endpoint", value)
1716
1731
 
1732
+ @property
1733
+ @pulumi.getter(name="securitypostureCustomEndpoint")
1734
+ def securityposture_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
1735
+ return pulumi.get(self, "securityposture_custom_endpoint")
1736
+
1737
+ @securityposture_custom_endpoint.setter
1738
+ def securityposture_custom_endpoint(self, value: Optional[pulumi.Input[str]]):
1739
+ pulumi.set(self, "securityposture_custom_endpoint", value)
1740
+
1717
1741
  @property
1718
1742
  @pulumi.getter(name="serviceDirectoryCustomEndpoint")
1719
1743
  def service_directory_custom_endpoint(self) -> Optional[pulumi.Input[str]]:
@@ -1995,6 +2019,7 @@ class Provider(pulumi.ProviderResource):
1995
2019
  dialogflow_custom_endpoint: Optional[pulumi.Input[str]] = None,
1996
2020
  dialogflow_cx_custom_endpoint: Optional[pulumi.Input[str]] = None,
1997
2021
  disable_google_partner_name: Optional[pulumi.Input[bool]] = None,
2022
+ discovery_engine_custom_endpoint: Optional[pulumi.Input[str]] = None,
1998
2023
  dns_custom_endpoint: Optional[pulumi.Input[str]] = None,
1999
2024
  document_ai_custom_endpoint: Optional[pulumi.Input[str]] = None,
2000
2025
  document_ai_warehouse_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2062,6 +2087,7 @@ class Provider(pulumi.ProviderResource):
2062
2087
  secure_source_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2063
2088
  security_center_custom_endpoint: Optional[pulumi.Input[str]] = None,
2064
2089
  security_scanner_custom_endpoint: Optional[pulumi.Input[str]] = None,
2090
+ securityposture_custom_endpoint: Optional[pulumi.Input[str]] = None,
2065
2091
  service_directory_custom_endpoint: Optional[pulumi.Input[str]] = None,
2066
2092
  service_management_custom_endpoint: Optional[pulumi.Input[str]] = None,
2067
2093
  service_networking_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2190,6 +2216,7 @@ class Provider(pulumi.ProviderResource):
2190
2216
  dialogflow_custom_endpoint: Optional[pulumi.Input[str]] = None,
2191
2217
  dialogflow_cx_custom_endpoint: Optional[pulumi.Input[str]] = None,
2192
2218
  disable_google_partner_name: Optional[pulumi.Input[bool]] = None,
2219
+ discovery_engine_custom_endpoint: Optional[pulumi.Input[str]] = None,
2193
2220
  dns_custom_endpoint: Optional[pulumi.Input[str]] = None,
2194
2221
  document_ai_custom_endpoint: Optional[pulumi.Input[str]] = None,
2195
2222
  document_ai_warehouse_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2257,6 +2284,7 @@ class Provider(pulumi.ProviderResource):
2257
2284
  secure_source_manager_custom_endpoint: Optional[pulumi.Input[str]] = None,
2258
2285
  security_center_custom_endpoint: Optional[pulumi.Input[str]] = None,
2259
2286
  security_scanner_custom_endpoint: Optional[pulumi.Input[str]] = None,
2287
+ securityposture_custom_endpoint: Optional[pulumi.Input[str]] = None,
2260
2288
  service_directory_custom_endpoint: Optional[pulumi.Input[str]] = None,
2261
2289
  service_management_custom_endpoint: Optional[pulumi.Input[str]] = None,
2262
2290
  service_networking_custom_endpoint: Optional[pulumi.Input[str]] = None,
@@ -2357,6 +2385,7 @@ class Provider(pulumi.ProviderResource):
2357
2385
  __props__.__dict__["dialogflow_custom_endpoint"] = dialogflow_custom_endpoint
2358
2386
  __props__.__dict__["dialogflow_cx_custom_endpoint"] = dialogflow_cx_custom_endpoint
2359
2387
  __props__.__dict__["disable_google_partner_name"] = pulumi.Output.from_input(disable_google_partner_name).apply(pulumi.runtime.to_json) if disable_google_partner_name is not None else None
2388
+ __props__.__dict__["discovery_engine_custom_endpoint"] = discovery_engine_custom_endpoint
2360
2389
  __props__.__dict__["dns_custom_endpoint"] = dns_custom_endpoint
2361
2390
  __props__.__dict__["document_ai_custom_endpoint"] = document_ai_custom_endpoint
2362
2391
  __props__.__dict__["document_ai_warehouse_custom_endpoint"] = document_ai_warehouse_custom_endpoint
@@ -2428,6 +2457,7 @@ class Provider(pulumi.ProviderResource):
2428
2457
  __props__.__dict__["secure_source_manager_custom_endpoint"] = secure_source_manager_custom_endpoint
2429
2458
  __props__.__dict__["security_center_custom_endpoint"] = security_center_custom_endpoint
2430
2459
  __props__.__dict__["security_scanner_custom_endpoint"] = security_scanner_custom_endpoint
2460
+ __props__.__dict__["securityposture_custom_endpoint"] = securityposture_custom_endpoint
2431
2461
  __props__.__dict__["service_directory_custom_endpoint"] = service_directory_custom_endpoint
2432
2462
  __props__.__dict__["service_management_custom_endpoint"] = service_management_custom_endpoint
2433
2463
  __props__.__dict__["service_networking_custom_endpoint"] = service_networking_custom_endpoint
@@ -2784,6 +2814,11 @@ class Provider(pulumi.ProviderResource):
2784
2814
  def dialogflow_cx_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
2785
2815
  return pulumi.get(self, "dialogflow_cx_custom_endpoint")
2786
2816
 
2817
+ @property
2818
+ @pulumi.getter(name="discoveryEngineCustomEndpoint")
2819
+ def discovery_engine_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
2820
+ return pulumi.get(self, "discovery_engine_custom_endpoint")
2821
+
2787
2822
  @property
2788
2823
  @pulumi.getter(name="dnsCustomEndpoint")
2789
2824
  def dns_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
@@ -3109,6 +3144,11 @@ class Provider(pulumi.ProviderResource):
3109
3144
  def security_scanner_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
3110
3145
  return pulumi.get(self, "security_scanner_custom_endpoint")
3111
3146
 
3147
+ @property
3148
+ @pulumi.getter(name="securitypostureCustomEndpoint")
3149
+ def securityposture_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
3150
+ return pulumi.get(self, "securityposture_custom_endpoint")
3151
+
3112
3152
  @property
3113
3153
  @pulumi.getter(name="serviceDirectoryCustomEndpoint")
3114
3154
  def service_directory_custom_endpoint(self) -> pulumi.Output[Optional[str]]:
@@ -289,19 +289,26 @@ class SubscriptionBigqueryConfigArgs:
289
289
  def __init__(__self__, *,
290
290
  table: pulumi.Input[str],
291
291
  drop_unknown_fields: Optional[pulumi.Input[bool]] = None,
292
+ use_table_schema: Optional[pulumi.Input[bool]] = None,
292
293
  use_topic_schema: Optional[pulumi.Input[bool]] = None,
293
294
  write_metadata: Optional[pulumi.Input[bool]] = None):
294
295
  """
295
296
  :param pulumi.Input[str] table: The name of the table to which to write data, of the form {projectId}:{datasetId}.{tableId}
296
- :param pulumi.Input[bool] drop_unknown_fields: When true and useTopicSchema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery.
297
- Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.
297
+ :param pulumi.Input[bool] drop_unknown_fields: When true and use_topic_schema or use_table_schema is true, any fields that are a part of the topic schema or message schema that
298
+ are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync
299
+ and any messages with extra fields are not written and remain in the subscription's backlog.
300
+ :param pulumi.Input[bool] use_table_schema: When true, use the BigQuery table's schema as the columns to write to in BigQuery. Messages
301
+ must be published in JSON format. Only one of use_topic_schema and use_table_schema can be set.
298
302
  :param pulumi.Input[bool] use_topic_schema: When true, use the topic's schema as the columns to write to in BigQuery, if it exists.
303
+ Only one of use_topic_schema and use_table_schema can be set.
299
304
  :param pulumi.Input[bool] write_metadata: When true, write the subscription name, messageId, publishTime, attributes, and orderingKey to additional columns in the table.
300
305
  The subscription name, messageId, and publishTime fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column.
301
306
  """
302
307
  pulumi.set(__self__, "table", table)
303
308
  if drop_unknown_fields is not None:
304
309
  pulumi.set(__self__, "drop_unknown_fields", drop_unknown_fields)
310
+ if use_table_schema is not None:
311
+ pulumi.set(__self__, "use_table_schema", use_table_schema)
305
312
  if use_topic_schema is not None:
306
313
  pulumi.set(__self__, "use_topic_schema", use_topic_schema)
307
314
  if write_metadata is not None:
@@ -323,8 +330,9 @@ class SubscriptionBigqueryConfigArgs:
323
330
  @pulumi.getter(name="dropUnknownFields")
324
331
  def drop_unknown_fields(self) -> Optional[pulumi.Input[bool]]:
325
332
  """
326
- When true and useTopicSchema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery.
327
- Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.
333
+ When true and use_topic_schema or use_table_schema is true, any fields that are a part of the topic schema or message schema that
334
+ are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync
335
+ and any messages with extra fields are not written and remain in the subscription's backlog.
328
336
  """
329
337
  return pulumi.get(self, "drop_unknown_fields")
330
338
 
@@ -332,11 +340,25 @@ class SubscriptionBigqueryConfigArgs:
332
340
  def drop_unknown_fields(self, value: Optional[pulumi.Input[bool]]):
333
341
  pulumi.set(self, "drop_unknown_fields", value)
334
342
 
343
+ @property
344
+ @pulumi.getter(name="useTableSchema")
345
+ def use_table_schema(self) -> Optional[pulumi.Input[bool]]:
346
+ """
347
+ When true, use the BigQuery table's schema as the columns to write to in BigQuery. Messages
348
+ must be published in JSON format. Only one of use_topic_schema and use_table_schema can be set.
349
+ """
350
+ return pulumi.get(self, "use_table_schema")
351
+
352
+ @use_table_schema.setter
353
+ def use_table_schema(self, value: Optional[pulumi.Input[bool]]):
354
+ pulumi.set(self, "use_table_schema", value)
355
+
335
356
  @property
336
357
  @pulumi.getter(name="useTopicSchema")
337
358
  def use_topic_schema(self) -> Optional[pulumi.Input[bool]]:
338
359
  """
339
360
  When true, use the topic's schema as the columns to write to in BigQuery, if it exists.
361
+ Only one of use_topic_schema and use_table_schema can be set.
340
362
  """
341
363
  return pulumi.get(self, "use_topic_schema")
342
364
 
@@ -317,6 +317,8 @@ class SubscriptionBigqueryConfig(dict):
317
317
  suggest = None
318
318
  if key == "dropUnknownFields":
319
319
  suggest = "drop_unknown_fields"
320
+ elif key == "useTableSchema":
321
+ suggest = "use_table_schema"
320
322
  elif key == "useTopicSchema":
321
323
  suggest = "use_topic_schema"
322
324
  elif key == "writeMetadata":
@@ -336,19 +338,26 @@ class SubscriptionBigqueryConfig(dict):
336
338
  def __init__(__self__, *,
337
339
  table: str,
338
340
  drop_unknown_fields: Optional[bool] = None,
341
+ use_table_schema: Optional[bool] = None,
339
342
  use_topic_schema: Optional[bool] = None,
340
343
  write_metadata: Optional[bool] = None):
341
344
  """
342
345
  :param str table: The name of the table to which to write data, of the form {projectId}:{datasetId}.{tableId}
343
- :param bool drop_unknown_fields: When true and useTopicSchema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery.
344
- Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.
346
+ :param bool drop_unknown_fields: When true and use_topic_schema or use_table_schema is true, any fields that are a part of the topic schema or message schema that
347
+ are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync
348
+ and any messages with extra fields are not written and remain in the subscription's backlog.
349
+ :param bool use_table_schema: When true, use the BigQuery table's schema as the columns to write to in BigQuery. Messages
350
+ must be published in JSON format. Only one of use_topic_schema and use_table_schema can be set.
345
351
  :param bool use_topic_schema: When true, use the topic's schema as the columns to write to in BigQuery, if it exists.
352
+ Only one of use_topic_schema and use_table_schema can be set.
346
353
  :param bool write_metadata: When true, write the subscription name, messageId, publishTime, attributes, and orderingKey to additional columns in the table.
347
354
  The subscription name, messageId, and publishTime fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column.
348
355
  """
349
356
  pulumi.set(__self__, "table", table)
350
357
  if drop_unknown_fields is not None:
351
358
  pulumi.set(__self__, "drop_unknown_fields", drop_unknown_fields)
359
+ if use_table_schema is not None:
360
+ pulumi.set(__self__, "use_table_schema", use_table_schema)
352
361
  if use_topic_schema is not None:
353
362
  pulumi.set(__self__, "use_topic_schema", use_topic_schema)
354
363
  if write_metadata is not None:
@@ -366,16 +375,27 @@ class SubscriptionBigqueryConfig(dict):
366
375
  @pulumi.getter(name="dropUnknownFields")
367
376
  def drop_unknown_fields(self) -> Optional[bool]:
368
377
  """
369
- When true and useTopicSchema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery.
370
- Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.
378
+ When true and use_topic_schema or use_table_schema is true, any fields that are a part of the topic schema or message schema that
379
+ are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync
380
+ and any messages with extra fields are not written and remain in the subscription's backlog.
371
381
  """
372
382
  return pulumi.get(self, "drop_unknown_fields")
373
383
 
384
+ @property
385
+ @pulumi.getter(name="useTableSchema")
386
+ def use_table_schema(self) -> Optional[bool]:
387
+ """
388
+ When true, use the BigQuery table's schema as the columns to write to in BigQuery. Messages
389
+ must be published in JSON format. Only one of use_topic_schema and use_table_schema can be set.
390
+ """
391
+ return pulumi.get(self, "use_table_schema")
392
+
374
393
  @property
375
394
  @pulumi.getter(name="useTopicSchema")
376
395
  def use_topic_schema(self) -> Optional[bool]:
377
396
  """
378
397
  When true, use the topic's schema as the columns to write to in BigQuery, if it exists.
398
+ Only one of use_topic_schema and use_table_schema can be set.
379
399
  """
380
400
  return pulumi.get(self, "use_topic_schema")
381
401
 
@@ -1131,18 +1151,24 @@ class GetSubscriptionBigqueryConfigResult(dict):
1131
1151
  def __init__(__self__, *,
1132
1152
  drop_unknown_fields: bool,
1133
1153
  table: str,
1154
+ use_table_schema: bool,
1134
1155
  use_topic_schema: bool,
1135
1156
  write_metadata: bool):
1136
1157
  """
1137
- :param bool drop_unknown_fields: When true and useTopicSchema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery.
1138
- Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.
1158
+ :param bool drop_unknown_fields: When true and use_topic_schema or use_table_schema is true, any fields that are a part of the topic schema or message schema that
1159
+ are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync
1160
+ and any messages with extra fields are not written and remain in the subscription's backlog.
1139
1161
  :param str table: The name of the table to which to write data, of the form {projectId}:{datasetId}.{tableId}
1162
+ :param bool use_table_schema: When true, use the BigQuery table's schema as the columns to write to in BigQuery. Messages
1163
+ must be published in JSON format. Only one of use_topic_schema and use_table_schema can be set.
1140
1164
  :param bool use_topic_schema: When true, use the topic's schema as the columns to write to in BigQuery, if it exists.
1165
+ Only one of use_topic_schema and use_table_schema can be set.
1141
1166
  :param bool write_metadata: When true, write the subscription name, messageId, publishTime, attributes, and orderingKey to additional columns in the table.
1142
1167
  The subscription name, messageId, and publishTime fields are put in their own columns while all other message properties (other than data) are written to a JSON object in the attributes column.
1143
1168
  """
1144
1169
  pulumi.set(__self__, "drop_unknown_fields", drop_unknown_fields)
1145
1170
  pulumi.set(__self__, "table", table)
1171
+ pulumi.set(__self__, "use_table_schema", use_table_schema)
1146
1172
  pulumi.set(__self__, "use_topic_schema", use_topic_schema)
1147
1173
  pulumi.set(__self__, "write_metadata", write_metadata)
1148
1174
 
@@ -1150,8 +1176,9 @@ class GetSubscriptionBigqueryConfigResult(dict):
1150
1176
  @pulumi.getter(name="dropUnknownFields")
1151
1177
  def drop_unknown_fields(self) -> bool:
1152
1178
  """
1153
- When true and useTopicSchema is true, any fields that are a part of the topic schema that are not part of the BigQuery table schema are dropped when writing to BigQuery.
1154
- Otherwise, the schemas must be kept in sync and any messages with extra fields are not written and remain in the subscription's backlog.
1179
+ When true and use_topic_schema or use_table_schema is true, any fields that are a part of the topic schema or message schema that
1180
+ are not part of the BigQuery table schema are dropped when writing to BigQuery. Otherwise, the schemas must be kept in sync
1181
+ and any messages with extra fields are not written and remain in the subscription's backlog.
1155
1182
  """
1156
1183
  return pulumi.get(self, "drop_unknown_fields")
1157
1184
 
@@ -1163,11 +1190,21 @@ class GetSubscriptionBigqueryConfigResult(dict):
1163
1190
  """
1164
1191
  return pulumi.get(self, "table")
1165
1192
 
1193
+ @property
1194
+ @pulumi.getter(name="useTableSchema")
1195
+ def use_table_schema(self) -> bool:
1196
+ """
1197
+ When true, use the BigQuery table's schema as the columns to write to in BigQuery. Messages
1198
+ must be published in JSON format. Only one of use_topic_schema and use_table_schema can be set.
1199
+ """
1200
+ return pulumi.get(self, "use_table_schema")
1201
+
1166
1202
  @property
1167
1203
  @pulumi.getter(name="useTopicSchema")
1168
1204
  def use_topic_schema(self) -> bool:
1169
1205
  """
1170
1206
  When true, use the topic's schema as the columns to write to in BigQuery, if it exists.
1207
+ Only one of use_topic_schema and use_table_schema can be set.
1171
1208
  """
1172
1209
  return pulumi.get(self, "use_topic_schema")
1173
1210
 
@@ -984,6 +984,47 @@ class Subscription(pulumi.CustomResource):
984
984
  editor,
985
985
  ]))
986
986
  ```
987
+ ### Pubsub Subscription Push Bq Table Schema
988
+
989
+ ```python
990
+ import pulumi
991
+ import pulumi_gcp as gcp
992
+
993
+ example_topic = gcp.pubsub.Topic("exampleTopic")
994
+ project = gcp.organizations.get_project()
995
+ viewer = gcp.projects.IAMMember("viewer",
996
+ project=project.project_id,
997
+ role="roles/bigquery.metadataViewer",
998
+ member=f"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com")
999
+ editor = gcp.projects.IAMMember("editor",
1000
+ project=project.project_id,
1001
+ role="roles/bigquery.dataEditor",
1002
+ member=f"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com")
1003
+ test_dataset = gcp.bigquery.Dataset("testDataset", dataset_id="example_dataset")
1004
+ test_table = gcp.bigquery.Table("testTable",
1005
+ deletion_protection=False,
1006
+ table_id="example_table",
1007
+ dataset_id=test_dataset.dataset_id,
1008
+ schema=\"\"\"[
1009
+ {
1010
+ "name": "data",
1011
+ "type": "STRING",
1012
+ "mode": "NULLABLE",
1013
+ "description": "The data"
1014
+ }
1015
+ ]
1016
+ \"\"\")
1017
+ example_subscription = gcp.pubsub.Subscription("exampleSubscription",
1018
+ topic=example_topic.id,
1019
+ bigquery_config=gcp.pubsub.SubscriptionBigqueryConfigArgs(
1020
+ table=pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f"{project}.{dataset_id}.{table_id}"),
1021
+ use_table_schema=True,
1022
+ ),
1023
+ opts=pulumi.ResourceOptions(depends_on=[
1024
+ viewer,
1025
+ editor,
1026
+ ]))
1027
+ ```
987
1028
 
988
1029
  ## Import
989
1030
 
@@ -1207,6 +1248,47 @@ class Subscription(pulumi.CustomResource):
1207
1248
  editor,
1208
1249
  ]))
1209
1250
  ```
1251
+ ### Pubsub Subscription Push Bq Table Schema
1252
+
1253
+ ```python
1254
+ import pulumi
1255
+ import pulumi_gcp as gcp
1256
+
1257
+ example_topic = gcp.pubsub.Topic("exampleTopic")
1258
+ project = gcp.organizations.get_project()
1259
+ viewer = gcp.projects.IAMMember("viewer",
1260
+ project=project.project_id,
1261
+ role="roles/bigquery.metadataViewer",
1262
+ member=f"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com")
1263
+ editor = gcp.projects.IAMMember("editor",
1264
+ project=project.project_id,
1265
+ role="roles/bigquery.dataEditor",
1266
+ member=f"serviceAccount:service-{project.number}@gcp-sa-pubsub.iam.gserviceaccount.com")
1267
+ test_dataset = gcp.bigquery.Dataset("testDataset", dataset_id="example_dataset")
1268
+ test_table = gcp.bigquery.Table("testTable",
1269
+ deletion_protection=False,
1270
+ table_id="example_table",
1271
+ dataset_id=test_dataset.dataset_id,
1272
+ schema=\"\"\"[
1273
+ {
1274
+ "name": "data",
1275
+ "type": "STRING",
1276
+ "mode": "NULLABLE",
1277
+ "description": "The data"
1278
+ }
1279
+ ]
1280
+ \"\"\")
1281
+ example_subscription = gcp.pubsub.Subscription("exampleSubscription",
1282
+ topic=example_topic.id,
1283
+ bigquery_config=gcp.pubsub.SubscriptionBigqueryConfigArgs(
1284
+ table=pulumi.Output.all(test_table.project, test_table.dataset_id, test_table.table_id).apply(lambda project, dataset_id, table_id: f"{project}.{dataset_id}.{table_id}"),
1285
+ use_table_schema=True,
1286
+ ),
1287
+ opts=pulumi.ResourceOptions(depends_on=[
1288
+ viewer,
1289
+ editor,
1290
+ ]))
1291
+ ```
1210
1292
 
1211
1293
  ## Import
1212
1294
 
@@ -0,0 +1,11 @@
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
+ from .. import _utilities
6
+ import typing
7
+ # Export this package's modules as members:
8
+ from .posture import *
9
+ from .posture_deployment import *
10
+ from ._inputs import *
11
+ from . import outputs