pulumi-gcp 7.28.0a1718995220__py3-none-any.whl → 7.29.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. pulumi_gcp/__init__.py +8 -0
  2. pulumi_gcp/_utilities.py +35 -0
  3. pulumi_gcp/activedirectory/domain.py +14 -14
  4. pulumi_gcp/activedirectory/domain_trust.py +14 -14
  5. pulumi_gcp/alloydb/backup.py +8 -8
  6. pulumi_gcp/alloydb/cluster.py +11 -17
  7. pulumi_gcp/alloydb/instance.py +8 -8
  8. pulumi_gcp/alloydb/user.py +8 -8
  9. pulumi_gcp/apigee/addons_config.py +4 -4
  10. pulumi_gcp/apigee/endpoint_attachment.py +2 -2
  11. pulumi_gcp/apigee/env_group.py +2 -2
  12. pulumi_gcp/apigee/environment.py +2 -2
  13. pulumi_gcp/apigee/instance.py +8 -8
  14. pulumi_gcp/apigee/keystores_aliases_self_signed_cert.py +10 -10
  15. pulumi_gcp/apigee/nat_address.py +2 -2
  16. pulumi_gcp/apigee/organization.py +6 -6
  17. pulumi_gcp/apigee/sync_authorization.py +4 -4
  18. pulumi_gcp/apigee/target_server.py +10 -10
  19. pulumi_gcp/apphub/service.py +20 -20
  20. pulumi_gcp/apphub/service_project_attachment.py +8 -8
  21. pulumi_gcp/applicationintegration/auth_config.py +2 -2
  22. pulumi_gcp/applicationintegration/client.py +6 -18
  23. pulumi_gcp/artifactregistry/__init__.py +1 -0
  24. pulumi_gcp/artifactregistry/_inputs.py +4 -4
  25. pulumi_gcp/artifactregistry/get_docker_image.py +244 -0
  26. pulumi_gcp/artifactregistry/outputs.py +6 -6
  27. pulumi_gcp/artifactregistry/repository.py +10 -10
  28. pulumi_gcp/backupdisasterrecovery/management_server.py +2 -2
  29. pulumi_gcp/bigquery/_inputs.py +2 -6
  30. pulumi_gcp/bigquery/data_transfer_config.py +4 -4
  31. pulumi_gcp/bigquery/dataset.py +75 -0
  32. pulumi_gcp/bigquery/get_dataset.py +11 -1
  33. pulumi_gcp/bigquery/job.py +6 -6
  34. pulumi_gcp/bigquery/outputs.py +2 -6
  35. pulumi_gcp/bigtable/_inputs.py +1 -3
  36. pulumi_gcp/bigtable/instance.py +3 -9
  37. pulumi_gcp/bigtable/outputs.py +1 -3
  38. pulumi_gcp/billing/_inputs.py +22 -0
  39. pulumi_gcp/billing/budget.py +50 -0
  40. pulumi_gcp/billing/outputs.py +20 -0
  41. pulumi_gcp/certificateauthority/authority.py +2 -2
  42. pulumi_gcp/certificateauthority/certificate.py +4 -4
  43. pulumi_gcp/certificatemanager/_inputs.py +2 -6
  44. pulumi_gcp/certificatemanager/certificate.py +4 -4
  45. pulumi_gcp/certificatemanager/certificate_issuance_config.py +2 -2
  46. pulumi_gcp/certificatemanager/outputs.py +2 -6
  47. pulumi_gcp/cloudbuild/bitbucket_server_config.py +6 -6
  48. pulumi_gcp/cloudbuild/trigger.py +2 -2
  49. pulumi_gcp/cloudbuild/worker_pool.py +6 -6
  50. pulumi_gcp/cloudbuildv2/connection.py +2 -2
  51. pulumi_gcp/cloudbuildv2/repository.py +2 -2
  52. pulumi_gcp/cloudfunctionsv2/function.py +28 -28
  53. pulumi_gcp/cloudids/endpoint.py +2 -2
  54. pulumi_gcp/cloudrun/_inputs.py +3 -9
  55. pulumi_gcp/cloudrun/outputs.py +3 -9
  56. pulumi_gcp/cloudrunv2/get_job.py +21 -1
  57. pulumi_gcp/cloudrunv2/job.py +163 -19
  58. pulumi_gcp/cloudrunv2/service.py +8 -8
  59. pulumi_gcp/compute/_inputs.py +83 -0
  60. pulumi_gcp/compute/disk.py +3 -9
  61. pulumi_gcp/compute/firewall.py +3 -9
  62. pulumi_gcp/compute/forwarding_rule.py +22 -22
  63. pulumi_gcp/compute/outputs.py +166 -1
  64. pulumi_gcp/compute/packet_mirroring.py +2 -2
  65. pulumi_gcp/compute/project_cloud_armor_tier.py +2 -2
  66. pulumi_gcp/compute/region_disk.py +3 -9
  67. pulumi_gcp/compute/region_security_policy_rule.py +2 -2
  68. pulumi_gcp/compute/route.py +2 -2
  69. pulumi_gcp/compute/subnetwork.py +2 -6
  70. pulumi_gcp/compute/target_instance.py +2 -2
  71. pulumi_gcp/compute/vpn_gateway.py +2 -2
  72. pulumi_gcp/compute/vpn_tunnel.py +2 -2
  73. pulumi_gcp/container/_inputs.py +2 -6
  74. pulumi_gcp/container/outputs.py +2 -6
  75. pulumi_gcp/databasemigrationservice/connection_profile.py +16 -16
  76. pulumi_gcp/datacatalog/policy_tag.py +2 -2
  77. pulumi_gcp/datafusion/instance.py +4 -8
  78. pulumi_gcp/dataplex/asset.py +2 -2
  79. pulumi_gcp/dataplex/datascan.py +2 -2
  80. pulumi_gcp/dataproc/_inputs.py +100 -0
  81. pulumi_gcp/dataproc/metastore_service.py +172 -0
  82. pulumi_gcp/dataproc/outputs.py +192 -1
  83. pulumi_gcp/dataproc/workflow_template.py +3 -9
  84. pulumi_gcp/datastore/data_store_index.py +2 -2
  85. pulumi_gcp/datastream/stream.py +6 -6
  86. pulumi_gcp/diagflow/entity_type.py +2 -2
  87. pulumi_gcp/diagflow/fulfillment.py +2 -2
  88. pulumi_gcp/diagflow/intent.py +4 -4
  89. pulumi_gcp/edgecontainer/node_pool.py +2 -2
  90. pulumi_gcp/edgecontainer/vpn_connection.py +2 -2
  91. pulumi_gcp/eventarc/channel.py +2 -2
  92. pulumi_gcp/eventarc/google_channel_config.py +2 -2
  93. pulumi_gcp/filestore/instance.py +3 -9
  94. pulumi_gcp/firebase/app_check_app_attest_config.py +8 -8
  95. pulumi_gcp/firebase/app_check_debug_token.py +4 -4
  96. pulumi_gcp/firebase/app_check_device_check_config.py +4 -4
  97. pulumi_gcp/firebase/app_check_play_integrity_config.py +8 -8
  98. pulumi_gcp/firebase/app_check_recaptcha_enterprise_config.py +4 -4
  99. pulumi_gcp/firebase/app_check_recaptcha_v3_config.py +4 -4
  100. pulumi_gcp/firebase/app_check_service_config.py +6 -6
  101. pulumi_gcp/firebase/database_instance.py +2 -2
  102. pulumi_gcp/firestore/database.py +4 -4
  103. pulumi_gcp/firestore/document.py +12 -12
  104. pulumi_gcp/folder/access_approval_settings.py +2 -2
  105. pulumi_gcp/gkehub/_inputs.py +4 -8
  106. pulumi_gcp/gkehub/membership.py +3 -9
  107. pulumi_gcp/gkehub/membership_binding.py +4 -4
  108. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  109. pulumi_gcp/gkehub/namespace.py +2 -2
  110. pulumi_gcp/gkehub/outputs.py +4 -8
  111. pulumi_gcp/gkehub/scope_rbac_role_binding.py +2 -2
  112. pulumi_gcp/healthcare/fhir_store.py +3 -9
  113. pulumi_gcp/healthcare/hl7_store.py +3 -9
  114. pulumi_gcp/integrationconnectors/connection.py +2 -2
  115. pulumi_gcp/integrationconnectors/managed_zone.py +6 -6
  116. pulumi_gcp/kms/_inputs.py +1 -3
  117. pulumi_gcp/kms/autokey_config.py +16 -16
  118. pulumi_gcp/kms/key_handle.py +22 -22
  119. pulumi_gcp/kms/outputs.py +1 -3
  120. pulumi_gcp/logging/folder_settings.py +2 -2
  121. pulumi_gcp/logging/linked_dataset.py +2 -2
  122. pulumi_gcp/logging/organization_settings.py +2 -2
  123. pulumi_gcp/logging/project_bucket_config.py +2 -2
  124. pulumi_gcp/looker/instance.py +2 -2
  125. pulumi_gcp/netapp/volume_replication.py +2 -2
  126. pulumi_gcp/netapp/volume_snapshot.py +2 -2
  127. pulumi_gcp/networkconnectivity/internal_range.py +2 -2
  128. pulumi_gcp/networksecurity/gateway_security_policy.py +4 -4
  129. pulumi_gcp/networksecurity/tls_inspection_policy.py +4 -4
  130. pulumi_gcp/networkservices/gateway.py +6 -6
  131. pulumi_gcp/organizations/access_approval_settings.py +2 -2
  132. pulumi_gcp/parallelstore/instance.py +2 -2
  133. pulumi_gcp/projects/access_approval_settings.py +5 -11
  134. pulumi_gcp/pubsub/_inputs.py +40 -0
  135. pulumi_gcp/pubsub/outputs.py +66 -0
  136. pulumi_gcp/pubsub/schema.py +2 -2
  137. pulumi_gcp/pubsub/subscription.py +174 -8
  138. pulumi_gcp/pubsub/topic.py +2 -2
  139. pulumi_gcp/pulumi-plugin.json +1 -1
  140. pulumi_gcp/redis/cluster.py +4 -4
  141. pulumi_gcp/redis/get_instance.py +11 -1
  142. pulumi_gcp/redis/instance.py +49 -2
  143. pulumi_gcp/secretmanager/secret.py +2 -2
  144. pulumi_gcp/securesourcemanager/instance.py +6 -6
  145. pulumi_gcp/securitycenter/instance_iam_binding.py +2 -2
  146. pulumi_gcp/securitycenter/instance_iam_member.py +2 -2
  147. pulumi_gcp/securitycenter/instance_iam_policy.py +2 -2
  148. pulumi_gcp/servicenetworking/__init__.py +1 -0
  149. pulumi_gcp/servicenetworking/vpc_service_controls.py +511 -0
  150. pulumi_gcp/sql/_inputs.py +1 -3
  151. pulumi_gcp/sql/database_instance.py +2 -2
  152. pulumi_gcp/sql/outputs.py +1 -3
  153. pulumi_gcp/sql/user.py +21 -7
  154. pulumi_gcp/storage/get_project_service_account.py +2 -2
  155. pulumi_gcp/storage/insights_report_config.py +2 -2
  156. pulumi_gcp/storage/notification.py +2 -2
  157. pulumi_gcp/storage/transfer_agent_pool.py +2 -2
  158. pulumi_gcp/storage/transfer_job.py +4 -4
  159. pulumi_gcp/tpu/v2_vm.py +4 -4
  160. pulumi_gcp/vertex/_inputs.py +1 -3
  161. pulumi_gcp/vertex/ai_endpoint.py +2 -2
  162. pulumi_gcp/vertex/ai_feature_online_store.py +3 -9
  163. pulumi_gcp/vertex/ai_index_endpoint.py +2 -2
  164. pulumi_gcp/vertex/ai_tensorboard.py +2 -2
  165. pulumi_gcp/vertex/outputs.py +1 -3
  166. pulumi_gcp/vmwareengine/external_address.py +2 -2
  167. pulumi_gcp/vmwareengine/network.py +4 -4
  168. pulumi_gcp/vpcaccess/connector.py +2 -8
  169. {pulumi_gcp-7.28.0a1718995220.dist-info → pulumi_gcp-7.29.0.dist-info}/METADATA +1 -1
  170. {pulumi_gcp-7.28.0a1718995220.dist-info → pulumi_gcp-7.29.0.dist-info}/RECORD +172 -170
  171. {pulumi_gcp-7.28.0a1718995220.dist-info → pulumi_gcp-7.29.0.dist-info}/WHEEL +1 -1
  172. {pulumi_gcp-7.28.0a1718995220.dist-info → pulumi_gcp-7.29.0.dist-info}/top_level.txt +0 -0
