pulumi-gcp 8.1.0a1726293903__py3-none-any.whl → 8.2.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 (128) hide show
  1. pulumi_gcp/__init__.py +62 -0
  2. pulumi_gcp/alloydb/_inputs.py +94 -0
  3. pulumi_gcp/alloydb/cluster.py +94 -1
  4. pulumi_gcp/alloydb/outputs.py +79 -0
  5. pulumi_gcp/assuredworkloads/workload.py +135 -16
  6. pulumi_gcp/backupdisasterrecovery/__init__.py +1 -0
  7. pulumi_gcp/backupdisasterrecovery/backup_vault.py +1203 -0
  8. pulumi_gcp/bigquery/__init__.py +1 -0
  9. pulumi_gcp/bigquery/_inputs.py +33 -0
  10. pulumi_gcp/bigquery/data_transfer_config.py +134 -6
  11. pulumi_gcp/bigquery/get_tables.py +143 -0
  12. pulumi_gcp/bigquery/outputs.py +66 -0
  13. pulumi_gcp/bigqueryanalyticshub/_inputs.py +169 -7
  14. pulumi_gcp/bigqueryanalyticshub/data_exchange.py +96 -3
  15. pulumi_gcp/bigqueryanalyticshub/listing.py +114 -0
  16. pulumi_gcp/bigqueryanalyticshub/outputs.py +138 -5
  17. pulumi_gcp/bigtable/_inputs.py +21 -1
  18. pulumi_gcp/bigtable/outputs.py +13 -1
  19. pulumi_gcp/bigtable/table.py +34 -0
  20. pulumi_gcp/certificateauthority/authority.py +14 -7
  21. pulumi_gcp/certificatemanager/__init__.py +1 -0
  22. pulumi_gcp/certificatemanager/certificate.py +28 -0
  23. pulumi_gcp/certificatemanager/get_certificates.py +150 -0
  24. pulumi_gcp/certificatemanager/outputs.py +322 -0
  25. pulumi_gcp/cloudbuild/_inputs.py +6 -6
  26. pulumi_gcp/cloudbuild/outputs.py +4 -4
  27. pulumi_gcp/cloudrun/_inputs.py +6 -12
  28. pulumi_gcp/cloudrun/outputs.py +8 -16
  29. pulumi_gcp/cloudrunv2/_inputs.py +72 -15
  30. pulumi_gcp/cloudrunv2/outputs.py +82 -16
  31. pulumi_gcp/cloudrunv2/service.py +50 -4
  32. pulumi_gcp/cloudtasks/_inputs.py +630 -0
  33. pulumi_gcp/cloudtasks/outputs.py +479 -0
  34. pulumi_gcp/cloudtasks/queue.py +238 -0
  35. pulumi_gcp/compute/__init__.py +1 -0
  36. pulumi_gcp/compute/_inputs.py +2300 -257
  37. pulumi_gcp/compute/get_instance.py +4 -1
  38. pulumi_gcp/compute/health_check.py +114 -0
  39. pulumi_gcp/compute/instance.py +86 -4
  40. pulumi_gcp/compute/instance_template.py +66 -0
  41. pulumi_gcp/compute/interconnect.py +28 -21
  42. pulumi_gcp/compute/network_firewall_policy_with_rules.py +826 -0
  43. pulumi_gcp/compute/node_template.py +93 -0
  44. pulumi_gcp/compute/outputs.py +1491 -6
  45. pulumi_gcp/compute/region_target_http_proxy.py +159 -0
  46. pulumi_gcp/compute/region_target_https_proxy.py +175 -0
  47. pulumi_gcp/compute/service_attachment.py +75 -0
  48. pulumi_gcp/compute/target_http_proxy.py +49 -28
  49. pulumi_gcp/compute/target_https_proxy.py +77 -28
  50. pulumi_gcp/config/__init__.pyi +4 -0
  51. pulumi_gcp/config/vars.py +8 -0
  52. pulumi_gcp/container/_inputs.py +236 -3
  53. pulumi_gcp/container/attached_cluster.py +61 -8
  54. pulumi_gcp/container/outputs.py +276 -2
  55. pulumi_gcp/databasemigrationservice/_inputs.py +176 -148
  56. pulumi_gcp/databasemigrationservice/connection_profile.py +206 -0
  57. pulumi_gcp/databasemigrationservice/outputs.py +109 -87
  58. pulumi_gcp/dataloss/_inputs.py +353 -1
  59. pulumi_gcp/dataloss/outputs.py +274 -3
  60. pulumi_gcp/dataproc/_inputs.py +27 -27
  61. pulumi_gcp/dataproc/metastore_federation.py +8 -8
  62. pulumi_gcp/dataproc/metastore_service.py +2 -0
  63. pulumi_gcp/dataproc/outputs.py +18 -18
  64. pulumi_gcp/datastream/_inputs.py +69 -1
  65. pulumi_gcp/datastream/outputs.py +44 -2
  66. pulumi_gcp/datastream/stream.py +201 -7
  67. pulumi_gcp/developerconnect/__init__.py +11 -0
  68. pulumi_gcp/developerconnect/_inputs.py +301 -0
  69. pulumi_gcp/developerconnect/connection.py +1034 -0
  70. pulumi_gcp/developerconnect/git_repository_link.py +873 -0
  71. pulumi_gcp/developerconnect/outputs.py +247 -0
  72. pulumi_gcp/discoveryengine/_inputs.py +188 -0
  73. pulumi_gcp/discoveryengine/data_store.py +14 -14
  74. pulumi_gcp/discoveryengine/outputs.py +153 -1
  75. pulumi_gcp/firebase/database_instance.py +7 -7
  76. pulumi_gcp/gkehub/_inputs.py +25 -1
  77. pulumi_gcp/gkehub/feature_membership.py +12 -6
  78. pulumi_gcp/gkehub/outputs.py +17 -1
  79. pulumi_gcp/gkeonprem/_inputs.py +3 -3
  80. pulumi_gcp/gkeonprem/outputs.py +2 -2
  81. pulumi_gcp/iam/_inputs.py +196 -0
  82. pulumi_gcp/iam/get_workload_identity_pool_provider.py +13 -3
  83. pulumi_gcp/iam/outputs.py +295 -0
  84. pulumi_gcp/iam/workload_identity_pool_provider.py +164 -3
  85. pulumi_gcp/kms/__init__.py +2 -0
  86. pulumi_gcp/kms/autokey_config.py +10 -2
  87. pulumi_gcp/kms/get_crypto_key_latest_version.py +222 -0
  88. pulumi_gcp/kms/get_crypto_key_versions.py +175 -0
  89. pulumi_gcp/kms/outputs.py +164 -0
  90. pulumi_gcp/memorystore/__init__.py +10 -0
  91. pulumi_gcp/memorystore/_inputs.py +731 -0
  92. pulumi_gcp/memorystore/instance.py +1663 -0
  93. pulumi_gcp/memorystore/outputs.py +598 -0
  94. pulumi_gcp/netapp/active_directory.py +6 -6
  95. pulumi_gcp/netapp/backup.py +6 -6
  96. pulumi_gcp/netapp/backup_policy.py +6 -6
  97. pulumi_gcp/netapp/backup_vault.py +6 -6
  98. pulumi_gcp/netapp/storage_pool.py +4 -4
  99. pulumi_gcp/netapp/volume.py +108 -0
  100. pulumi_gcp/networkconnectivity/_inputs.py +21 -1
  101. pulumi_gcp/networkconnectivity/outputs.py +15 -1
  102. pulumi_gcp/networkconnectivity/spoke.py +8 -0
  103. pulumi_gcp/networksecurity/client_tls_policy.py +24 -22
  104. pulumi_gcp/networksecurity/server_tls_policy.py +20 -32
  105. pulumi_gcp/organizations/folder.py +52 -33
  106. pulumi_gcp/organizations/get_project.py +13 -3
  107. pulumi_gcp/organizations/project.py +88 -3
  108. pulumi_gcp/parallelstore/instance.py +121 -121
  109. pulumi_gcp/projects/iam_member_remove.py +26 -0
  110. pulumi_gcp/projects/usage_export_bucket.py +38 -0
  111. pulumi_gcp/provider.py +40 -0
  112. pulumi_gcp/pubsub/_inputs.py +40 -0
  113. pulumi_gcp/pubsub/outputs.py +51 -1
  114. pulumi_gcp/pubsub/subscription.py +6 -0
  115. pulumi_gcp/pulumi-plugin.json +1 -1
  116. pulumi_gcp/redis/_inputs.py +419 -0
  117. pulumi_gcp/redis/cluster.py +123 -0
  118. pulumi_gcp/redis/outputs.py +315 -0
  119. pulumi_gcp/securitycenter/__init__.py +2 -0
  120. pulumi_gcp/securitycenter/v2_folder_scc_big_query_export.py +857 -0
  121. pulumi_gcp/securitycenter/v2_organization_scc_big_query_exports.py +4 -4
  122. pulumi_gcp/securitycenter/v2_project_mute_config.py +2 -2
  123. pulumi_gcp/securitycenter/v2_project_scc_big_query_export.py +796 -0
  124. pulumi_gcp/vpcaccess/connector.py +21 -28
  125. {pulumi_gcp-8.1.0a1726293903.dist-info → pulumi_gcp-8.2.0.dist-info}/METADATA +1 -1
  126. {pulumi_gcp-8.1.0a1726293903.dist-info → pulumi_gcp-8.2.0.dist-info}/RECORD +128 -111
  127. {pulumi_gcp-8.1.0a1726293903.dist-info → pulumi_gcp-8.2.0.dist-info}/WHEEL +1 -1
  128. {pulumi_gcp-8.1.0a1726293903.dist-info → pulumi_gcp-8.2.0.dist-info}/top_level.txt +0 -0
