pulumi-gcp 8.35.0a1750225231__py3-none-any.whl → 8.36.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 (76) hide show
  1. pulumi_gcp/__init__.py +43 -0
  2. pulumi_gcp/alloydb/_inputs.py +26 -0
  3. pulumi_gcp/alloydb/outputs.py +34 -1
  4. pulumi_gcp/apihub/__init__.py +1 -0
  5. pulumi_gcp/apihub/_inputs.py +983 -0
  6. pulumi_gcp/apihub/outputs.py +807 -0
  7. pulumi_gcp/apihub/plugin_instance.py +808 -0
  8. pulumi_gcp/bigquery/app_profile.py +16 -8
  9. pulumi_gcp/bigquery/table.py +16 -12
  10. pulumi_gcp/bigqueryanalyticshub/_inputs.py +56 -6
  11. pulumi_gcp/bigqueryanalyticshub/data_exchange.py +73 -0
  12. pulumi_gcp/bigqueryanalyticshub/listing.py +201 -48
  13. pulumi_gcp/bigqueryanalyticshub/listing_subscription.py +28 -0
  14. pulumi_gcp/bigqueryanalyticshub/outputs.py +50 -4
  15. pulumi_gcp/bigtable/__init__.py +1 -0
  16. pulumi_gcp/bigtable/_inputs.py +128 -0
  17. pulumi_gcp/bigtable/app_profile.py +1065 -0
  18. pulumi_gcp/bigtable/outputs.py +111 -0
  19. pulumi_gcp/bigtable/table.py +82 -0
  20. pulumi_gcp/cloudquota/s_quota_adjuster_settings.py +64 -8
  21. pulumi_gcp/compute/_inputs.py +24 -12
  22. pulumi_gcp/compute/instance.py +2 -2
  23. pulumi_gcp/compute/instance_template.py +2 -2
  24. pulumi_gcp/compute/interconnect.py +43 -11
  25. pulumi_gcp/compute/node_template.py +21 -0
  26. pulumi_gcp/compute/outputs.py +16 -8
  27. pulumi_gcp/compute/service_attachment.py +76 -8
  28. pulumi_gcp/config/__init__.pyi +2 -0
  29. pulumi_gcp/config/vars.py +4 -0
  30. pulumi_gcp/contactcenterinsights/__init__.py +9 -0
  31. pulumi_gcp/contactcenterinsights/view.py +526 -0
  32. pulumi_gcp/container/_inputs.py +72 -12
  33. pulumi_gcp/container/get_engine_versions.py +15 -1
  34. pulumi_gcp/container/outputs.py +73 -9
  35. pulumi_gcp/dataplex/_inputs.py +431 -6
  36. pulumi_gcp/dataplex/datascan.py +251 -0
  37. pulumi_gcp/dataplex/entry_type.py +2 -2
  38. pulumi_gcp/dataplex/glossary_category.py +8 -8
  39. pulumi_gcp/dataplex/glossary_term.py +8 -8
  40. pulumi_gcp/dataplex/outputs.py +353 -4
  41. pulumi_gcp/dataplex/task.py +16 -16
  42. pulumi_gcp/dataproc/__init__.py +1 -0
  43. pulumi_gcp/dataproc/_inputs.py +486 -0
  44. pulumi_gcp/dataproc/batch.py +10 -10
  45. pulumi_gcp/dataproc/outputs.py +407 -0
  46. pulumi_gcp/dataproc/session_template.py +1084 -0
  47. pulumi_gcp/diagflow/__init__.py +1 -0
  48. pulumi_gcp/diagflow/_inputs.py +48 -0
  49. pulumi_gcp/diagflow/cx_tool.py +2 -2
  50. pulumi_gcp/diagflow/encryption_spec.py +382 -0
  51. pulumi_gcp/diagflow/outputs.py +46 -0
  52. pulumi_gcp/firestore/field.py +6 -6
  53. pulumi_gcp/gkehub/membership_binding.py +6 -6
  54. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  55. pulumi_gcp/gkehub/namespace.py +4 -4
  56. pulumi_gcp/gkehub/scope_rbac_role_binding.py +8 -8
  57. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  58. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  59. pulumi_gcp/lustre/get_instance.py +12 -1
  60. pulumi_gcp/lustre/instance.py +143 -86
  61. pulumi_gcp/managedkafka/connect_cluster.py +4 -4
  62. pulumi_gcp/managedkafka/connector.py +4 -4
  63. pulumi_gcp/networkconnectivity/spoke.py +14 -14
  64. pulumi_gcp/orgpolicy/policy.py +2 -2
  65. pulumi_gcp/provider.py +20 -0
  66. pulumi_gcp/pubsub/subscription.py +6 -6
  67. pulumi_gcp/pulumi-plugin.json +1 -1
  68. pulumi_gcp/storage/bucket_object.py +56 -0
  69. pulumi_gcp/storage/get_bucket_object.py +12 -1
  70. pulumi_gcp/storage/get_bucket_object_content.py +12 -1
  71. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  72. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  73. {pulumi_gcp-8.35.0a1750225231.dist-info → pulumi_gcp-8.36.0.dist-info}/METADATA +2 -2
  74. {pulumi_gcp-8.35.0a1750225231.dist-info → pulumi_gcp-8.36.0.dist-info}/RECORD +76 -70
  75. {pulumi_gcp-8.35.0a1750225231.dist-info → pulumi_gcp-8.36.0.dist-info}/WHEEL +0 -0
  76. {pulumi_gcp-8.35.0a1750225231.dist-info → pulumi_gcp-8.36.0.dist-info}/top_level.txt +0 -0