@@ -31,6 +31,7 @@ class DatasetArgs:
31
31
  location: Optional[pulumi.Input[str]] = None,
32
32
  max_time_travel_hours: Optional[pulumi.Input[str]] = None,
33
33
  project: Optional[pulumi.Input[str]] = None,
34
+ resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
34
35
  storage_billing_model: Optional[pulumi.Input[str]] = None):
35
36
  """
36
37
  The set of arguments for constructing a Dataset resource.
@@ -109,6 +110,11 @@ class DatasetArgs:
109
110
  :param pulumi.Input[str] max_time_travel_hours: Defines the time travel window in hours. The value can be from 48 to 168 hours (2 to 7 days).
110
111
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
111
112
  If it is not provided, the provider project is used.
113
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
114
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
115
+ ID of the parent organization or project resource for this tag key. Tag value is expected
116
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
117
+ for more details.
112
118
  :param pulumi.Input[str] storage_billing_model: Specifies the storage billing model for the dataset.
113
119
  Set this flag value to LOGICAL to use logical bytes for storage billing,
114
120
  or to PHYSICAL to use physical bytes instead.
@@ -143,6 +149,8 @@ class DatasetArgs:
143
149
  pulumi.set(__self__, "max_time_travel_hours", max_time_travel_hours)
144
150
  if project is not None:
145
151
  pulumi.set(__self__, "project", project)
152
+ if resource_tags is not None:
153
+ pulumi.set(__self__, "resource_tags", resource_tags)
146
154
  if storage_billing_model is not None:
147
155
  pulumi.set(__self__, "storage_billing_model", storage_billing_model)
148
156
 
@@ -386,6 +394,22 @@ class DatasetArgs:
386
394
  def project(self, value: Optional[pulumi.Input[str]]):
387
395
  pulumi.set(self, "project", value)
388
396
 
397
+ @property
398
+ @pulumi.getter(name="resourceTags")
399
+ def resource_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
400
+ """
401
+ The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
402
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
403
+ ID of the parent organization or project resource for this tag key. Tag value is expected
404
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
405
+ for more details.
406
+ """
407
+ return pulumi.get(self, "resource_tags")
408
+
409
+ @resource_tags.setter
410
+ def resource_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
411
+ pulumi.set(self, "resource_tags", value)
412
+
389
413
  @property
390
414
  @pulumi.getter(name="storageBillingModel")
391
415
  def storage_billing_model(self) -> Optional[pulumi.Input[str]]:
@@ -425,6 +449,7 @@ class _DatasetState:
425
449
  max_time_travel_hours: Optional[pulumi.Input[str]] = None,
426
450
  project: Optional[pulumi.Input[str]] = None,
427
451
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
452
+ resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
428
453
  self_link: Optional[pulumi.Input[str]] = None,
429
454
  storage_billing_model: Optional[pulumi.Input[str]] = None):
430
455
  """
