pulumi-gcp 8.0.0rc0__py3-none-any.whl → 8.1.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 (101) hide show
  1. pulumi_gcp/__init__.py +24 -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/_inputs.py +33 -0
  9. pulumi_gcp/bigquery/data_transfer_config.py +134 -6
  10. pulumi_gcp/bigquery/outputs.py +36 -0
  11. pulumi_gcp/bigqueryanalyticshub/_inputs.py +169 -7
  12. pulumi_gcp/bigqueryanalyticshub/data_exchange.py +96 -3
  13. pulumi_gcp/bigqueryanalyticshub/listing.py +114 -0
  14. pulumi_gcp/bigqueryanalyticshub/outputs.py +138 -5
  15. pulumi_gcp/bigtable/_inputs.py +21 -1
  16. pulumi_gcp/bigtable/outputs.py +13 -1
  17. pulumi_gcp/bigtable/table.py +34 -0
  18. pulumi_gcp/certificateauthority/authority.py +14 -7
  19. pulumi_gcp/certificatemanager/__init__.py +1 -0
  20. pulumi_gcp/certificatemanager/certificate.py +28 -0
  21. pulumi_gcp/certificatemanager/get_certificates.py +150 -0
  22. pulumi_gcp/certificatemanager/outputs.py +322 -0
  23. pulumi_gcp/cloudbuild/_inputs.py +6 -6
  24. pulumi_gcp/cloudbuild/outputs.py +4 -4
  25. pulumi_gcp/cloudrun/_inputs.py +6 -12
  26. pulumi_gcp/cloudrun/outputs.py +8 -16
  27. pulumi_gcp/cloudrunv2/_inputs.py +72 -15
  28. pulumi_gcp/cloudrunv2/outputs.py +82 -16
  29. pulumi_gcp/cloudrunv2/service.py +50 -4
  30. pulumi_gcp/cloudtasks/_inputs.py +630 -0
  31. pulumi_gcp/cloudtasks/outputs.py +479 -0
  32. pulumi_gcp/cloudtasks/queue.py +238 -0
  33. pulumi_gcp/compute/_inputs.py +129 -9
  34. pulumi_gcp/compute/get_instance.py +1 -1
  35. pulumi_gcp/compute/health_check.py +114 -0
  36. pulumi_gcp/compute/instance.py +86 -4
  37. pulumi_gcp/compute/instance_template.py +66 -0
  38. pulumi_gcp/compute/interconnect.py +28 -21
  39. pulumi_gcp/compute/node_template.py +93 -0
  40. pulumi_gcp/compute/outputs.py +108 -6
  41. pulumi_gcp/compute/target_https_proxy.py +28 -0
  42. pulumi_gcp/container/_inputs.py +140 -3
  43. pulumi_gcp/container/attached_cluster.py +7 -7
  44. pulumi_gcp/container/outputs.py +174 -2
  45. pulumi_gcp/databasemigrationservice/_inputs.py +176 -148
  46. pulumi_gcp/databasemigrationservice/connection_profile.py +206 -0
  47. pulumi_gcp/databasemigrationservice/outputs.py +109 -87
  48. pulumi_gcp/dataloss/_inputs.py +353 -1
  49. pulumi_gcp/dataloss/outputs.py +274 -3
  50. pulumi_gcp/dataproc/_inputs.py +27 -27
  51. pulumi_gcp/dataproc/outputs.py +18 -18
  52. pulumi_gcp/datastream/_inputs.py +69 -1
  53. pulumi_gcp/datastream/outputs.py +44 -2
  54. pulumi_gcp/datastream/stream.py +194 -7
  55. pulumi_gcp/discoveryengine/_inputs.py +188 -0
  56. pulumi_gcp/discoveryengine/data_store.py +14 -14
  57. pulumi_gcp/discoveryengine/outputs.py +153 -1
  58. pulumi_gcp/firebase/database_instance.py +7 -7
  59. pulumi_gcp/gkehub/_inputs.py +25 -1
  60. pulumi_gcp/gkehub/feature_membership.py +12 -6
  61. pulumi_gcp/gkehub/outputs.py +17 -1
  62. pulumi_gcp/iam/_inputs.py +196 -0
  63. pulumi_gcp/iam/get_workload_identity_pool_provider.py +13 -3
  64. pulumi_gcp/iam/outputs.py +295 -0
  65. pulumi_gcp/iam/workload_identity_pool_provider.py +164 -3
  66. pulumi_gcp/kms/__init__.py +2 -0
  67. pulumi_gcp/kms/autokey_config.py +10 -2
  68. pulumi_gcp/kms/get_crypto_key_latest_version.py +222 -0
  69. pulumi_gcp/kms/get_crypto_key_versions.py +175 -0
  70. pulumi_gcp/kms/outputs.py +164 -0
  71. pulumi_gcp/netapp/active_directory.py +6 -6
  72. pulumi_gcp/netapp/backup.py +6 -6
  73. pulumi_gcp/netapp/backup_policy.py +6 -6
  74. pulumi_gcp/netapp/backup_vault.py +6 -6
  75. pulumi_gcp/netapp/storage_pool.py +4 -4
  76. pulumi_gcp/netapp/volume.py +7 -0
  77. pulumi_gcp/networkconnectivity/_inputs.py +21 -1
  78. pulumi_gcp/networkconnectivity/outputs.py +15 -1
  79. pulumi_gcp/networkconnectivity/spoke.py +8 -0
  80. pulumi_gcp/networksecurity/client_tls_policy.py +24 -22
  81. pulumi_gcp/networksecurity/server_tls_policy.py +20 -32
  82. pulumi_gcp/organizations/get_project.py +13 -3
  83. pulumi_gcp/organizations/project.py +88 -3
  84. pulumi_gcp/parallelstore/instance.py +121 -121
  85. pulumi_gcp/projects/iam_member_remove.py +26 -0
  86. pulumi_gcp/projects/usage_export_bucket.py +38 -0
  87. pulumi_gcp/pubsub/_inputs.py +40 -0
  88. pulumi_gcp/pubsub/outputs.py +51 -1
  89. pulumi_gcp/pubsub/subscription.py +6 -0
  90. pulumi_gcp/pulumi-plugin.json +1 -1
  91. pulumi_gcp/redis/_inputs.py +419 -0
  92. pulumi_gcp/redis/cluster.py +123 -0
  93. pulumi_gcp/redis/outputs.py +315 -0
  94. pulumi_gcp/securitycenter/__init__.py +2 -0
  95. pulumi_gcp/securitycenter/v2_folder_scc_big_query_export.py +857 -0
  96. pulumi_gcp/securitycenter/v2_organization_scc_big_query_exports.py +4 -4
  97. pulumi_gcp/securitycenter/v2_project_scc_big_query_export.py +796 -0
  98. {pulumi_gcp-8.0.0rc0.dist-info → pulumi_gcp-8.1.0.dist-info}/METADATA +1 -1
  99. {pulumi_gcp-8.0.0rc0.dist-info → pulumi_gcp-8.1.0.dist-info}/RECORD +101 -95
  100. {pulumi_gcp-8.0.0rc0.dist-info → pulumi_gcp-8.1.0.dist-info}/WHEEL +1 -1
  101. {pulumi_gcp-8.0.0rc0.dist-info → pulumi_gcp-8.1.0.dist-info}/top_level.txt +0 -0
@@ -892,6 +892,10 @@ if not MYPY:
892
892
  """
893
893
  IP ranges encompassing the subnets to be excluded from peering.
894
894
  """
895
+ include_export_ranges: NotRequired[pulumi.Input[Sequence[pulumi.Input[str]]]]
896
+ """
897
+ IP ranges allowed to be included from peering.
898
+ """
895
899
  elif False:
896
900
  SpokeLinkedVpcNetworkArgsDict: TypeAlias = Mapping[str, Any]
897
901
 
@@ -899,14 +903,18 @@ elif False:
899
903
  class SpokeLinkedVpcNetworkArgs:
900
904
  def __init__(__self__, *,
901
905
  uri: pulumi.Input[str],
902
- exclude_export_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
906
+ exclude_export_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
907
+ include_export_ranges: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None):
903
908
  """
904
909
  :param pulumi.Input[str] uri: The URI of the VPC network resource.
905
910
  :param pulumi.Input[Sequence[pulumi.Input[str]]] exclude_export_ranges: IP ranges encompassing the subnets to be excluded from peering.
911
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] include_export_ranges: IP ranges allowed to be included from peering.
906
912
  """
907
913
  pulumi.set(__self__, "uri", uri)
908
914
  if exclude_export_ranges is not None:
909
915
  pulumi.set(__self__, "exclude_export_ranges", exclude_export_ranges)
916
+ if include_export_ranges is not None:
917
+ pulumi.set(__self__, "include_export_ranges", include_export_ranges)
910
918
 
911
919
  @property
912
920
  @pulumi.getter
@@ -932,6 +940,18 @@ class SpokeLinkedVpcNetworkArgs:
932
940
  def exclude_export_ranges(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
933
941
  pulumi.set(self, "exclude_export_ranges", value)
934
942
 
943
+ @property
944
+ @pulumi.getter(name="includeExportRanges")
945
+ def include_export_ranges(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
946
+ """
947
+ IP ranges allowed to be included from peering.
948
+ """
949
+ return pulumi.get(self, "include_export_ranges")
950
+
951
+ @include_export_ranges.setter
952
+ def include_export_ranges(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
953
+ pulumi.set(self, "include_export_ranges", value)
954
+
935
955
 
936
956
  if not MYPY:
937
957
  class SpokeLinkedVpnTunnelsArgsDict(TypedDict):
@@ -659,6 +659,8 @@ class SpokeLinkedVpcNetwork(dict):
659
659
  suggest = None
660
660
  if key == "excludeExportRanges":
661
661
  suggest = "exclude_export_ranges"
662
+ elif key == "includeExportRanges":
663
+ suggest = "include_export_ranges"
662
664
 
663
665
  if suggest:
664
666
  pulumi.log.warn(f"Key '{key}' not found in SpokeLinkedVpcNetwork. Access the value via the '{suggest}' property getter instead.")
@@ -673,14 +675,18 @@ class SpokeLinkedVpcNetwork(dict):
673
675
 
674
676
  def __init__(__self__, *,
675
677
  uri: str,
676
- exclude_export_ranges: Optional[Sequence[str]] = None):
678
+ exclude_export_ranges: Optional[Sequence[str]] = None,
679
+ include_export_ranges: Optional[Sequence[str]] = None):
677
680
  """
678
681
  :param str uri: The URI of the VPC network resource.
679
682
  :param Sequence[str] exclude_export_ranges: IP ranges encompassing the subnets to be excluded from peering.
683
+ :param Sequence[str] include_export_ranges: IP ranges allowed to be included from peering.
680
684
  """
681
685
  pulumi.set(__self__, "uri", uri)
682
686
  if exclude_export_ranges is not None:
683
687
  pulumi.set(__self__, "exclude_export_ranges", exclude_export_ranges)
688
+ if include_export_ranges is not None:
689
+ pulumi.set(__self__, "include_export_ranges", include_export_ranges)
684
690
 
685
691
  @property
686
692
  @pulumi.getter
@@ -698,6 +704,14 @@ class SpokeLinkedVpcNetwork(dict):
698
704
  """
699
705
  return pulumi.get(self, "exclude_export_ranges")
700
706
 
707
+ @property
708
+ @pulumi.getter(name="includeExportRanges")
709
+ def include_export_ranges(self) -> Optional[Sequence[str]]:
710
+ """
711
+ IP ranges allowed to be included from peering.
712
+ """
713
+ return pulumi.get(self, "include_export_ranges")
714
+
701
715
 
702
716
  @pulumi.output_type
703
717
  class SpokeLinkedVpnTunnels(dict):
@@ -545,6 +545,10 @@ class Spoke(pulumi.CustomResource):
545
545
  "198.51.100.0/24",
546
546
  "10.10.0.0/16",
547
547
  ],
548
+ "include_export_ranges": [
549
+ "198.51.100.0/23",
550
+ "10.0.0.0/8",
551
+ ],
548
552
  "uri": network.self_link,
549
553
  })
550
554
  ```
@@ -694,6 +698,10 @@ class Spoke(pulumi.CustomResource):
694
698
  "198.51.100.0/24",
695
699
  "10.10.0.0/16",
696
700
  ],
701
+ "include_export_ranges": [
702
+ "198.51.100.0/23",
703
+ "10.0.0.0/8",
704
+ ],
697
705
  "uri": network.self_link,
698
706
  })
699
707
  ```
@@ -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
@@ -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
+