@@ -458,8 +458,13 @@ class _AppProfileState:
458
458
  pulumi.set(self, "standard_isolation", value)
459
459
 
460
460
 
461
+ warnings.warn("""gcp.bigquery/appprofile.AppProfile has been deprecated in favor of gcp.bigtable/appprofile.AppProfile""", DeprecationWarning)
462
+
463
+
461
464
  @pulumi.type_token("gcp:bigquery/appProfile:AppProfile")
462
465
  class AppProfile(pulumi.CustomResource):
466
+ warnings.warn("""gcp.bigquery/appprofile.AppProfile has been deprecated in favor of gcp.bigtable/appprofile.AppProfile""", DeprecationWarning)
467
+
463
468
  @overload
464
469
  def __init__(__self__,
465
470
  resource_name: str,
@@ -514,7 +519,7 @@ class AppProfile(pulumi.CustomResource):
514
519
  },
515
520
  ],
516
521
  deletion_protection=True)
517
- ap = gcp.bigquery.AppProfile("ap",
522
+ ap = gcp.bigtable.AppProfile("ap",
518
523
  instance=instance.name,
519
524
  app_profile_id="bt-profile",
520
525
  multi_cluster_routing_use_any=True,
@@ -535,7 +540,7 @@ class AppProfile(pulumi.CustomResource):
535
540
  "storage_type": "HDD",
536
541
  }],
537
542
  deletion_protection=True)
538
- ap = gcp.bigquery.AppProfile("ap",
543
+ ap = gcp.bigtable.AppProfile("ap",
539
544
  instance=instance.name,
540
545
  app_profile_id="bt-profile",
541
546
  single_cluster_routing={
@@ -573,7 +578,7 @@ class AppProfile(pulumi.CustomResource):
573
578
  },
574
579
  ],
575
580
  deletion_protection=True)
576
- ap = gcp.bigquery.AppProfile("ap",
581
+ ap = gcp.bigtable.AppProfile("ap",
577
582
  instance=instance.name,
578
583
  app_profile_id="bt-profile",
579
584
  multi_cluster_routing_use_any=True,
@@ -598,7 +603,7 @@ class AppProfile(pulumi.CustomResource):
598
603
  "storage_type": "HDD",
599
604
  }],
600
605
  deletion_protection=True)