@@ -407,6 +407,14 @@ class ClientTlsPolicy(pulumi.CustomResource):
407
407
  sni: Optional[pulumi.Input[str]] = None,
408
408
  __props__=None):
409
409
  """
410
+ ClientTlsPolicy is a resource that specifies how a client should authenticate connections to backends of a service. This resource itself does not affect configuration unless it is attached to a backend service resource.
411
+
412
+ To get more information about ClientTlsPolicy, see:
413
+
414
+ * [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-security/rest/v1beta1/projects.locations.clientTlsPolicies)
415
+ * How-to Guides
416
+ * [Service Security](https://cloud.google.com/traffic-director/docs/security-use-cases)
417
+
410
418
  ## Example Usage
411
419
 
412
420
  ### Network Security Client Tls Policy Basic
@@ -440,18 +448,11 @@ class ClientTlsPolicy(pulumi.CustomResource):
440
448
  "plugin_instance": "google_cloud_private_spiffe",
441
449
  },
442
450
  },
443
- server_validation_cas=[
444
- {
445
- "grpc_endpoint": {
446
- "target_uri": "unix:mypath",
447
- },
448
- },
449
- {
450
- "grpc_endpoint": {
451
- "target_uri": "unix:mypath1",
452
- },
451
+ server_validation_cas=[{
452
+ "grpc_endpoint": {
453
+ "target_uri": "unix:mypath",
453
454
  },
454
- ])
455
+ }])
455
456
  ```
456
457
 
457
458
  ## Import
@@ -505,6 +506,14 @@ class ClientTlsPolicy(pulumi.CustomResource):
505
506
  args: Optional[ClientTlsPolicyArgs] = None,
506
507
  opts: Optional[pulumi.ResourceOptions] = None):
507
508
  """