@@ -512,6 +537,11 @@ class _DatasetState:
512
537
  If it is not provided, the provider project is used.
513
538
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
514
539
  and default labels configured on the provider.
540
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
541
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
542
+ ID of the parent organization or project resource for this tag key. Tag value is expected
543
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
544
+ for more details.
515
545
  :param pulumi.Input[str] self_link: The URI of the created resource.
516
546
  :param pulumi.Input[str] storage_billing_model: Specifies the storage billing model for the dataset.
517
547
  Set this flag value to LOGICAL to use logical bytes for storage billing,
@@ -558,6 +588,8 @@ class _DatasetState:
558
588
  pulumi.set(__self__, "project", project)
559
589
  if pulumi_labels is not None:
560
590
  pulumi.set(__self__, "pulumi_labels", pulumi_labels)
591
+ if resource_tags is not None:
592
+ pulumi.set(__self__, "resource_tags", resource_tags)
561
593
  if self_link is not None:
562
594
  pulumi.set(__self__, "self_link", self_link)
563
595
  if storage_billing_model is not None:
@@ -866,6 +898,22 @@ class _DatasetState:
866
898
  def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
867
899
  pulumi.set(self, "pulumi_labels", value)
868
900
 
901
+ @property
902
+ @pulumi.getter(name="resourceTags")
903
+ def resource_tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
904
+ """
905
+ The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
906
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
907
+ ID of the parent organization or project resource for this tag key. Tag value is expected
908
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
909
+ for more details.
910
+ """
911
+ return pulumi.get(self, "resource_tags")
912
+
913
+ @resource_tags.setter
914
+ def resource_tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
915
+ pulumi.set(self, "resource_tags", value)
916
+
869
917
  @property
870
918
  @pulumi.getter(name="selfLink")
871
919
  def self_link(self) -> Optional[pulumi.Input[str]]:
@@ -914,6 +962,7 @@ class Dataset(pulumi.CustomResource):
914
962
  location: Optional[pulumi.Input[str]] = None,
915
963
  max_time_travel_hours: Optional[pulumi.Input[str]] = None,
916
964
  project: Optional[pulumi.Input[str]] = None,
965
+ resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
917
966
  storage_billing_model: Optional[pulumi.Input[str]] = None,
918
967
  __props__=None):