601
- ap = gcp.bigquery.AppProfile("ap",
606
+ ap = gcp.bigtable.AppProfile("ap",
602
607
  instance=instance.name,
603
608
  app_profile_id="bt-profile",
604
609
  single_cluster_routing={
@@ -707,7 +712,7 @@ class AppProfile(pulumi.CustomResource):
707
712
  },
708
713
  ],
709
714
  deletion_protection=True)
710
- ap = gcp.bigquery.AppProfile("ap",
715
+ ap = gcp.bigtable.AppProfile("ap",
711
716
  instance=instance.name,
712
717
  app_profile_id="bt-profile",
713
718
  multi_cluster_routing_use_any=True,
@@ -728,7 +733,7 @@ class AppProfile(pulumi.CustomResource):
728
733
  "storage_type": "HDD",
729
734
  }],
730
735
  deletion_protection=True)
731
- ap = gcp.bigquery.AppProfile("ap",
736
+ ap = gcp.bigtable.AppProfile("ap",
732
737
  instance=instance.name,
733
738
  app_profile_id="bt-profile",
734
739
  single_cluster_routing={
@@ -766,7 +771,7 @@ class AppProfile(pulumi.CustomResource):
766
771
  },
767
772
  ],
768
773
  deletion_protection=True)
769
- ap = gcp.bigquery.AppProfile("ap",
774
+ ap = gcp.bigtable.AppProfile("ap",
770
775
  instance=instance.name,
771
776
  app_profile_id="bt-profile",
772
777
  multi_cluster_routing_use_any=True,
@@ -791,7 +796,7 @@ class AppProfile(pulumi.CustomResource):
791
796
  "storage_type": "HDD",
792
797
  }],
793
798
  deletion_protection=True)