509
+ ClientTlsPolicy is a resource that specifies how a client should authenticate connections to backends of a service. This resource itself does not affect configuration unless it is attached to a backend service resource.
510
+
511
+ To get more information about ClientTlsPolicy, see:
512
+
513
+ * [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-security/rest/v1beta1/projects.locations.clientTlsPolicies)
514
+ * How-to Guides
515
+ * [Service Security](https://cloud.google.com/traffic-director/docs/security-use-cases)
516
+
508
517
  ## Example Usage
509
518
 
510
519
  ### Network Security Client Tls Policy Basic
@@ -538,18 +547,11 @@ class ClientTlsPolicy(pulumi.CustomResource):
538
547
  "plugin_instance": "google_cloud_private_spiffe",
539
548
  },
540
549
  },
541
- server_validation_cas=[
542
- {
543
- "grpc_endpoint": {
544
- "target_uri": "unix:mypath",
545
- },
546
- },
547
- {
548
- "grpc_endpoint": {
549
- "target_uri": "unix:mypath1",
550
- },
550
+ server_validation_cas=[{
551
+ "grpc_endpoint": {
552
+ "target_uri": "unix:mypath",
551
553
  },
552
- ])
554
+ }])
553
555
  ```
554
556
 
555
557
  ## Import
@@ -419,6 +419,12 @@ class ServerTlsPolicy(pulumi.CustomResource):
419
419
  server_certificate: Optional[pulumi.Input[Union['ServerTlsPolicyServerCertificateArgs', 'ServerTlsPolicyServerCertificateArgsDict']]] = None,
420
420
  __props__=None):
421
421
  """
422
+ ClientTlsPolicy is a resource that specifies how a client should authenticate connections to backends of a service. This resource itself does not affect configuration unless it is attached to a backend service resource.
423
+
424
+ To get more information about ServerTlsPolicy, see:
425
+
426
+ * [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-security/rest/v1beta1/projects.locations.serverTlsPolicies)
427
+
422
428
  ## Example Usage
423
429
 
424
430
  ### Network Security Server Tls Policy Basic
@@ -440,23 +446,11 @@ class ServerTlsPolicy(pulumi.CustomResource):
440
446
  },
441
447
  },
442
448
  mtls_policy={
443
- "client_validation_cas": [
444
- {
445
- "grpc_endpoint": {
446
- "target_uri": "unix:mypath",
447
- },
449
+ "client_validation_cas": [{
450
+ "grpc_endpoint": {
451
+ "target_uri": "unix:mypath",
448
452
  },
449
- {
450
- "grpc_endpoint": {
451
- "target_uri": "unix:abc/mypath",
452
- },
453
- },
454
- {
455
- "certificate_provider_instance": {
456
- "plugin_instance": "google_cloud_private_spiffe",
457
- },
458
- },
459
- ],
453
+ }],
460
454
  })
461
455
  ```