919
968
  """
@@ -1189,6 +1238,11 @@ class Dataset(pulumi.CustomResource):
1189
1238
  :param pulumi.Input[str] max_time_travel_hours: Defines the time travel window in hours. The value can be from 48 to 168 hours (2 to 7 days).
1190
1239
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
1191
1240
  If it is not provided, the provider project is used.
1241
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
1242
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
1243
+ ID of the parent organization or project resource for this tag key. Tag value is expected
1244
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
1245
+ for more details.
1192
1246
  :param pulumi.Input[str] storage_billing_model: Specifies the storage billing model for the dataset.
1193
1247
  Set this flag value to LOGICAL to use logical bytes for storage billing,
1194
1248
  or to PHYSICAL to use physical bytes instead.
@@ -1426,6 +1480,7 @@ class Dataset(pulumi.CustomResource):
1426
1480
  location: Optional[pulumi.Input[str]] = None,
1427
1481
  max_time_travel_hours: Optional[pulumi.Input[str]] = None,
1428
1482
  project: Optional[pulumi.Input[str]] = None,
1483
+ resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1429
1484
  storage_billing_model: Optional[pulumi.Input[str]] = None,
1430
1485
  __props__=None):
1431
1486
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
@@ -1453,6 +1508,7 @@ class Dataset(pulumi.CustomResource):
1453
1508
  __props__.__dict__["location"] = location
1454
1509
  __props__.__dict__["max_time_travel_hours"] = max_time_travel_hours
1455
1510
  __props__.__dict__["project"] = project
1511
+ __props__.__dict__["resource_tags"] = resource_tags
1456
1512
  __props__.__dict__["storage_billing_model"] = storage_billing_model
1457
1513
  __props__.__dict__["creation_time"] = None
1458
1514
  __props__.__dict__["effective_labels"] = None
@@ -1492,6 +1548,7 @@ class Dataset(pulumi.CustomResource):
1492
1548
  max_time_travel_hours: Optional[pulumi.Input[str]] = None,
1493
1549
  project: Optional[pulumi.Input[str]] = None,
1494
1550
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1551
+ resource_tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
1495
1552
  self_link: Optional[pulumi.Input[str]] = None,
1496
1553
  storage_billing_model: Optional[pulumi.Input[str]] = None) -> 'Dataset':
1497
1554
  """
@@ -1584,6 +1641,11 @@ class Dataset(pulumi.CustomResource):
1584
1641
  If it is not provided, the provider project is used.
1585
1642
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource
1586
1643
  and default labels configured on the provider.
1644
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] resource_tags: The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
1645
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
1646
+ ID of the parent organization or project resource for this tag key. Tag value is expected
1647
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
1648
+ for more details.
1587
1649
  :param pulumi.Input[str] self_link: The URI of the created resource.
1588
1650
  :param pulumi.Input[str] storage_billing_model: Specifies the storage billing model for the dataset.
1589
1651
  Set this flag value to LOGICAL to use logical bytes for storage billing,
@@ -1614,6 +1676,7 @@ class Dataset(pulumi.CustomResource):
1614
1676
  __props__.__dict__["max_time_travel_hours"] = max_time_travel_hours
1615
1677
  __props__.__dict__["project"] = project
1616
1678
  __props__.__dict__["pulumi_labels"] = pulumi_labels
1679
+ __props__.__dict__["resource_tags"] = resource_tags
1617
1680
  __props__.__dict__["self_link"] = self_link
1618
1681
  __props__.__dict__["storage_billing_model"] = storage_billing_model
1619
1682
  return Dataset(resource_name, opts=opts, __props__=__props__)