794
- ap = gcp.bigquery.AppProfile("ap",
799
+ ap = gcp.bigtable.AppProfile("ap",
795
800
  instance=instance.name,
796
801
  app_profile_id="bt-profile",
797
802
  single_cluster_routing={
@@ -855,6 +860,7 @@ class AppProfile(pulumi.CustomResource):
855
860
  single_cluster_routing: Optional[pulumi.Input[Union['AppProfileSingleClusterRoutingArgs', 'AppProfileSingleClusterRoutingArgsDict']]] = None,
856
861
  standard_isolation: Optional[pulumi.Input[Union['AppProfileStandardIsolationArgs', 'AppProfileStandardIsolationArgsDict']]] = None,
857
862
  __props__=None):
863
+ pulumi.log.warn("""AppProfile is deprecated: gcp.bigquery/appprofile.AppProfile has been deprecated in favor of gcp.bigtable/appprofile.AppProfile""")
858
864
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
859
865
  if not isinstance(opts, pulumi.ResourceOptions):
860
866
  raise TypeError('Expected resource options to be a ResourceOptions instance')
@@ -877,6 +883,8 @@ class AppProfile(pulumi.CustomResource):
877
883
  __props__.__dict__["single_cluster_routing"] = single_cluster_routing
878
884
  __props__.__dict__["standard_isolation"] = standard_isolation
879
885
  __props__.__dict__["name"] = None
886
+ alias_opts = pulumi.ResourceOptions(aliases=[pulumi.Alias(type_="gcp:bigquery/appProfile:AppProfile")])
887
+ opts = pulumi.ResourceOptions.merge(opts, alias_opts)
880
888
  super(AppProfile, __self__).__init__(
881
889
  'gcp:bigquery/appProfile:AppProfile',
882
890
  resource_name,
@@ -561,9 +561,10 @@ class _TableState:
561
561
  ~>**NOTE:** Because this field expects a JSON string, any changes to the
562
562
  string will create a diff, even if the JSON itself hasn't changed.
563
563
  If the API returns a different value for the same schema, e.g. it
564
- switched the order of values or replaced `STRUCT` field type with `RECORD`
565
- field type, we currently cannot suppress the recurring diff this causes.
566
- As a workaround, we recommend using the schema as returned by the API.
564
+ switched the order of values or replaced a field data type (`STRUCT` with
565
+ `RECORD`, `DECIMAL` with `NUMERIC`, etc.), we currently cannot suppress
566
+ the recurring diff this causes. As a workaround, we recommend using the
567
+ schema as returned by the API.
567
568
 
568
569
  ~>**NOTE:** If you use `external_data_configuration`
569
570
  documented below and do **not** set
@@ -795,9 +796,10 @@ class _TableState:
795
796
  ~>**NOTE:** Because this field expects a JSON string, any changes to the
796
797
  string will create a diff, even if the JSON itself hasn't changed.
797
798
  If the API returns a different value for the same schema, e.g. it
798
- switched the order of values or replaced `STRUCT` field type with `RECORD`
799
- field type, we currently cannot suppress the recurring diff this causes.
800
- As a workaround, we recommend using the schema as returned by the API.
799
+ switched the order of values or replaced a field data type (`STRUCT` with
800
+ `RECORD`, `DECIMAL` with `NUMERIC`, etc.), we currently cannot suppress
801
+ the recurring diff this causes. As a workaround, we recommend using the
802
+ schema as returned by the API.
801
803
 
802
804
  ~>**NOTE:** If you use `external_data_configuration`
803
805
  documented below and do **not** set
@@ -1631,9 +1633,10 @@ class Table(pulumi.CustomResource):
1631
1633
  ~>**NOTE:** Because this field expects a JSON string, any changes to the
1632
1634
  string will create a diff, even if the JSON itself hasn't changed.
1633
1635
  If the API returns a different value for the same schema, e.g. it
1634
- switched the order of values or replaced `STRUCT` field type with `RECORD`
1635
- field type, we currently cannot suppress the recurring diff this causes.
1636
- As a workaround, we recommend using the schema as returned by the API.
1636
+ switched the order of values or replaced a field data type (`STRUCT` with
1637
+ `RECORD`, `DECIMAL` with `NUMERIC`, etc.), we currently cannot suppress
1638
+ the recurring diff this causes. As a workaround, we recommend using the
1639
+ schema as returned by the API.
1637
1640
 
1638
1641
  ~>**NOTE:** If you use `external_data_configuration`
1639
1642
  documented below and do **not** set
@@ -1810,9 +1813,10 @@ class Table(pulumi.CustomResource):
1810
1813
  ~>**NOTE:** Because this field expects a JSON string, any changes to the
1811
1814
  string will create a diff, even if the JSON itself hasn't changed.
1812
1815
  If the API returns a different value for the same schema, e.g. it
1813
- switched the order of values or replaced `STRUCT` field type with `RECORD`
1814
- field type, we currently cannot suppress the recurring diff this causes.
1815
- As a workaround, we recommend using the schema as returned by the API.
1816
+ switched the order of values or replaced a field data type (`STRUCT` with
1817
+ `RECORD`, `DECIMAL` with `NUMERIC`, etc.), we currently cannot suppress
1818
+ the recurring diff this causes. As a workaround, we recommend using the
1819
+ schema as returned by the API.
1816
1820
 
1817
1821
  ~>**NOTE:** If you use `external_data_configuration`
1818
1822
  documented below and do **not** set
@@ -38,6 +38,8 @@ __all__ = [
38
38
  'ListingIamMemberConditionArgsDict',
39
39
  'ListingPublisherArgs',
40
40
  'ListingPublisherArgsDict',
41
+ 'ListingPubsubTopicArgs',
42
+ 'ListingPubsubTopicArgsDict',
41
43
  'ListingRestrictedExportConfigArgs',
42
44
  'ListingRestrictedExportConfigArgsDict',
43
45
  'ListingSubscriptionDestinationDatasetArgs',
@@ -281,8 +283,6 @@ if not MYPY:
281
283
  table: NotRequired[pulumi.Input[builtins.str]]
282
284
  """
283
285
  Format: For table: projects/{projectId}/datasets/{datasetId}/tables/{tableId} Example:"projects/test_project/datasets/test_dataset/tables/test_table"
284
-
285
- - - -
286
286
  """
287
287
  elif False:
288
288
  ListingBigqueryDatasetSelectedResourceArgsDict: TypeAlias = Mapping[str, Any]
@@ -293,8 +293,6 @@ class ListingBigqueryDatasetSelectedResourceArgs:
293
293
  table: Optional[pulumi.Input[builtins.str]] = None):
294
294
  """
295
295
  :param pulumi.Input[builtins.str] table: Format: For table: projects/{projectId}/datasets/{datasetId}/tables/{tableId} Example:"projects/test_project/datasets/test_dataset/tables/test_table"
296
-
297
- - - -
298
296
  """
299
297
  if table is not None:
300
298
  pulumi.set(__self__, "table", table)
@@ -304,8 +302,6 @@ class ListingBigqueryDatasetSelectedResourceArgs:
304
302
  def table(self) -> Optional[pulumi.Input[builtins.str]]:
305
303
  """
306
304
  Format: For table: projects/{projectId}/datasets/{datasetId}/tables/{tableId} Example:"projects/test_project/datasets/test_dataset/tables/test_table"
307
-
308
- - - -
309
305
  """
310
306
  return pulumi.get(self, "table")
311
307
 
@@ -510,6 +506,60 @@ class ListingPublisherArgs:
510
506
  pulumi.set(self, "primary_contact", value)
511
507
 
512
508
 
509
+ if not MYPY:
510
+ class ListingPubsubTopicArgsDict(TypedDict):
511
+ topic: pulumi.Input[builtins.str]
512
+ """
513
+ Resource name of the Pub/Sub topic source for this listing. e.g. projects/myproject/topics/topicId
514
+ """
515
+ data_affinity_regions: NotRequired[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]
516
+ """
517
+ Region hint on where the data might be published. Data affinity regions are modifiable.
518
+ See https://cloud.google.com/about/locations for full listing of possible Cloud regions.
519
+ """
520
+ elif False:
521
+ ListingPubsubTopicArgsDict: TypeAlias = Mapping[str, Any]
522
+
523
+ @pulumi.input_type
524
+ class ListingPubsubTopicArgs:
525
+ def __init__(__self__, *,
526
+ topic: pulumi.Input[builtins.str],
527
+ data_affinity_regions: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]] = None):
528
+ """
529
+ :param pulumi.Input[builtins.str] topic: Resource name of the Pub/Sub topic source for this listing. e.g. projects/myproject/topics/topicId
530
+ :param pulumi.Input[Sequence[pulumi.Input[builtins.str]]] data_affinity_regions: Region hint on where the data might be published. Data affinity regions are modifiable.
531
+ See https://cloud.google.com/about/locations for full listing of possible Cloud regions.
532
+ """
533
+ pulumi.set(__self__, "topic", topic)
534
+ if data_affinity_regions is not None:
535
+ pulumi.set(__self__, "data_affinity_regions", data_affinity_regions)
536
+
537
+ @property
538
+ @pulumi.getter
539
+ def topic(self) -> pulumi.Input[builtins.str]:
540
+ """
541
+ Resource name of the Pub/Sub topic source for this listing. e.g. projects/myproject/topics/topicId
542
+ """
543
+ return pulumi.get(self, "topic")
544
+
545
+ @topic.setter
546
+ def topic(self, value: pulumi.Input[builtins.str]):
547
+ pulumi.set(self, "topic", value)
548
+
549
+ @property
550
+ @pulumi.getter(name="dataAffinityRegions")
551
+ def data_affinity_regions(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]:
552
+ """
553
+ Region hint on where the data might be published. Data affinity regions are modifiable.
554
+ See https://cloud.google.com/about/locations for full listing of possible Cloud regions.
555
+ """
556
+ return pulumi.get(self, "data_affinity_regions")
557
+
558
+ @data_affinity_regions.setter
559
+ def data_affinity_regions(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[builtins.str]]]]):
560
+ pulumi.set(self, "data_affinity_regions", value)
561
+
562
+
513
563
  if not MYPY:
514
564
  class ListingRestrictedExportConfigArgsDict(TypedDict):
515
565
  enabled: NotRequired[pulumi.Input[builtins.bool]]
@@ -28,6 +28,7 @@ class DataExchangeArgs:
28
28
  description: Optional[pulumi.Input[builtins.str]] = None,
29
29
  documentation: Optional[pulumi.Input[builtins.str]] = None,
30
30
  icon: Optional[pulumi.Input[builtins.str]] = None,
31
+ log_linked_dataset_query_user_email: Optional[pulumi.Input[builtins.bool]] = None,
31
32
  primary_contact: Optional[pulumi.Input[builtins.str]] = None,
32
33
  project: Optional[pulumi.Input[builtins.str]] = None,
33
34
  sharing_environment_config: Optional[pulumi.Input['DataExchangeSharingEnvironmentConfigArgs']] = None):
@@ -42,6 +43,7 @@ class DataExchangeArgs:
42
43
  :param pulumi.Input[builtins.str] description: Description of the data exchange.
43
44
  :param pulumi.Input[builtins.str] documentation: Documentation describing the data exchange.
44
45
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
46
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
45
47
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
46
48
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
47
49
  If it is not provided, the provider project is used.
@@ -58,6 +60,8 @@ class DataExchangeArgs:
58
60
  pulumi.set(__self__, "documentation", documentation)