462
456
  ### Network Security Server Tls Policy Advanced
@@ -588,6 +582,12 @@ class ServerTlsPolicy(pulumi.CustomResource):
588
582
  args: Optional[ServerTlsPolicyArgs] = None,
589
583
  opts: Optional[pulumi.ResourceOptions] = None):
590
584
  """
585
+ ClientTlsPolicy is a resource that specifies how a client should authenticate connections to backends of a service. This resource itself does not affect configuration unless it is attached to a backend service resource.
586
+
587
+ To get more information about ServerTlsPolicy, see:
588
+
589
+ * [API documentation](https://cloud.google.com/traffic-director/docs/reference/network-security/rest/v1beta1/projects.locations.serverTlsPolicies)
590
+
591
591
  ## Example Usage
592
592
 
593
593
  ### Network Security Server Tls Policy Basic
@@ -609,23 +609,11 @@ class ServerTlsPolicy(pulumi.CustomResource):
609
609
  },
610
610
  },
611
611
  mtls_policy={
612
- "client_validation_cas": [
613
- {
614
- "grpc_endpoint": {
615
- "target_uri": "unix:mypath",
616
- },
612
+ "client_validation_cas": [{
613
+ "grpc_endpoint": {
614
+ "target_uri": "unix:mypath",
617
615
  },
618
- {
619
- "grpc_endpoint": {
620
- "target_uri": "unix:abc/mypath",
621
- },
622
- },
623
- {
624
- "certificate_provider_instance": {
625
- "plugin_instance": "google_cloud_private_spiffe",
626
- },
627
- },
628
- ],
616
+ }],
629
617
  })
630
618
  ```
631
619
  ### Network Security Server Tls Policy Advanced
@@ -21,18 +21,22 @@ class FolderArgs:
21
21
  def __init__(__self__, *,
22
22
  display_name: pulumi.Input[str],
23
23
  parent: pulumi.Input[str],
24
- deletion_protection: Optional[pulumi.Input[bool]] = None):
24
+ deletion_protection: Optional[pulumi.Input[bool]] = None,
25
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
25
26
  """
26
27
  The set of arguments for constructing a Folder resource.
27
28
  :param pulumi.Input[str] display_name: The folder’s display name.
28
29
  A folder’s display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters.
29
30
  :param pulumi.Input[str] parent: The resource name of the parent Folder or Organization.
30
31
  Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
32
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
31
33
  """
32
34
  pulumi.set(__self__, "display_name", display_name)
33
35
  pulumi.set(__self__, "parent", parent)
34
36
  if deletion_protection is not None:
35
37
  pulumi.set(__self__, "deletion_protection", deletion_protection)
38
+ if tags is not None:
39
+ pulumi.set(__self__, "tags", tags)
36
40
 
37
41
  @property
38
42
  @pulumi.getter(name="displayName")
@@ -69,6 +73,18 @@ class FolderArgs:
69
73
  def deletion_protection(self, value: Optional[pulumi.Input[bool]]):
70
74
  pulumi.set(self, "deletion_protection", value)
71
75
 
76
+ @property
77
+ @pulumi.getter
78
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
79
+ """
80
+ A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
81
+ """
82
+ return pulumi.get(self, "tags")
83
+
84
+ @tags.setter
85
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
86
+ pulumi.set(self, "tags", value)
87
+
72
88
 
73
89
  @pulumi.input_type
74
90
  class _FolderState:
@@ -79,7 +95,8 @@ class _FolderState:
79
95
  folder_id: Optional[pulumi.Input[str]] = None,
80
96
  lifecycle_state: Optional[pulumi.Input[str]] = None,
81
97
  name: Optional[pulumi.Input[str]] = None,
82
- parent: Optional[pulumi.Input[str]] = None):
98
+ parent: Optional[pulumi.Input[str]] = None,
99
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
83
100
  """
84
101
  Input properties used for looking up and filtering Folder resources.
85
102
  :param pulumi.Input[str] create_time: Timestamp when the Folder was created. Assigned by the server.
@@ -91,6 +108,7 @@ class _FolderState:
91
108
  :param pulumi.Input[str] name: The resource name of the Folder. Its format is folders/{folder_id}.
92
109
  :param pulumi.Input[str] parent: The resource name of the parent Folder or Organization.
93
110
  Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