@@ -1841,6 +1904,18 @@ class Dataset(pulumi.CustomResource):
1841
1904
  """
1842
1905
  return pulumi.get(self, "pulumi_labels")
1843
1906
 
1907
+ @property
1908
+ @pulumi.getter(name="resourceTags")
1909
+ def resource_tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
1910
+ """
1911
+ The tags attached to this table. Tag keys are globally unique. Tag key is expected to be
1912
+ in the namespaced format, for example "123456789012/environment" where 123456789012 is the
1913
+ ID of the parent organization or project resource for this tag key. Tag value is expected
1914
+ to be the short name, for example "Production". See [Tag definitions](https://www.terraform.io/iam/docs/tags-access-control#definitions)
1915
+ for more details.
1916
+ """
1917
+ return pulumi.get(self, "resource_tags")
1918
+
1844
1919
  @property
1845
1920
  @pulumi.getter(name="selfLink")
1846
1921
  def self_link(self) -> pulumi.Output[str]:
@@ -22,7 +22,7 @@ class GetDatasetResult:
22
22
  """
23
23
  A collection of values returned by getDataset.
24
24
  """
25
- def __init__(__self__, accesses=None, creation_time=None, dataset_id=None, default_collation=None, default_encryption_configurations=None, default_partition_expiration_ms=None, default_table_expiration_ms=None, delete_contents_on_destroy=None, description=None, effective_labels=None, etag=None, external_dataset_references=None, friendly_name=None, id=None, is_case_insensitive=None, labels=None, last_modified_time=None, location=None, max_time_travel_hours=None, project=None, pulumi_labels=None, self_link=None, storage_billing_model=None):
25
+ def __init__(__self__, accesses=None, creation_time=None, dataset_id=None, default_collation=None, default_encryption_configurations=None, default_partition_expiration_ms=None, default_table_expiration_ms=None, delete_contents_on_destroy=None, description=None, effective_labels=None, etag=None, external_dataset_references=None, friendly_name=None, id=None, is_case_insensitive=None, labels=None, last_modified_time=None, location=None, max_time_travel_hours=None, project=None, pulumi_labels=None, resource_tags=None, self_link=None, storage_billing_model=None):
26
26
  if accesses and not isinstance(accesses, list):
27
27
  raise TypeError("Expected argument 'accesses' to be a list")
28
28
  pulumi.set(__self__, "accesses", accesses)
@@ -86,6 +86,9 @@ class GetDatasetResult:
86
86
  if pulumi_labels and not isinstance(pulumi_labels, dict):
87
87
  raise TypeError("Expected argument 'pulumi_labels' to be a dict")
88
88
  pulumi.set(__self__, "pulumi_labels", pulumi_labels)
89
+ if resource_tags and not isinstance(resource_tags, dict):
90
+ raise TypeError("Expected argument 'resource_tags' to be a dict")
91
+ pulumi.set(__self__, "resource_tags", resource_tags)
89
92
  if self_link and not isinstance(self_link, str):
90
93
  raise TypeError("Expected argument 'self_link' to be a str")
91
94
  pulumi.set(__self__, "self_link", self_link)
@@ -201,6 +204,11 @@ class GetDatasetResult:
201
204
  def pulumi_labels(self) -> Mapping[str, str]:
202
205
  return pulumi.get(self, "pulumi_labels")
203
206
 
207
+ @property
208
+ @pulumi.getter(name="resourceTags")
209
+ def resource_tags(self) -> Mapping[str, str]:
210
+ return pulumi.get(self, "resource_tags")
211
+
204
212
  @property
205
213
  @pulumi.getter(name="selfLink")
206
214
  def self_link(self) -> str:
@@ -239,6 +247,7 @@ class AwaitableGetDatasetResult(GetDatasetResult):
239
247
  max_time_travel_hours=self.max_time_travel_hours,
240
248
  project=self.project,
241
249
  pulumi_labels=self.pulumi_labels,
250
+ resource_tags=self.resource_tags,
242
251
  self_link=self.self_link,
243
252
  storage_billing_model=self.storage_billing_model)
244
253
 
@@ -294,6 +303,7 @@ def get_dataset(dataset_id: Optional[str] = None,
294
303
  max_time_travel_hours=pulumi.get(__ret__, 'max_time_travel_hours'),
295
304
  project=pulumi.get(__ret__, 'project'),
296
305
  pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'),
306
+ resource_tags=pulumi.get(__ret__, 'resource_tags'),
297
307
  self_link=pulumi.get(__ret__, 'self_link'),
298
308
  storage_billing_model=pulumi.get(__ret__, 'storage_billing_model'))
299
309
 
@@ -581,7 +581,7 @@ class Job(pulumi.CustomResource):
581
581
  source_format="NEWLINE_DELIMITED_JSON",
582
582
  json_extension="GEOJSON",
583
583
  ),
584
- opts=pulumi.ResourceOptions(depends_on=[object]))
584
+ opts = pulumi.ResourceOptions(depends_on=[object]))
585
585
  ```
586
586
  ### Bigquery Job Load Parquet
587
587
 
@@ -710,7 +710,7 @@ class Job(pulumi.CustomResource):
710
710
  encryption_configuration=gcp.bigquery.TableEncryptionConfigurationArgs(
711
711
  kms_key_name=crypto_key.id,
712
712
  ),
713
- opts=pulumi.ResourceOptions(depends_on=[encrypt_role]))
713
+ opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))
714
714
  job = gcp.bigquery.Job("job",
715
715
  job_id="job_copy",
716
716
  copy=gcp.bigquery.JobCopyArgs(
@@ -735,7 +735,7 @@ class Job(pulumi.CustomResource):
735
735
  kms_key_name=crypto_key.id,
736
736
  ),
737
737
  ),
738
- opts=pulumi.ResourceOptions(depends_on=[encrypt_role]))
738
+ opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))
739
739
  ```
740
740
  ### Bigquery Job Extract
741
741
 
@@ -1009,7 +1009,7 @@ class Job(pulumi.CustomResource):
1009
1009
  source_format="NEWLINE_DELIMITED_JSON",
1010
1010
  json_extension="GEOJSON",
1011
1011
  ),
1012
- opts=pulumi.ResourceOptions(depends_on=[object]))
1012
+ opts = pulumi.ResourceOptions(depends_on=[object]))
1013
1013
  ```
1014
1014
  ### Bigquery Job Load Parquet
1015
1015
 
@@ -1138,7 +1138,7 @@ class Job(pulumi.CustomResource):
1138
1138
  encryption_configuration=gcp.bigquery.TableEncryptionConfigurationArgs(
1139
1139
  kms_key_name=crypto_key.id,
1140
1140
  ),
1141
- opts=pulumi.ResourceOptions(depends_on=[encrypt_role]))
1141
+ opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))
1142
1142
  job = gcp.bigquery.Job("job",
1143
1143
  job_id="job_copy",
1144
1144
  copy=gcp.bigquery.JobCopyArgs(
@@ -1163,7 +1163,7 @@ class Job(pulumi.CustomResource):
1163
1163
  kms_key_name=crypto_key.id,
1164
1164
  ),
1165
1165
  ),
1166
- opts=pulumi.ResourceOptions(depends_on=[encrypt_role]))
1166
+ opts = pulumi.ResourceOptions(depends_on=[encrypt_role]))
1167
1167
  ```
1168
1168
  ### Bigquery Job Extract
1169
1169
 
@@ -581,6 +581,7 @@ class ConnectionCloudSpanner(dict):
581
581
 
582
582
  @property
583
583
  @pulumi.getter(name="useServerlessAnalytics")
584
+ @_utilities.deprecated("""`useServerlessAnalytics` is deprecated and will be removed in a future major release. Use `useDataBoost` instead.""")
584
585
  def use_serverless_analytics(self) -> Optional[bool]:
585
586
  """
586
587
  (Optional, Deprecated)
@@ -588,9 +589,6 @@ class ConnectionCloudSpanner(dict):
588
589
 
589
590
  > **Warning:** `useServerlessAnalytics` is deprecated and will be removed in a future major release. Use `useDataBoost` instead.
590
591
  """
591
- warnings.warn("""`useServerlessAnalytics` is deprecated and will be removed in a future major release. Use `useDataBoost` instead.""", DeprecationWarning)
592
- pulumi.log.warn("""use_serverless_analytics is deprecated: `useServerlessAnalytics` is deprecated and will be removed in a future major release. Use `useDataBoost` instead.""")
593
-
594
592
  return pulumi.get(self, "use_serverless_analytics")
595
593
 
596
594
 
@@ -5905,6 +5903,7 @@ class TableTimePartitioning(dict):
5905
5903
 
5906
5904
  @property
5907
5905
  @pulumi.getter(name="requirePartitionFilter")
5906
+ @_utilities.deprecated("""This field is deprecated and will be removed in a future major release; please use the top level field with the same name instead.""")
5908
5907
  def require_partition_filter(self) -> Optional[bool]:
5909
5908
  """
5910
5909
  If set to true, queries over this table
@@ -5912,9 +5911,6 @@ class TableTimePartitioning(dict):
5912
5911
  specified. `require_partition_filter` is deprecated and will be removed in
5913
5912
  a future major release. Use the top level field with the same name instead.
5914
5913
  """
5915
- warnings.warn("""This field is deprecated and will be removed in a future major release; please use the top level field with the same name instead.""", DeprecationWarning)
5916
- pulumi.log.warn("""require_partition_filter is deprecated: This field is deprecated and will be removed in a future major release; please use the top level field with the same name instead.""")
5917
-
5918
5914
  return pulumi.get(self, "require_partition_filter")
5919
5915
 
5920
5916
 
@@ -144,13 +144,11 @@ class GCPolicyMaxAgeArgs:
144
144
 
145
145
  @property
146
146
  @pulumi.getter
147
+ @_utilities.deprecated("""Deprecated in favor of duration""")
147
148
  def days(self) -> Optional[pulumi.Input[int]]:
148
149
  """
149
150
  Number of days before applying GC policy.
150
151
  """
151
- warnings.warn("""Deprecated in favor of duration""", DeprecationWarning)
152
- pulumi.log.warn("""days is deprecated: Deprecated in favor of duration""")
153
-
154
152
  return pulumi.get(self, "days")
155
153
 
156
154
  @days.setter
@@ -123,6 +123,7 @@ class InstanceArgs:
123
123
 
124
124
  @property
125
125
  @pulumi.getter(name="instanceType")
126
+ @_utilities.deprecated("""It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""")
126
127
  def instance_type(self) -> Optional[pulumi.Input[str]]:
127
128
  """
128
129
  The instance type to create. One of `"DEVELOPMENT"` or `"PRODUCTION"`. Defaults to `"PRODUCTION"`.
@@ -131,9 +132,6 @@ class InstanceArgs:
131
132
  `"PRODUCTION"` instances. It is recommended for users to use `"PRODUCTION"` instances in any case, since a 1-node `"PRODUCTION"` instance
132
133
  is functionally identical to a `"DEVELOPMENT"` instance, but without the accompanying restrictions.
133
134
  """
134
- warnings.warn("""It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""", DeprecationWarning)
135
- pulumi.log.warn("""instance_type is deprecated: It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""")
136
-
137
135
  return pulumi.get(self, "instance_type")
138
136
 
139
137
  @instance_type.setter
@@ -315,6 +313,7 @@ class _InstanceState:
315
313
 
316
314
  @property
317
315
  @pulumi.getter(name="instanceType")
316
+ @_utilities.deprecated("""It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""")
318
317
  def instance_type(self) -> Optional[pulumi.Input[str]]:
319
318
  """
320
319
  The instance type to create. One of `"DEVELOPMENT"` or `"PRODUCTION"`. Defaults to `"PRODUCTION"`.
@@ -323,9 +322,6 @@ class _InstanceState:
323
322
  `"PRODUCTION"` instances. It is recommended for users to use `"PRODUCTION"` instances in any case, since a 1-node `"PRODUCTION"` instance
324
323
  is functionally identical to a `"DEVELOPMENT"` instance, but without the accompanying restrictions.
325
324
  """
326
- warnings.warn("""It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""", DeprecationWarning)
327
- pulumi.log.warn("""instance_type is deprecated: It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""")
328
-
329
325
  return pulumi.get(self, "instance_type")
330
326
 
331
327
  @instance_type.setter
@@ -773,6 +769,7 @@ class Instance(pulumi.CustomResource):
773
769
 
774
770
  @property
775
771
  @pulumi.getter(name="instanceType")
772
+ @_utilities.deprecated("""It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""")
776
773
  def instance_type(self) -> pulumi.Output[Optional[str]]:
777
774
  """
778
775
  The instance type to create. One of `"DEVELOPMENT"` or `"PRODUCTION"`. Defaults to `"PRODUCTION"`.
@@ -781,9 +778,6 @@ class Instance(pulumi.CustomResource):
781
778
  `"PRODUCTION"` instances. It is recommended for users to use `"PRODUCTION"` instances in any case, since a 1-node `"PRODUCTION"` instance
782
779
  is functionally identical to a `"DEVELOPMENT"` instance, but without the accompanying restrictions.
783
780
  """
784
- warnings.warn("""It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""", DeprecationWarning)
785
- pulumi.log.warn("""instance_type is deprecated: It is recommended to leave this field unspecified since the distinction between \"DEVELOPMENT\" and \"PRODUCTION\" instances is going away, and all instances will become \"PRODUCTION\" instances. This means that new and existing \"DEVELOPMENT\" instances will be converted to \"PRODUCTION\" instances. It is recommended for users to use \"PRODUCTION\" instances in any case, since a 1-node \"PRODUCTION\" instance is functionally identical to a \"DEVELOPMENT\" instance, but without the accompanying restrictions.""")
786
-
787
781
  return pulumi.get(self, "instance_type")