59
61
  if icon is not None:
60
62
  pulumi.set(__self__, "icon", icon)
63
+ if log_linked_dataset_query_user_email is not None:
64
+ pulumi.set(__self__, "log_linked_dataset_query_user_email", log_linked_dataset_query_user_email)
61
65
  if primary_contact is not None:
62
66
  pulumi.set(__self__, "primary_contact", primary_contact)
63
67
  if project is not None:
@@ -140,6 +144,18 @@ class DataExchangeArgs:
140
144
  def icon(self, value: Optional[pulumi.Input[builtins.str]]):
141
145
  pulumi.set(self, "icon", value)
142
146
 
147
+ @property
148
+ @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
149
+ def log_linked_dataset_query_user_email(self) -> Optional[pulumi.Input[builtins.bool]]:
150
+ """
151
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
152
+ """
153
+ return pulumi.get(self, "log_linked_dataset_query_user_email")
154
+
155
+ @log_linked_dataset_query_user_email.setter
156
+ def log_linked_dataset_query_user_email(self, value: Optional[pulumi.Input[builtins.bool]]):
157
+ pulumi.set(self, "log_linked_dataset_query_user_email", value)
158
+
143
159
  @property
144
160
  @pulumi.getter(name="primaryContact")
145
161
  def primary_contact(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -190,6 +206,7 @@ class _DataExchangeState:
190
206
  icon: Optional[pulumi.Input[builtins.str]] = None,
191
207
  listing_count: Optional[pulumi.Input[builtins.int]] = None,
192
208
  location: Optional[pulumi.Input[builtins.str]] = None,
209
+ log_linked_dataset_query_user_email: Optional[pulumi.Input[builtins.bool]] = None,
193
210
  name: Optional[pulumi.Input[builtins.str]] = None,
194
211
  primary_contact: Optional[pulumi.Input[builtins.str]] = None,
195
212
  project: Optional[pulumi.Input[builtins.str]] = None,
@@ -206,6 +223,7 @@ class _DataExchangeState:
206
223
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
207
224
  :param pulumi.Input[builtins.int] listing_count: Number of listings contained in the data exchange.
208
225
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange.
226
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
209
227
  :param pulumi.Input[builtins.str] name: The resource name of the data exchange, for example:
210
228
  "projects/myproject/locations/US/dataExchanges/123"
211
229
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
@@ -229,6 +247,8 @@ class _DataExchangeState:
229
247
  pulumi.set(__self__, "listing_count", listing_count)
230
248
  if location is not None:
231
249
  pulumi.set(__self__, "location", location)
250
+ if log_linked_dataset_query_user_email is not None:
251
+ pulumi.set(__self__, "log_linked_dataset_query_user_email", log_linked_dataset_query_user_email)
232
252
  if name is not None:
233
253
  pulumi.set(__self__, "name", name)
234
254
  if primary_contact is not None:
@@ -325,6 +345,18 @@ class _DataExchangeState:
325
345
  def location(self, value: Optional[pulumi.Input[builtins.str]]):
326
346
  pulumi.set(self, "location", value)
327
347
 
348
+ @property
349
+ @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
350
+ def log_linked_dataset_query_user_email(self) -> Optional[pulumi.Input[builtins.bool]]:
351
+ """
352
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
353
+ """
354
+ return pulumi.get(self, "log_linked_dataset_query_user_email")
355
+
356
+ @log_linked_dataset_query_user_email.setter
357
+ def log_linked_dataset_query_user_email(self, value: Optional[pulumi.Input[builtins.bool]]):
358
+ pulumi.set(self, "log_linked_dataset_query_user_email", value)
359
+
328
360
  @property
329
361
  @pulumi.getter
330
362
  def name(self) -> Optional[pulumi.Input[builtins.str]]:
@@ -390,6 +422,7 @@ class DataExchange(pulumi.CustomResource):
390
422
  documentation: Optional[pulumi.Input[builtins.str]] = None,
391
423
  icon: Optional[pulumi.Input[builtins.str]] = None,
392
424
  location: Optional[pulumi.Input[builtins.str]] = None,
425
+ log_linked_dataset_query_user_email: Optional[pulumi.Input[builtins.bool]] = None,
393
426
  primary_contact: Optional[pulumi.Input[builtins.str]] = None,
394
427
  project: Optional[pulumi.Input[builtins.str]] = None,
395
428
  sharing_environment_config: Optional[pulumi.Input[Union['DataExchangeSharingEnvironmentConfigArgs', 'DataExchangeSharingEnvironmentConfigArgsDict']]] = None,
@@ -432,6 +465,19 @@ class DataExchange(pulumi.CustomResource):
432
465
  "dcr_exchange_config": {},
433
466
  })