111
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
94
112
  """
95
113
  if create_time is not None:
96
114
  pulumi.set(__self__, "create_time", create_time)
@@ -106,6 +124,8 @@ class _FolderState:
106
124
  pulumi.set(__self__, "name", name)
107
125
  if parent is not None:
108
126
  pulumi.set(__self__, "parent", parent)
127
+ if tags is not None:
128
+ pulumi.set(__self__, "tags", tags)
109
129
 
110
130
  @property
111
131
  @pulumi.getter(name="createTime")
@@ -191,6 +211,18 @@ class _FolderState:
191
211
  def parent(self, value: Optional[pulumi.Input[str]]):
192
212
  pulumi.set(self, "parent", value)
193
213
 
214
+ @property
215
+ @pulumi.getter
216
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
217
+ """
218
+ A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
219
+ """
220
+ return pulumi.get(self, "tags")
221
+
222
+ @tags.setter
223
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
224
+ pulumi.set(self, "tags", value)
225
+
194
226
 
195
227
  class Folder(pulumi.CustomResource):
196
228
  @overload
@@ -200,6 +232,7 @@ class Folder(pulumi.CustomResource):
200
232
  deletion_protection: Optional[pulumi.Input[bool]] = None,
201
233
  display_name: Optional[pulumi.Input[str]] = None,
202
234
  parent: Optional[pulumi.Input[str]] = None,
235
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
203
236
  __props__=None):
204
237
  """
205
238
  Allows management of a Google Cloud Platform folder. For more information see
@@ -216,21 +249,7 @@ class Folder(pulumi.CustomResource):
216
249
  [Access Control for Folders Using IAM](https://cloud.google.com/resource-manager/docs/access-control-folders)
217
250
  doc for more information.
218
251
 
219
- ## Example Usage
220
-
221
- ```python
222
- import pulumi
223
- import pulumi_gcp as gcp
224
-
225
- # Top-level folder under an organization.
226
- department1 = gcp.organizations.Folder("department1",
227
- display_name="Department 1",
228
- parent="organizations/1234567")
229
- # Folder nested under another folder.
230
- team_abc = gcp.organizations.Folder("team-abc",
231
- display_name="Team ABC",
232
- parent=department1.name)
233
- ```
252
+ > It may take a while for the attached tag bindings to be deleted after the folder is scheduled to be deleted.
234
253
 
235
254
  ## Import
236
255
 
@@ -256,6 +275,7 @@ class Folder(pulumi.CustomResource):
256
275
  A folder’s display name must be unique amongst its siblings, e.g. no two folders with the same parent can share the same display name. The display name must start and end with a letter or digit, may contain letters, digits, spaces, hyphens and underscores and can be no longer than 30 characters.
257
276
  :param pulumi.Input[str] parent: The resource name of the parent Folder or Organization.
258
277
  Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
278
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
259
279
  """
260
280
  ...
261
281
  @overload
@@ -278,21 +298,7 @@ class Folder(pulumi.CustomResource):
278
298
  [Access Control for Folders Using IAM](https://cloud.google.com/resource-manager/docs/access-control-folders)
279
299
  doc for more information.
280
300
 
281
- ## Example Usage
282
-
283
- ```python
284
- import pulumi
285
- import pulumi_gcp as gcp
286
-
287
- # Top-level folder under an organization.
288
- department1 = gcp.organizations.Folder("department1",
289
- display_name="Department 1",
290
- parent="organizations/1234567")
291
- # Folder nested under another folder.
292
- team_abc = gcp.organizations.Folder("team-abc",
293
- display_name="Team ABC",
294
- parent=department1.name)
295
- ```
301
+ > It may take a while for the attached tag bindings to be deleted after the folder is scheduled to be deleted.
296
302
 
297
303
  ## Import
298
304
 
@@ -330,6 +336,7 @@ class Folder(pulumi.CustomResource):
330
336
  deletion_protection: Optional[pulumi.Input[bool]] = None,
331
337
  display_name: Optional[pulumi.Input[str]] = None,
332
338
  parent: Optional[pulumi.Input[str]] = None,
339
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
333
340
  __props__=None):
334
341
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
335
342
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -346,6 +353,7 @@ class Folder(pulumi.CustomResource):
346
353
  if parent is None and not opts.urn:
347
354
  raise TypeError("Missing required property 'parent'")
348
355
  __props__.__dict__["parent"] = parent
356
+ __props__.__dict__["tags"] = tags
349
357
  __props__.__dict__["create_time"] = None
350
358
  __props__.__dict__["folder_id"] = None
351
359
  __props__.__dict__["lifecycle_state"] = None
@@ -366,7 +374,8 @@ class Folder(pulumi.CustomResource):
366
374
  folder_id: Optional[pulumi.Input[str]] = None,
367
375
  lifecycle_state: Optional[pulumi.Input[str]] = None,
368
376
  name: Optional[pulumi.Input[str]] = None,
369
- parent: Optional[pulumi.Input[str]] = None) -> 'Folder':
377
+ parent: Optional[pulumi.Input[str]] = None,
378
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Folder':
370
379
  """
371
380
  Get an existing Folder resource's state with the given name, id, and optional extra
372
381
  properties used to qualify the lookup.
@@ -383,6 +392,7 @@ class Folder(pulumi.CustomResource):
383
392
  :param pulumi.Input[str] name: The resource name of the Folder. Its format is folders/{folder_id}.
384
393
  :param pulumi.Input[str] parent: The resource name of the parent Folder or Organization.
385
394
  Must be of the form `folders/{folder_id}` or `organizations/{org_id}`.
395
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
386
396
  """
387
397
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
388
398
 
@@ -395,6 +405,7 @@ class Folder(pulumi.CustomResource):
395
405
  __props__.__dict__["lifecycle_state"] = lifecycle_state
396
406
  __props__.__dict__["name"] = name
397
407
  __props__.__dict__["parent"] = parent
408
+ __props__.__dict__["tags"] = tags
398
409
  return Folder(resource_name, opts=opts, __props__=__props__)
399
410
 
400
411
  @property
@@ -453,3 +464,11 @@ class Folder(pulumi.CustomResource):
453
464
  """
454
465
  return pulumi.get(self, "parent")
455
466
 
467
+ @property
468
+ @pulumi.getter
469
+ def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
470
+ """
471
+ A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
472
+ """
473
+ return pulumi.get(self, "tags")
474
+
@@ -26,7 +26,7 @@ class GetProjectResult:
26
26
  """
27
27
  A collection of values returned by getProject.
28
28
  """
29
- def __init__(__self__, auto_create_network=None, billing_account=None, deletion_policy=None, effective_labels=None, folder_id=None, id=None, labels=None, name=None, number=None, org_id=None, project_id=None, pulumi_labels=None):
29
+ def __init__(__self__, auto_create_network=None, billing_account=None, deletion_policy=None, effective_labels=None, folder_id=None, id=None, labels=None, name=None, number=None, org_id=None, project_id=None, pulumi_labels=None, tags=None):
30
30
  if auto_create_network and not isinstance(auto_create_network, bool):
31
31
  raise TypeError("Expected argument 'auto_create_network' to be a bool")
32
32
  pulumi.set(__self__, "auto_create_network", auto_create_network)
@@ -63,6 +63,9 @@ class GetProjectResult:
63
63
  if pulumi_labels and not isinstance(pulumi_labels, dict):
64
64
  raise TypeError("Expected argument 'pulumi_labels' to be a dict")
65
65
  pulumi.set(__self__, "pulumi_labels", pulumi_labels)
66
+ if tags and not isinstance(tags, dict):
67
+ raise TypeError("Expected argument 'tags' to be a dict")
68
+ pulumi.set(__self__, "tags", tags)
66
69
 
67
70
  @property
68
71
  @pulumi.getter(name="autoCreateNetwork")
@@ -130,6 +133,11 @@ class GetProjectResult:
130
133
  def pulumi_labels(self) -> Mapping[str, str]:
131
134
  return pulumi.get(self, "pulumi_labels")
132
135
 
136
+ @property
137
+ @pulumi.getter
138
+ def tags(self) -> Mapping[str, str]:
139
+ return pulumi.get(self, "tags")
140
+
133
141
 
134
142
  class AwaitableGetProjectResult(GetProjectResult):
135
143
  # pylint: disable=using-constant-test
@@ -148,7 +156,8 @@ class AwaitableGetProjectResult(GetProjectResult):
148
156
  number=self.number,
149
157
  org_id=self.org_id,
150
158
  project_id=self.project_id,
151
- pulumi_labels=self.pulumi_labels)
159
+ pulumi_labels=self.pulumi_labels,
160
+ tags=self.tags)
152
161
 
153
162
 
154
163
  def get_project(project_id: Optional[str] = None,
@@ -188,7 +197,8 @@ def get_project(project_id: Optional[str] = None,
188
197
  number=pulumi.get(__ret__, 'number'),
189
198
  org_id=pulumi.get(__ret__, 'org_id'),
190
199
  project_id=pulumi.get(__ret__, 'project_id'),
191
- pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'))
200
+ pulumi_labels=pulumi.get(__ret__, 'pulumi_labels'),
201
+ tags=pulumi.get(__ret__, 'tags'))
192
202
 
193
203
 
194
204
  @_utilities.lift_output_func(get_project)
@@ -26,7 +26,8 @@ class ProjectArgs:
26
26
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
27
27
  name: Optional[pulumi.Input[str]] = None,
28
28
  org_id: Optional[pulumi.Input[str]] = None,
29
- project_id: Optional[pulumi.Input[str]] = None):
29
+ project_id: Optional[pulumi.Input[str]] = None,
30
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
30
31
  """
31
32
  The set of arguments for constructing a Project resource.
32
33
  :param pulumi.Input[bool] auto_create_network: Create the 'default' network automatically. Default true. If set to false, the default network will be deleted. Note
@@ -53,6 +54,7 @@ class ProjectArgs:
53
54
  this forces the project to be migrated to the newly specified
54
55
  organization.
55
56
  :param pulumi.Input[str] project_id: The project ID. Changing this forces a new project to be created.
57
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
56
58
  """