788
782
 
789
783
  @property
@@ -160,13 +160,11 @@ class GCPolicyMaxAge(dict):
160
160
 
161
161
  @property
162
162
  @pulumi.getter
163
+ @_utilities.deprecated("""Deprecated in favor of duration""")
163
164
  def days(self) -> Optional[int]:
164
165
  """
165
166
  Number of days before applying GC policy.
166
167
  """
167
- warnings.warn("""Deprecated in favor of duration""", DeprecationWarning)
168
- pulumi.log.warn("""days is deprecated: Deprecated in favor of duration""")
169
-
170
168
  return pulumi.get(self, "days")
171
169
 
172
170
  @property
@@ -104,6 +104,7 @@ class AccountIamMemberConditionArgs:
104
104
  class BudgetAllUpdatesRuleArgs:
105
105
  def __init__(__self__, *,
106
106
  disable_default_iam_recipients: Optional[pulumi.Input[bool]] = None,
107
+ enable_project_level_recipients: Optional[pulumi.Input[bool]] = None,
107
108
  monitoring_notification_channels: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
108
109
  pubsub_topic: Optional[pulumi.Input[str]] = None,
109
110
  schema_version: Optional[pulumi.Input[str]] = None):
@@ -112,6 +113,10 @@ class BudgetAllUpdatesRuleArgs:
112
113
  when a threshold is exceeded. Default recipients are
113
114
  those with Billing Account Administrators and Billing
114
115
  Account Users IAM roles for the target account.
116
+ :param pulumi.Input[bool] enable_project_level_recipients: When set to true, and when the budget has a single project configured,
117
+ notifications will be sent to project level recipients of that project.
118
+ This field will be ignored if the budget has multiple or no project configured.
119
+ Currently, project level recipients are the users with Owner role on a cloud project.
115
120
  :param pulumi.Input[Sequence[pulumi.Input[str]]] monitoring_notification_channels: The full resource name of a monitoring notification
116
121
  channel in the form
117
122
  projects/{project_id}/notificationChannels/{channel_id}.
@@ -126,6 +131,8 @@ class BudgetAllUpdatesRuleArgs:
126
131
  """
127
132
  if disable_default_iam_recipients is not None:
128
133
  pulumi.set(__self__, "disable_default_iam_recipients", disable_default_iam_recipients)
134
+ if enable_project_level_recipients is not None:
135
+ pulumi.set(__self__, "enable_project_level_recipients", enable_project_level_recipients)
129
136
  if monitoring_notification_channels is not None:
130
137
  pulumi.set(__self__, "monitoring_notification_channels", monitoring_notification_channels)
131
138
  if pubsub_topic is not None:
@@ -148,6 +155,21 @@ class BudgetAllUpdatesRuleArgs:
148
155
  def disable_default_iam_recipients(self, value: Optional[pulumi.Input[bool]]):
149
156
  pulumi.set(self, "disable_default_iam_recipients", value)
150
157
 
158
+ @property
159
+ @pulumi.getter(name="enableProjectLevelRecipients")
160
+ def enable_project_level_recipients(self) -> Optional[pulumi.Input[bool]]:
161
+ """
162
+ When set to true, and when the budget has a single project configured,
163
+ notifications will be sent to project level recipients of that project.
164
+ This field will be ignored if the budget has multiple or no project configured.
165
+ Currently, project level recipients are the users with Owner role on a cloud project.
166
+ """
167
+ return pulumi.get(self, "enable_project_level_recipients")
168
+
169
+ @enable_project_level_recipients.setter
170
+ def enable_project_level_recipients(self, value: Optional[pulumi.Input[bool]]):
171
+ pulumi.set(self, "enable_project_level_recipients", value)
172
+
151
173
  @property
152
174
  @pulumi.getter(name="monitoringNotificationChannels")
153
175
  def monitoring_notification_channels(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
@@ -435,6 +435,31 @@ class Budget(pulumi.CustomResource):
435
435
  disable_default_iam_recipients=True,
436
436
  ))
437
437
  ```
438
+ ### Billing Budget Notify Project Recipient
439
+
440
+ ```python
441
+ import pulumi
442
+ import pulumi_gcp as gcp
443
+
444
+ account = gcp.organizations.get_billing_account(billing_account="000000-0000000-0000000-000000")
445
+ project = gcp.organizations.get_project()
446
+ budget = gcp.billing.Budget("budget",
447
+ billing_account=account.id,
448
+ display_name="Example Billing Budget",
449
+ budget_filter=gcp.billing.BudgetBudgetFilterArgs(
450
+ projects=[f"projects/{project.number}"],
451
+ ),
452
+ amount=gcp.billing.BudgetAmountArgs(
453
+ specified_amount=gcp.billing.BudgetAmountSpecifiedAmountArgs(
454
+ currency_code="USD",
455
+ units="100000",
456
+ ),
457
+ ),
458
+ all_updates_rule=gcp.billing.BudgetAllUpdatesRuleArgs(
459
+ monitoring_notification_channels=[],
460
+ enable_project_level_recipients=True,
461
+ ))
462
+ ```
438
463
  ### Billing Budget Customperiod
439
464
 
440
465
  ```python
@@ -658,6 +683,31 @@ class Budget(pulumi.CustomResource):
658
683
  disable_default_iam_recipients=True,
659
684
  ))
660
685
  ```
686
+ ### Billing Budget Notify Project Recipient
687
+
688
+ ```python
689
+ import pulumi
690
+ import pulumi_gcp as gcp
691
+
692
+ account = gcp.organizations.get_billing_account(billing_account="000000-0000000-0000000-000000")
693
+ project = gcp.organizations.get_project()
694
+ budget = gcp.billing.Budget("budget",
695
+ billing_account=account.id,
696
+ display_name="Example Billing Budget",
697
+ budget_filter=gcp.billing.BudgetBudgetFilterArgs(
698
+ projects=[f"projects/{project.number}"],
699
+ ),
700
+ amount=gcp.billing.BudgetAmountArgs(
701
+ specified_amount=gcp.billing.BudgetAmountSpecifiedAmountArgs(
702
+ currency_code="USD",
703
+ units="100000",
704
+ ),
705
+ ),
706
+ all_updates_rule=gcp.billing.BudgetAllUpdatesRuleArgs(
707
+ monitoring_notification_channels=[],
708
+ enable_project_level_recipients=True,
709
+ ))
710
+ ```
661
711
  ### Billing Budget Customperiod
662
712
 
663
713
  ```python
@@ -84,6 +84,8 @@ class BudgetAllUpdatesRule(dict):
84
84
  suggest = None
85
85
  if key == "disableDefaultIamRecipients":
86
86
  suggest = "disable_default_iam_recipients"
87
+ elif key == "enableProjectLevelRecipients":
88
+ suggest = "enable_project_level_recipients"
87
89
  elif key == "monitoringNotificationChannels":
88
90
  suggest = "monitoring_notification_channels"
89
91
  elif key == "pubsubTopic":
@@ -104,6 +106,7 @@ class BudgetAllUpdatesRule(dict):
104
106
 
105
107
  def __init__(__self__, *,
106
108
  disable_default_iam_recipients: Optional[bool] = None,
109
+ enable_project_level_recipients: Optional[bool] = None,
107
110
  monitoring_notification_channels: Optional[Sequence[str]] = None,
108
111
  pubsub_topic: Optional[str] = None,
109
112
  schema_version: Optional[str] = None):
@@ -112,6 +115,10 @@ class BudgetAllUpdatesRule(dict):
112
115
  when a threshold is exceeded. Default recipients are
113
116
  those with Billing Account Administrators and Billing
114
117
  Account Users IAM roles for the target account.
118
+ :param bool enable_project_level_recipients: When set to true, and when the budget has a single project configured,
119
+ notifications will be sent to project level recipients of that project.
120
+ This field will be ignored if the budget has multiple or no project configured.
121
+ Currently, project level recipients are the users with Owner role on a cloud project.
115
122
  :param Sequence[str] monitoring_notification_channels: The full resource name of a monitoring notification
116
123
  channel in the form
117
124
  projects/{project_id}/notificationChannels/{channel_id}.
@@ -126,6 +133,8 @@ class BudgetAllUpdatesRule(dict):
126
133
  """
127
134
  if disable_default_iam_recipients is not None:
128
135
  pulumi.set(__self__, "disable_default_iam_recipients", disable_default_iam_recipients)
136
+ if enable_project_level_recipients is not None:
137
+ pulumi.set(__self__, "enable_project_level_recipients", enable_project_level_recipients)
129
138
  if monitoring_notification_channels is not None:
130
139
  pulumi.set(__self__, "monitoring_notification_channels", monitoring_notification_channels)
131
140
  if pubsub_topic is not None:
@@ -144,6 +153,17 @@ class BudgetAllUpdatesRule(dict):
144
153
  """
145
154
  return pulumi.get(self, "disable_default_iam_recipients")
146
155
 
156
+ @property
157
+ @pulumi.getter(name="enableProjectLevelRecipients")
158
+ def enable_project_level_recipients(self) -> Optional[bool]:
159
+ """
160
+ When set to true, and when the budget has a single project configured,
161
+ notifications will be sent to project level recipients of that project.
162
+ This field will be ignored if the budget has multiple or no project configured.
163
+ Currently, project level recipients are the users with Owner role on a cloud project.
164
+ """
165
+ return pulumi.get(self, "enable_project_level_recipients")
166
+
147
167
  @property
148
168
  @pulumi.getter(name="monitoringNotificationChannels")
149
169
  def monitoring_notification_channels(self) -> Optional[Sequence[str]]:
@@ -974,7 +974,7 @@ class Authority(pulumi.CustomResource):
974
974
  ),
975
975
  ),
976
976
  ),
977
- opts=pulumi.ResourceOptions(depends_on=[
977
+ opts = pulumi.ResourceOptions(depends_on=[
978
978
  privateca_sa_keyuser_signerverifier,
979
979
  privateca_sa_keyuser_viewer,
980
980
  ]))
@@ -1315,7 +1315,7 @@ class Authority(pulumi.CustomResource):
1315
1315
  ),
1316
1316
  ),
1317
1317
  ),
1318
- opts=pulumi.ResourceOptions(depends_on=[
1318
+ opts = pulumi.ResourceOptions(depends_on=[
1319
1319
  privateca_sa_keyuser_signerverifier,
1320
1320
  privateca_sa_keyuser_viewer,
1321
1321
  ]))
@@ -967,7 +967,7 @@ class Certificate(pulumi.CustomResource):
967
967
  key=std.filebase64(input="test-fixtures/rsa_public.pem").result,
968
968
  ),
969
969
  ),
970
- opts=pulumi.ResourceOptions(depends_on=[default_authority]))
970
+ opts = pulumi.ResourceOptions(depends_on=[default_authority]))
971
971
  ```
972
972
  ### Privateca Certificate Custom Ski
973
973
 
@@ -1056,7 +1056,7 @@ class Certificate(pulumi.CustomResource):
1056
1056
  key=std.filebase64(input="test-fixtures/rsa_public.pem").result,
1057
1057
  ),
1058
1058
  ),
1059
- opts=pulumi.ResourceOptions(depends_on=[default_authority]))
1059
+ opts = pulumi.ResourceOptions(depends_on=[default_authority]))
1060
1060
  ```
1061
1061
 
1062
1062
  ## Import
@@ -1496,7 +1496,7 @@ class Certificate(pulumi.CustomResource):
1496
1496
  key=std.filebase64(input="test-fixtures/rsa_public.pem").result,
1497
1497
  ),
1498
1498
  ),
1499
- opts=pulumi.ResourceOptions(depends_on=[default_authority]))
1499
+ opts = pulumi.ResourceOptions(depends_on=[default_authority]))
1500
1500
  ```
1501
1501
  ### Privateca Certificate Custom Ski
1502
1502
 
@@ -1585,7 +1585,7 @@ class Certificate(pulumi.CustomResource):
1585
1585
  key=std.filebase64(input="test-fixtures/rsa_public.pem").result,
1586
1586
  ),
1587
1587
  ),
1588
- opts=pulumi.ResourceOptions(depends_on=[default_authority]))
1588
+ opts = pulumi.ResourceOptions(depends_on=[default_authority]))
1589
1589
  ```
1590
1590
 
1591
1591
  ## Import