434
467
  ```
468
+ ### Bigquery Analyticshub Data Exchange Log Linked Dataset Query User
469
+
470
+ ```python
471
+ import pulumi
472
+ import pulumi_gcp as gcp
473
+
474
+ data_exchange = gcp.bigqueryanalyticshub.DataExchange("data_exchange",
475
+ location="US",
476
+ data_exchange_id="tf_test_log_email_data_exchange",
477
+ display_name="tf_test_log_email_data_exchange",
478
+ description="Example for log email test for data exchange",
479
+ log_linked_dataset_query_user_email=True)
480
+ ```
435
481
 
436
482
  ## Import
437
483
 
@@ -474,6 +520,7 @@ class DataExchange(pulumi.CustomResource):
474
520
  :param pulumi.Input[builtins.str] documentation: Documentation describing the data exchange.
475
521
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
476
522
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange.
523
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
477
524
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
478
525
  :param pulumi.Input[builtins.str] project: The ID of the project in which the resource belongs.
479
526
  If it is not provided, the provider project is used.
@@ -525,6 +572,19 @@ class DataExchange(pulumi.CustomResource):
525
572
  "dcr_exchange_config": {},
526
573
  })
527
574
  ```
575
+ ### Bigquery Analyticshub Data Exchange Log Linked Dataset Query User
576
+
577
+ ```python
578
+ import pulumi
579
+ import pulumi_gcp as gcp
580
+
581
+ data_exchange = gcp.bigqueryanalyticshub.DataExchange("data_exchange",
582
+ location="US",
583
+ data_exchange_id="tf_test_log_email_data_exchange",
584
+ display_name="tf_test_log_email_data_exchange",
585
+ description="Example for log email test for data exchange",
586
+ log_linked_dataset_query_user_email=True)
587
+ ```
528
588
 
529
589
  ## Import
530
590
 