57
59
  if auto_create_network is not None:
58
60
  pulumi.set(__self__, "auto_create_network", auto_create_network)
@@ -70,6 +72,8 @@ class ProjectArgs:
70
72
  pulumi.set(__self__, "org_id", org_id)
71
73
  if project_id is not None:
72
74
  pulumi.set(__self__, "project_id", project_id)
75
+ if tags is not None:
76
+ pulumi.set(__self__, "tags", tags)
73
77
 
74
78
  @property
75
79
  @pulumi.getter(name="autoCreateNetwork")
@@ -181,6 +185,18 @@ class ProjectArgs:
181
185
  def project_id(self, value: Optional[pulumi.Input[str]]):
182
186
  pulumi.set(self, "project_id", value)
183
187
 
188
+ @property
189
+ @pulumi.getter
190
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
191
+ """
192
+ A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
193
+ """
194
+ return pulumi.get(self, "tags")
195
+
196
+ @tags.setter
197
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
198
+ pulumi.set(self, "tags", value)
199
+
184
200
 
185
201
  @pulumi.input_type
186
202
  class _ProjectState:
@@ -195,7 +211,8 @@ class _ProjectState:
195
211
  number: Optional[pulumi.Input[str]] = None,
196
212
  org_id: Optional[pulumi.Input[str]] = None,
197
213
  project_id: Optional[pulumi.Input[str]] = None,
198
- pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
214
+ pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
215
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None):
199
216
  """
200
217
  Input properties used for looking up and filtering Project resources.
201
218
  :param pulumi.Input[bool] auto_create_network: Create the 'default' network automatically. Default true. If set to false, the default network will be deleted. Note
@@ -225,6 +242,7 @@ class _ProjectState:
225
242
  organization.
226
243
  :param pulumi.Input[str] project_id: The project ID. Changing this forces a new project to be created.
227
244
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource and default labels configured on the provider.
245
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
228
246
  """
229
247
  if auto_create_network is not None:
230
248
  pulumi.set(__self__, "auto_create_network", auto_create_network)
@@ -248,6 +266,8 @@ class _ProjectState:
248
266
  pulumi.set(__self__, "project_id", project_id)
249
267
  if pulumi_labels is not None:
250
268
  pulumi.set(__self__, "pulumi_labels", pulumi_labels)
269
+ if tags is not None:
270
+ pulumi.set(__self__, "tags", tags)
251
271
 
252
272
  @property
253
273
  @pulumi.getter(name="autoCreateNetwork")
@@ -395,6 +415,18 @@ class _ProjectState:
395
415
  def pulumi_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
396
416
  pulumi.set(self, "pulumi_labels", value)
397
417
 
418
+ @property
419
+ @pulumi.getter
420
+ def tags(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]:
421
+ """
422
+ A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
423
+ """
424
+ return pulumi.get(self, "tags")
425
+
426
+ @tags.setter
427
+ def tags(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]]):
428
+ pulumi.set(self, "tags", value)
429
+
398
430
 
399
431
  class Project(pulumi.CustomResource):
400
432
  @overload
@@ -409,6 +441,7 @@ class Project(pulumi.CustomResource):
409
441
  name: Optional[pulumi.Input[str]] = None,
410
442
  org_id: Optional[pulumi.Input[str]] = None,
411
443
  project_id: Optional[pulumi.Input[str]] = None,
444
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
412
445
  __props__=None):
413
446
  """
414
447
  Allows creation and management of a Google Cloud Platform project.
@@ -423,6 +456,10 @@ class Project(pulumi.CustomResource):
423
456
 
424
457
  > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account.
425
458
 
459
+ > It is recommended to use the `constraints/compute.skipDefaultNetworkCreation` [constraint](https://www.terraform.io/docs/providers/google/r/google_organization_policy.html) to remove the default network instead of setting `auto_create_network` to false, when possible.
460
+
461
+ > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted.
462
+
426
463
  To get more information about projects, see:
427
464
 
428
465
  * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects)
@@ -456,6 +493,21 @@ class Project(pulumi.CustomResource):
456
493
  folder_id=department1.name)
457
494
  ```
458
495
 
496
+ To create a project with a tag
497
+
498
+ ```python
499
+ import pulumi
500
+ import pulumi_gcp as gcp
501
+
502
+ my_project = gcp.organizations.Project("my_project",
503
+ name="My Project",
504
+ project_id="your-project-id",
505
+ org_id="1234567",
506
+ tags={
507
+ "1234567/env": "staging",
508
+ })
509
+ ```
510
+
459
511
  ## Import
460
512
 
461
513
  Projects can be imported using the `project_id`, e.g.
@@ -494,6 +546,7 @@ class Project(pulumi.CustomResource):
494
546
  this forces the project to be migrated to the newly specified
495
547
  organization.
496
548
  :param pulumi.Input[str] project_id: The project ID. Changing this forces a new project to be created.
549
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
497
550
  """
498
551
  ...
499
552
  @overload
@@ -514,6 +567,10 @@ class Project(pulumi.CustomResource):
514
567
 
515
568
  > This resource reads the specified billing account on every pulumi up and plan operation so you must have permissions on the specified billing account.
516
569
 
570
+ > It is recommended to use the `constraints/compute.skipDefaultNetworkCreation` [constraint](https://www.terraform.io/docs/providers/google/r/google_organization_policy.html) to remove the default network instead of setting `auto_create_network` to false, when possible.
571
+
572
+ > It may take a while for the attached tag bindings to be deleted after the project is scheduled to be deleted.
573
+
517
574
  To get more information about projects, see:
518
575
 
519
576
  * [API documentation](https://cloud.google.com/resource-manager/reference/rest/v1/projects)
@@ -547,6 +604,21 @@ class Project(pulumi.CustomResource):
547
604
  folder_id=department1.name)
548
605
  ```
549
606
 
607
+ To create a project with a tag
608
+
609
+ ```python
610
+ import pulumi
611
+ import pulumi_gcp as gcp
612
+
613
+ my_project = gcp.organizations.Project("my_project",
614
+ name="My Project",
615
+ project_id="your-project-id",
616
+ org_id="1234567",
617
+ tags={
618
+ "1234567/env": "staging",
619
+ })
620
+ ```
621
+
550
622
  ## Import
551
623
 
552
624
  Projects can be imported using the `project_id`, e.g.
@@ -582,6 +654,7 @@ class Project(pulumi.CustomResource):
582
654
  name: Optional[pulumi.Input[str]] = None,
583
655
  org_id: Optional[pulumi.Input[str]] = None,
584
656
  project_id: Optional[pulumi.Input[str]] = None,
657
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
585
658
  __props__=None):
586
659
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
587
660
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -599,6 +672,7 @@ class Project(pulumi.CustomResource):
599
672
  __props__.__dict__["name"] = name
600
673
  __props__.__dict__["org_id"] = org_id
601
674
  __props__.__dict__["project_id"] = project_id
675
+ __props__.__dict__["tags"] = tags
602
676
  __props__.__dict__["effective_labels"] = None
603
677
  __props__.__dict__["number"] = None
604
678
  __props__.__dict__["pulumi_labels"] = None
@@ -624,7 +698,8 @@ class Project(pulumi.CustomResource):
624
698
  number: Optional[pulumi.Input[str]] = None,
625
699
  org_id: Optional[pulumi.Input[str]] = None,
626
700
  project_id: Optional[pulumi.Input[str]] = None,
627
- pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Project':
701
+ pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
702
+ tags: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None) -> 'Project':
628
703
  """
629
704
  Get an existing Project resource's state with the given name, id, and optional extra
630
705
  properties used to qualify the lookup.
@@ -659,6 +734,7 @@ class Project(pulumi.CustomResource):
659
734
  organization.
660
735
  :param pulumi.Input[str] project_id: The project ID. Changing this forces a new project to be created.
661
736
  :param pulumi.Input[Mapping[str, pulumi.Input[str]]] pulumi_labels: The combination of labels configured directly on the resource and default labels configured on the provider.
737
+ :param pulumi.Input[Mapping[str, pulumi.Input[str]]] tags: A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
662
738
  """
663
739
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
664
740
 
@@ -675,6 +751,7 @@ class Project(pulumi.CustomResource):
675
751
  __props__.__dict__["org_id"] = org_id
676
752
  __props__.__dict__["project_id"] = project_id
677
753
  __props__.__dict__["pulumi_labels"] = pulumi_labels
754
+ __props__.__dict__["tags"] = tags
678
755
  return Project(resource_name, opts=opts, __props__=__props__)
679
756
 
680
757
  @property
@@ -779,3 +856,11 @@ class Project(pulumi.CustomResource):
779
856
  """
780
857
  return pulumi.get(self, "pulumi_labels")
781
858
 
859
+ @property
860
+ @pulumi.getter
861
+ def tags(self) -> pulumi.Output[Optional[Mapping[str, str]]]:
862
+ """
863
+ A map of resource manager tags. Resource manager tag keys and values have the same definition as resource manager tags. Keys must be in the format tagKeys/{tag_key_id}, and values are in the format tagValues/456. The field is ignored when empty. The field is immutable and causes resource replacement when mutated.
864
+ """
865
+ return pulumi.get(self, "tags")
866
+