@@ -577,6 +637,7 @@ class DataExchange(pulumi.CustomResource):
577
637
  documentation: Optional[pulumi.Input[builtins.str]] = None,
578
638
  icon: Optional[pulumi.Input[builtins.str]] = None,
579
639
  location: Optional[pulumi.Input[builtins.str]] = None,
640
+ log_linked_dataset_query_user_email: Optional[pulumi.Input[builtins.bool]] = None,
580
641
  primary_contact: Optional[pulumi.Input[builtins.str]] = None,
581
642
  project: Optional[pulumi.Input[builtins.str]] = None,
582
643
  sharing_environment_config: Optional[pulumi.Input[Union['DataExchangeSharingEnvironmentConfigArgs', 'DataExchangeSharingEnvironmentConfigArgsDict']]] = None,
@@ -601,6 +662,7 @@ class DataExchange(pulumi.CustomResource):
601
662
  if location is None and not opts.urn:
602
663
  raise TypeError("Missing required property 'location'")
603
664
  __props__.__dict__["location"] = location
665
+ __props__.__dict__["log_linked_dataset_query_user_email"] = log_linked_dataset_query_user_email
604
666
  __props__.__dict__["primary_contact"] = primary_contact
605
667
  __props__.__dict__["project"] = project
606
668
  __props__.__dict__["sharing_environment_config"] = sharing_environment_config
@@ -623,6 +685,7 @@ class DataExchange(pulumi.CustomResource):
623
685
  icon: Optional[pulumi.Input[builtins.str]] = None,
624
686
  listing_count: Optional[pulumi.Input[builtins.int]] = None,
625
687
  location: Optional[pulumi.Input[builtins.str]] = None,
688
+ log_linked_dataset_query_user_email: Optional[pulumi.Input[builtins.bool]] = None,
626
689
  name: Optional[pulumi.Input[builtins.str]] = None,
627
690
  primary_contact: Optional[pulumi.Input[builtins.str]] = None,
628
691
  project: Optional[pulumi.Input[builtins.str]] = None,
@@ -644,6 +707,7 @@ class DataExchange(pulumi.CustomResource):
644
707
  :param pulumi.Input[builtins.str] icon: Base64 encoded image representing the data exchange.
645
708
  :param pulumi.Input[builtins.int] listing_count: Number of listings contained in the data exchange.
646
709
  :param pulumi.Input[builtins.str] location: The name of the location this data exchange.
710
+ :param pulumi.Input[builtins.bool] log_linked_dataset_query_user_email: If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
647
711
  :param pulumi.Input[builtins.str] name: The resource name of the data exchange, for example:
648
712
  "projects/myproject/locations/US/dataExchanges/123"
649
713
  :param pulumi.Input[builtins.str] primary_contact: Email or URL of the primary point of contact of the data exchange.
@@ -664,6 +728,7 @@ class DataExchange(pulumi.CustomResource):
664
728
  __props__.__dict__["icon"] = icon
665
729
  __props__.__dict__["listing_count"] = listing_count
666
730
  __props__.__dict__["location"] = location
731
+ __props__.__dict__["log_linked_dataset_query_user_email"] = log_linked_dataset_query_user_email
667
732
  __props__.__dict__["name"] = name
668
733
  __props__.__dict__["primary_contact"] = primary_contact
669
734
  __props__.__dict__["project"] = project
@@ -729,6 +794,14 @@ class DataExchange(pulumi.CustomResource):
729
794
  """
730
795
  return pulumi.get(self, "location")
731
796
 
797
+ @property
798
+ @pulumi.getter(name="logLinkedDatasetQueryUserEmail")
799
+ def log_linked_dataset_query_user_email(self) -> pulumi.Output[Optional[builtins.bool]]:
800
+ """
801
+ If true, subscriber email logging is enabled and all queries on the linked dataset will log the email address of the querying user.
802
+ """
803
+ return pulumi.get(self, "log_linked_dataset_query_user_email")
804
+
732
805
  @property
733
806
  @pulumi.getter
734
807
  def name(self) -> pulumi.Output[builtins.str]: