pulumi-gcp 8.11.0a1734157575__py3-none-any.whl → 8.11.0a1734385115__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 (142) hide show
  1. pulumi_gcp/__init__.py +91 -0
  2. pulumi_gcp/accesscontextmanager/_inputs.py +29 -0
  3. pulumi_gcp/accesscontextmanager/outputs.py +18 -0
  4. pulumi_gcp/accesscontextmanager/service_perimeter.py +36 -0
  5. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_egress_policy.py +6 -0
  6. pulumi_gcp/accesscontextmanager/service_perimeter_dry_run_ingress_policy.py +6 -0
  7. pulumi_gcp/accesscontextmanager/service_perimeter_egress_policy.py +6 -0
  8. pulumi_gcp/accesscontextmanager/service_perimeter_ingress_policy.py +6 -0
  9. pulumi_gcp/apigee/app_group.py +7 -7
  10. pulumi_gcp/applicationintegration/client.py +8 -6
  11. pulumi_gcp/artifactregistry/_inputs.py +24 -15
  12. pulumi_gcp/artifactregistry/outputs.py +32 -20
  13. pulumi_gcp/artifactregistry/repository.py +128 -0
  14. pulumi_gcp/assuredworkloads/workload.py +7 -7
  15. pulumi_gcp/backupdisasterrecovery/__init__.py +2 -0
  16. pulumi_gcp/backupdisasterrecovery/backup_plan.py +2 -2
  17. pulumi_gcp/backupdisasterrecovery/backup_vault.py +12 -8
  18. pulumi_gcp/backupdisasterrecovery/get_backup.py +153 -0
  19. pulumi_gcp/backupdisasterrecovery/get_backup_vault.py +415 -0
  20. pulumi_gcp/backupdisasterrecovery/outputs.py +63 -0
  21. pulumi_gcp/bigquery/app_profile.py +75 -0
  22. pulumi_gcp/billing/_inputs.py +6 -6
  23. pulumi_gcp/billing/outputs.py +4 -4
  24. pulumi_gcp/certificateauthority/_inputs.py +9 -9
  25. pulumi_gcp/certificateauthority/outputs.py +8 -8
  26. pulumi_gcp/cloudbuild/_inputs.py +53 -0
  27. pulumi_gcp/cloudbuild/outputs.py +50 -0
  28. pulumi_gcp/cloudbuild/worker_pool.py +47 -0
  29. pulumi_gcp/clouddeploy/_inputs.py +254 -0
  30. pulumi_gcp/clouddeploy/outputs.py +211 -0
  31. pulumi_gcp/clouddeploy/target.py +47 -0
  32. pulumi_gcp/cloudfunctionsv2/_inputs.py +6 -6
  33. pulumi_gcp/cloudfunctionsv2/outputs.py +8 -8
  34. pulumi_gcp/cloudrunv2/job.py +4 -4
  35. pulumi_gcp/cloudrunv2/service.py +4 -4
  36. pulumi_gcp/composer/get_user_workloads_config_map.py +4 -0
  37. pulumi_gcp/composer/get_user_workloads_secret.py +4 -0
  38. pulumi_gcp/composer/user_workloads_config_map.py +14 -0
  39. pulumi_gcp/composer/user_workloads_secret.py +6 -0
  40. pulumi_gcp/compute/_inputs.py +566 -25
  41. pulumi_gcp/compute/disk.py +21 -7
  42. pulumi_gcp/compute/firewall_policy_rule.py +12 -0
  43. pulumi_gcp/compute/get_forwarding_rules.py +2 -2
  44. pulumi_gcp/compute/get_global_forwarding_rule.py +12 -1
  45. pulumi_gcp/compute/get_instance_group_manager.py +12 -1
  46. pulumi_gcp/compute/get_network.py +35 -1
  47. pulumi_gcp/compute/get_region_instance_group_manager.py +12 -1
  48. pulumi_gcp/compute/get_region_network_endpoint_group.py +12 -1
  49. pulumi_gcp/compute/global_forwarding_rule.py +28 -0
  50. pulumi_gcp/compute/instance_group_manager.py +28 -0
  51. pulumi_gcp/compute/network.py +75 -0
  52. pulumi_gcp/compute/outputs.py +655 -26
  53. pulumi_gcp/compute/region_health_check.py +28 -0
  54. pulumi_gcp/compute/region_instance_group_manager.py +28 -0
  55. pulumi_gcp/compute/region_network_endpoint.py +28 -0
  56. pulumi_gcp/compute/region_network_endpoint_group.py +70 -2
  57. pulumi_gcp/compute/subnetwork.py +30 -2
  58. pulumi_gcp/compute/url_map.py +7 -7
  59. pulumi_gcp/config/__init__.pyi +2 -0
  60. pulumi_gcp/config/vars.py +4 -0
  61. pulumi_gcp/container/_inputs.py +201 -3
  62. pulumi_gcp/container/cluster.py +68 -14
  63. pulumi_gcp/container/get_cluster.py +12 -1
  64. pulumi_gcp/container/outputs.py +249 -3
  65. pulumi_gcp/dataproc/_inputs.py +209 -1
  66. pulumi_gcp/dataproc/batch.py +76 -0
  67. pulumi_gcp/dataproc/outputs.py +169 -3
  68. pulumi_gcp/diagflow/_inputs.py +3 -3
  69. pulumi_gcp/diagflow/outputs.py +2 -2
  70. pulumi_gcp/discoveryengine/search_engine.py +7 -7
  71. pulumi_gcp/firebaserules/release.py +76 -0
  72. pulumi_gcp/firestore/field.py +4 -4
  73. pulumi_gcp/gemini/__init__.py +15 -0
  74. pulumi_gcp/gemini/_inputs.py +183 -0
  75. pulumi_gcp/gemini/code_repository_index.py +659 -0
  76. pulumi_gcp/gemini/get_repository_group_iam_policy.py +171 -0
  77. pulumi_gcp/gemini/outputs.py +130 -0
  78. pulumi_gcp/gemini/repository_group.py +586 -0
  79. pulumi_gcp/gemini/repository_group_iam_binding.py +604 -0
  80. pulumi_gcp/gemini/repository_group_iam_member.py +604 -0
  81. pulumi_gcp/gemini/repository_group_iam_policy.py +443 -0
  82. pulumi_gcp/gkehub/_inputs.py +30 -10
  83. pulumi_gcp/gkehub/membership_binding.py +6 -6
  84. pulumi_gcp/gkehub/membership_rbac_role_binding.py +4 -4
  85. pulumi_gcp/gkehub/namespace.py +4 -4
  86. pulumi_gcp/gkehub/outputs.py +21 -7
  87. pulumi_gcp/gkehub/scope_rbac_role_binding.py +4 -4
  88. pulumi_gcp/iam/__init__.py +1 -0
  89. pulumi_gcp/iam/_inputs.py +137 -0
  90. pulumi_gcp/iam/folders_policy_binding.py +16 -0
  91. pulumi_gcp/iam/organizations_policy_binding.py +16 -0
  92. pulumi_gcp/iam/outputs.py +99 -0
  93. pulumi_gcp/iam/principal_access_boundary_policy.py +16 -0
  94. pulumi_gcp/iam/projects_policy_binding.py +917 -0
  95. pulumi_gcp/iap/tunnel_dest_group.py +2 -2
  96. pulumi_gcp/integrationconnectors/_inputs.py +15 -15
  97. pulumi_gcp/integrationconnectors/managed_zone.py +8 -8
  98. pulumi_gcp/integrationconnectors/outputs.py +10 -10
  99. pulumi_gcp/monitoring/_inputs.py +13 -6
  100. pulumi_gcp/monitoring/outputs.py +10 -4
  101. pulumi_gcp/netapp/_inputs.py +3 -3
  102. pulumi_gcp/netapp/active_directory.py +7 -7
  103. pulumi_gcp/netapp/outputs.py +2 -2
  104. pulumi_gcp/netapp/volume.py +11 -11
  105. pulumi_gcp/networkconnectivity/spoke.py +10 -10
  106. pulumi_gcp/networksecurity/__init__.py +4 -0
  107. pulumi_gcp/networksecurity/_inputs.py +115 -0
  108. pulumi_gcp/networksecurity/mirroring_deployment.py +848 -0
  109. pulumi_gcp/networksecurity/mirroring_deployment_group.py +752 -0
  110. pulumi_gcp/networksecurity/mirroring_endpoint_group.py +737 -0
  111. pulumi_gcp/networksecurity/mirroring_endpoint_group_association.py +840 -0
  112. pulumi_gcp/networksecurity/outputs.py +70 -0
  113. pulumi_gcp/oracledatabase/autonomous_database.py +42 -4
  114. pulumi_gcp/oracledatabase/cloud_exadata_infrastructure.py +42 -4
  115. pulumi_gcp/oracledatabase/cloud_vm_cluster.py +50 -8
  116. pulumi_gcp/oracledatabase/get_autonomous_database.py +12 -1
  117. pulumi_gcp/oracledatabase/get_cloud_exadata_infrastructure.py +12 -1
  118. pulumi_gcp/oracledatabase/get_cloud_vm_cluster.py +12 -1
  119. pulumi_gcp/oracledatabase/outputs.py +21 -0
  120. pulumi_gcp/orgpolicy/policy.py +2 -2
  121. pulumi_gcp/parallelstore/instance.py +4 -0
  122. pulumi_gcp/provider.py +20 -0
  123. pulumi_gcp/pubsub/subscription.py +6 -6
  124. pulumi_gcp/pulumi-plugin.json +1 -1
  125. pulumi_gcp/redis/_inputs.py +435 -3
  126. pulumi_gcp/redis/cluster.py +287 -16
  127. pulumi_gcp/redis/outputs.py +304 -2
  128. pulumi_gcp/serviceaccount/get_account_id_token.py +2 -2
  129. pulumi_gcp/serviceaccount/get_account_key.py +2 -2
  130. pulumi_gcp/storage/get_bucket.py +2 -2
  131. pulumi_gcp/storage/get_bucket_object_content.py +2 -2
  132. pulumi_gcp/tpu/__init__.py +1 -0
  133. pulumi_gcp/tpu/_inputs.py +188 -6
  134. pulumi_gcp/tpu/outputs.py +164 -4
  135. pulumi_gcp/tpu/v2_queued_resource.py +434 -0
  136. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  137. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  138. pulumi_gcp/vertex/ai_index_endpoint.py +2 -2
  139. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/METADATA +3 -3
  140. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/RECORD +142 -125
  141. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/WHEEL +0 -0
  142. {pulumi_gcp-8.11.0a1734157575.dist-info → pulumi_gcp-8.11.0a1734385115.dist-info}/top_level.txt +0 -0
pulumi_gcp/__init__.py CHANGED
@@ -142,6 +142,8 @@ if typing.TYPE_CHECKING:
142
142
  firestore = __firestore
143
143
  import pulumi_gcp.folder as __folder
144
144
  folder = __folder
145
+ import pulumi_gcp.gemini as __gemini
146
+ gemini = __gemini
145
147
  import pulumi_gcp.gkebackup as __gkebackup
146
148
  gkebackup = __gkebackup
147
149
  import pulumi_gcp.gkehub as __gkehub
@@ -325,6 +327,7 @@ else:
325
327
  firebaserules = _utilities.lazy_import('pulumi_gcp.firebaserules')
326
328
  firestore = _utilities.lazy_import('pulumi_gcp.firestore')
327
329
  folder = _utilities.lazy_import('pulumi_gcp.folder')
330
+ gemini = _utilities.lazy_import('pulumi_gcp.gemini')
328
331
  gkebackup = _utilities.lazy_import('pulumi_gcp.gkebackup')
329
332
  gkehub = _utilities.lazy_import('pulumi_gcp.gkehub')
330
333
  gkeonprem = _utilities.lazy_import('pulumi_gcp.gkeonprem')
@@ -4939,6 +4942,46 @@ _utilities.register(
4939
4942
  "gcp:folder/organizationPolicy:OrganizationPolicy": "OrganizationPolicy"
4940
4943
  }
4941
4944
  },
4945
+ {
4946
+ "pkg": "gcp",
4947
+ "mod": "gemini/codeRepositoryIndex",
4948
+ "fqn": "pulumi_gcp.gemini",
4949
+ "classes": {
4950
+ "gcp:gemini/codeRepositoryIndex:CodeRepositoryIndex": "CodeRepositoryIndex"
4951
+ }
4952
+ },
4953
+ {
4954
+ "pkg": "gcp",
4955
+ "mod": "gemini/repositoryGroup",
4956
+ "fqn": "pulumi_gcp.gemini",
4957
+ "classes": {
4958
+ "gcp:gemini/repositoryGroup:RepositoryGroup": "RepositoryGroup"
4959
+ }
4960
+ },
4961
+ {
4962
+ "pkg": "gcp",
4963
+ "mod": "gemini/repositoryGroupIamBinding",
4964
+ "fqn": "pulumi_gcp.gemini",
4965
+ "classes": {
4966
+ "gcp:gemini/repositoryGroupIamBinding:RepositoryGroupIamBinding": "RepositoryGroupIamBinding"
4967
+ }
4968
+ },
4969
+ {
4970
+ "pkg": "gcp",
4971
+ "mod": "gemini/repositoryGroupIamMember",
4972
+ "fqn": "pulumi_gcp.gemini",
4973
+ "classes": {
4974
+ "gcp:gemini/repositoryGroupIamMember:RepositoryGroupIamMember": "RepositoryGroupIamMember"
4975
+ }
4976
+ },
4977
+ {
4978
+ "pkg": "gcp",
4979
+ "mod": "gemini/repositoryGroupIamPolicy",
4980
+ "fqn": "pulumi_gcp.gemini",
4981
+ "classes": {
4982
+ "gcp:gemini/repositoryGroupIamPolicy:RepositoryGroupIamPolicy": "RepositoryGroupIamPolicy"
4983
+ }
4984
+ },
4942
4985
  {
4943
4986
  "pkg": "gcp",
4944
4987
  "mod": "gkebackup/backupPlan",
@@ -5403,6 +5446,14 @@ _utilities.register(
5403
5446
  "gcp:iam/principalAccessBoundaryPolicy:PrincipalAccessBoundaryPolicy": "PrincipalAccessBoundaryPolicy"
5404
5447
  }
5405
5448
  },
5449
+ {
5450
+ "pkg": "gcp",
5451
+ "mod": "iam/projectsPolicyBinding",
5452
+ "fqn": "pulumi_gcp.iam",
5453
+ "classes": {
5454
+ "gcp:iam/projectsPolicyBinding:ProjectsPolicyBinding": "ProjectsPolicyBinding"
5455
+ }
5456
+ },
5406
5457
  {
5407
5458
  "pkg": "gcp",
5408
5459
  "mod": "iam/workforcePool",
@@ -6467,6 +6518,38 @@ _utilities.register(
6467
6518
  "gcp:networksecurity/gatewaySecurityPolicyRule:GatewaySecurityPolicyRule": "GatewaySecurityPolicyRule"
6468
6519
  }
6469
6520
  },
6521
+ {
6522
+ "pkg": "gcp",
6523
+ "mod": "networksecurity/mirroringDeployment",
6524
+ "fqn": "pulumi_gcp.networksecurity",
6525
+ "classes": {
6526
+ "gcp:networksecurity/mirroringDeployment:MirroringDeployment": "MirroringDeployment"
6527
+ }
6528
+ },
6529
+ {
6530
+ "pkg": "gcp",
6531
+ "mod": "networksecurity/mirroringDeploymentGroup",
6532
+ "fqn": "pulumi_gcp.networksecurity",
6533
+ "classes": {
6534
+ "gcp:networksecurity/mirroringDeploymentGroup:MirroringDeploymentGroup": "MirroringDeploymentGroup"
6535
+ }
6536
+ },
6537
+ {
6538
+ "pkg": "gcp",
6539
+ "mod": "networksecurity/mirroringEndpointGroup",
6540
+ "fqn": "pulumi_gcp.networksecurity",
6541
+ "classes": {
6542
+ "gcp:networksecurity/mirroringEndpointGroup:MirroringEndpointGroup": "MirroringEndpointGroup"
6543
+ }
6544
+ },
6545
+ {
6546
+ "pkg": "gcp",
6547
+ "mod": "networksecurity/mirroringEndpointGroupAssociation",
6548
+ "fqn": "pulumi_gcp.networksecurity",
6549
+ "classes": {
6550
+ "gcp:networksecurity/mirroringEndpointGroupAssociation:MirroringEndpointGroupAssociation": "MirroringEndpointGroupAssociation"
6551
+ }
6552
+ },
6470
6553
  {
6471
6554
  "pkg": "gcp",
6472
6555
  "mod": "networksecurity/securityProfile",
@@ -8171,6 +8254,14 @@ _utilities.register(
8171
8254
  "gcp:tpu/node:Node": "Node"
8172
8255
  }
8173
8256
  },
8257
+ {
8258
+ "pkg": "gcp",
8259
+ "mod": "tpu/v2QueuedResource",
8260
+ "fqn": "pulumi_gcp.tpu",
8261
+ "classes": {
8262
+ "gcp:tpu/v2QueuedResource:V2QueuedResource": "V2QueuedResource"
8263
+ }
8264
+ },
8174
8265
  {
8175
8266
  "pkg": "gcp",
8176
8267
  "mod": "tpu/v2Vm",
@@ -6054,6 +6054,13 @@ if not MYPY:
6054
6054
  Description of the ServicePerimeter and its use. Does not affect
6055
6055
  behavior.
6056
6056
  """
6057
+ etag: NotRequired[pulumi.Input[str]]
6058
+ """
6059
+ (Output)
6060
+ An opaque identifier for the current version of the ServicePerimeter. This
6061
+ identifier does not follow any specific format. If an etag is not provided, the
6062
+ operation will be performed as if a valid etag is provided.
6063
+ """
6057
6064
  perimeter_type: NotRequired[pulumi.Input[str]]
6058
6065
  """
6059
6066
  Specifies the type of the Perimeter. There are two types: regular and
@@ -6115,6 +6122,7 @@ class ServicePerimetersServicePerimeterArgs:
6115
6122
  title: pulumi.Input[str],
6116
6123
  create_time: Optional[pulumi.Input[str]] = None,
6117
6124
  description: Optional[pulumi.Input[str]] = None,
6125
+ etag: Optional[pulumi.Input[str]] = None,
6118
6126
  perimeter_type: Optional[pulumi.Input[str]] = None,
6119
6127
  spec: Optional[pulumi.Input['ServicePerimetersServicePerimeterSpecArgs']] = None,
6120
6128
  status: Optional[pulumi.Input['ServicePerimetersServicePerimeterStatusArgs']] = None,
@@ -6129,6 +6137,10 @@ class ServicePerimetersServicePerimeterArgs:
6129
6137
  Time the AccessPolicy was created in UTC.
6130
6138
  :param pulumi.Input[str] description: Description of the ServicePerimeter and its use. Does not affect
6131
6139
  behavior.
6140
+ :param pulumi.Input[str] etag: (Output)
6141
+ An opaque identifier for the current version of the ServicePerimeter. This
6142
+ identifier does not follow any specific format. If an etag is not provided, the
6143
+ operation will be performed as if a valid etag is provided.
6132
6144
  :param pulumi.Input[str] perimeter_type: Specifies the type of the Perimeter. There are two types: regular and
6133
6145
  bridge. Regular Service Perimeter contains resources, access levels,
6134
6146
  and restricted services. Every resource can be in at most
@@ -6172,6 +6184,8 @@ class ServicePerimetersServicePerimeterArgs:
6172
6184
  pulumi.set(__self__, "create_time", create_time)
6173
6185
  if description is not None:
6174
6186
  pulumi.set(__self__, "description", description)
6187
+ if etag is not None:
6188
+ pulumi.set(__self__, "etag", etag)
6175
6189
  if perimeter_type is not None:
6176
6190
  pulumi.set(__self__, "perimeter_type", perimeter_type)
6177
6191
  if spec is not None:
@@ -6235,6 +6249,21 @@ class ServicePerimetersServicePerimeterArgs:
6235
6249
  def description(self, value: Optional[pulumi.Input[str]]):
6236
6250
  pulumi.set(self, "description", value)
6237
6251
 
6252
+ @property
6253
+ @pulumi.getter
6254
+ def etag(self) -> Optional[pulumi.Input[str]]:
6255
+ """
6256
+ (Output)
6257
+ An opaque identifier for the current version of the ServicePerimeter. This
6258
+ identifier does not follow any specific format. If an etag is not provided, the
6259
+ operation will be performed as if a valid etag is provided.
6260
+ """
6261
+ return pulumi.get(self, "etag")
6262
+
6263
+ @etag.setter
6264
+ def etag(self, value: Optional[pulumi.Input[str]]):
6265
+ pulumi.set(self, "etag", value)
6266
+
6238
6267
  @property
6239
6268
  @pulumi.getter(name="perimeterType")
6240
6269
  def perimeter_type(self) -> Optional[pulumi.Input[str]]:
@@ -4683,6 +4683,7 @@ class ServicePerimetersServicePerimeter(dict):
4683
4683
  title: str,
4684
4684
  create_time: Optional[str] = None,
4685
4685
  description: Optional[str] = None,
4686
+ etag: Optional[str] = None,
4686
4687
  perimeter_type: Optional[str] = None,
4687
4688
  spec: Optional['outputs.ServicePerimetersServicePerimeterSpec'] = None,
4688
4689
  status: Optional['outputs.ServicePerimetersServicePerimeterStatus'] = None,
@@ -4697,6 +4698,10 @@ class ServicePerimetersServicePerimeter(dict):
4697
4698
  Time the AccessPolicy was created in UTC.
4698
4699
  :param str description: Description of the ServicePerimeter and its use. Does not affect
4699
4700
  behavior.
4701
+ :param str etag: (Output)
4702
+ An opaque identifier for the current version of the ServicePerimeter. This
4703
+ identifier does not follow any specific format. If an etag is not provided, the
4704
+ operation will be performed as if a valid etag is provided.
4700
4705
  :param str perimeter_type: Specifies the type of the Perimeter. There are two types: regular and
4701
4706
  bridge. Regular Service Perimeter contains resources, access levels,
4702
4707
  and restricted services. Every resource can be in at most
@@ -4740,6 +4745,8 @@ class ServicePerimetersServicePerimeter(dict):
4740
4745
  pulumi.set(__self__, "create_time", create_time)
4741
4746
  if description is not None:
4742
4747
  pulumi.set(__self__, "description", description)
4748
+ if etag is not None:
4749
+ pulumi.set(__self__, "etag", etag)
4743
4750
  if perimeter_type is not None:
4744
4751
  pulumi.set(__self__, "perimeter_type", perimeter_type)
4745
4752
  if spec is not None:
@@ -4787,6 +4794,17 @@ class ServicePerimetersServicePerimeter(dict):
4787
4794
  """
4788
4795
  return pulumi.get(self, "description")
4789
4796
 
4797
+ @property
4798
+ @pulumi.getter
4799
+ def etag(self) -> Optional[str]:
4800
+ """
4801
+ (Output)
4802
+ An opaque identifier for the current version of the ServicePerimeter. This
4803
+ identifier does not follow any specific format. If an etag is not provided, the
4804
+ operation will be performed as if a valid etag is provided.
4805
+ """
4806
+ return pulumi.get(self, "etag")
4807
+
4790
4808
  @property
4791
4809
  @pulumi.getter(name="perimeterType")
4792
4810
  def perimeter_type(self) -> Optional[str]:
@@ -231,6 +231,7 @@ class _ServicePerimeterState:
231
231
  def __init__(__self__, *,
232
232
  create_time: Optional[pulumi.Input[str]] = None,
233
233
  description: Optional[pulumi.Input[str]] = None,
234
+ etag: Optional[pulumi.Input[str]] = None,
234
235
  name: Optional[pulumi.Input[str]] = None,
235
236
  parent: Optional[pulumi.Input[str]] = None,
236
237
  perimeter_type: Optional[pulumi.Input[str]] = None,
@@ -244,6 +245,9 @@ class _ServicePerimeterState:
244
245
  :param pulumi.Input[str] create_time: Time the AccessPolicy was created in UTC.
245
246
  :param pulumi.Input[str] description: Description of the ServicePerimeter and its use. Does not affect
246
247
  behavior.
248
+ :param pulumi.Input[str] etag: An opaque identifier for the current version of the ServicePerimeter. This
249
+ identifier does not follow any specific format. If an etag is not provided, the
250
+ operation will be performed as if a valid etag is provided.
247
251
  :param pulumi.Input[str] name: Resource name for the ServicePerimeter. The short_name component must
248
252
  begin with a letter and only include alphanumeric and '_'.
249
253
  Format: accessPolicies/{policy_id}/servicePerimeters/{short_name}
@@ -293,6 +297,8 @@ class _ServicePerimeterState:
293
297
  pulumi.set(__self__, "create_time", create_time)
294
298
  if description is not None:
295
299
  pulumi.set(__self__, "description", description)
300
+ if etag is not None:
301
+ pulumi.set(__self__, "etag", etag)
296
302
  if name is not None:
297
303
  pulumi.set(__self__, "name", name)
298
304
  if parent is not None:
@@ -335,6 +341,20 @@ class _ServicePerimeterState:
335
341
  def description(self, value: Optional[pulumi.Input[str]]):
336
342
  pulumi.set(self, "description", value)
337
343
 
344
+ @property
345
+ @pulumi.getter
346
+ def etag(self) -> Optional[pulumi.Input[str]]:
347
+ """
348
+ An opaque identifier for the current version of the ServicePerimeter. This
349
+ identifier does not follow any specific format. If an etag is not provided, the
350
+ operation will be performed as if a valid etag is provided.
351
+ """
352
+ return pulumi.get(self, "etag")
353
+
354
+ @etag.setter
355
+ def etag(self, value: Optional[pulumi.Input[str]]):
356
+ pulumi.set(self, "etag", value)
357
+
338
358
  @property
339
359
  @pulumi.getter
340
360
  def name(self) -> Optional[pulumi.Input[str]]:
@@ -989,6 +1009,7 @@ class ServicePerimeter(pulumi.CustomResource):
989
1009
  __props__.__dict__["title"] = title
990
1010
  __props__.__dict__["use_explicit_dry_run_spec"] = use_explicit_dry_run_spec
991
1011
  __props__.__dict__["create_time"] = None
1012
+ __props__.__dict__["etag"] = None
992
1013
  __props__.__dict__["update_time"] = None
993
1014
  super(ServicePerimeter, __self__).__init__(
994
1015
  'gcp:accesscontextmanager/servicePerimeter:ServicePerimeter',
@@ -1002,6 +1023,7 @@ class ServicePerimeter(pulumi.CustomResource):
1002
1023
  opts: Optional[pulumi.ResourceOptions] = None,
1003
1024
  create_time: Optional[pulumi.Input[str]] = None,
1004
1025
  description: Optional[pulumi.Input[str]] = None,
1026
+ etag: Optional[pulumi.Input[str]] = None,
1005
1027
  name: Optional[pulumi.Input[str]] = None,
1006
1028
  parent: Optional[pulumi.Input[str]] = None,
1007
1029
  perimeter_type: Optional[pulumi.Input[str]] = None,
@@ -1020,6 +1042,9 @@ class ServicePerimeter(pulumi.CustomResource):
1020
1042
  :param pulumi.Input[str] create_time: Time the AccessPolicy was created in UTC.
1021
1043
  :param pulumi.Input[str] description: Description of the ServicePerimeter and its use. Does not affect
1022
1044
  behavior.
1045
+ :param pulumi.Input[str] etag: An opaque identifier for the current version of the ServicePerimeter. This
1046
+ identifier does not follow any specific format. If an etag is not provided, the
1047
+ operation will be performed as if a valid etag is provided.
1023
1048
  :param pulumi.Input[str] name: Resource name for the ServicePerimeter. The short_name component must
1024
1049
  begin with a letter and only include alphanumeric and '_'.
1025
1050
  Format: accessPolicies/{policy_id}/servicePerimeters/{short_name}
@@ -1071,6 +1096,7 @@ class ServicePerimeter(pulumi.CustomResource):
1071
1096
 
1072
1097
  __props__.__dict__["create_time"] = create_time
1073
1098
  __props__.__dict__["description"] = description
1099
+ __props__.__dict__["etag"] = etag
1074
1100
  __props__.__dict__["name"] = name
1075
1101
  __props__.__dict__["parent"] = parent
1076
1102
  __props__.__dict__["perimeter_type"] = perimeter_type
@@ -1098,6 +1124,16 @@ class ServicePerimeter(pulumi.CustomResource):
1098
1124
  """
1099
1125
  return pulumi.get(self, "description")
1100
1126
 
1127
+ @property
1128
+ @pulumi.getter
1129
+ def etag(self) -> pulumi.Output[str]:
1130
+ """
1131
+ An opaque identifier for the current version of the ServicePerimeter. This
1132
+ identifier does not follow any specific format. If an etag is not provided, the
1133
+ operation will be performed as if a valid etag is provided.
1134
+ """
1135
+ return pulumi.get(self, "etag")
1136
+
1101
1137
  @property
1102
1138
  @pulumi.getter
1103
1139
  def name(self) -> pulumi.Output[str]:
@@ -175,6 +175,9 @@ class ServicePerimeterDryRunEgressPolicy(pulumi.CustomResource):
175
175
  > **Note:** By default, updates to this resource will remove the EgressPolicy from the
176
176
  from the perimeter and add it back in a non-atomic manner. To ensure that the new EgressPolicy
177
177
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
178
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
179
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].egress_policies]` so
180
+ they don't fight over which egress rules should be in the policy.
178
181
 
179
182
  To get more information about ServicePerimeterDryRunEgressPolicy, see:
180
183
 
@@ -215,6 +218,9 @@ class ServicePerimeterDryRunEgressPolicy(pulumi.CustomResource):
215
218
  > **Note:** By default, updates to this resource will remove the EgressPolicy from the
216
219
  from the perimeter and add it back in a non-atomic manner. To ensure that the new EgressPolicy
217
220
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
221
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
222
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].egress_policies]` so
223
+ they don't fight over which egress rules should be in the policy.
218
224
 
219
225
  To get more information about ServicePerimeterDryRunEgressPolicy, see:
220
226
 
@@ -180,6 +180,9 @@ class ServicePerimeterDryRunIngressPolicy(pulumi.CustomResource):
180
180
  > **Note:** By default, updates to this resource will remove the IngressPolicy from the
181
181
  from the perimeter and add it back in a non-atomic manner. To ensure that the new IngressPolicy
182
182
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
183
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
184
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].ingress_policies]` so
185
+ they don't fight over which ingress rules should be in the policy.
183
186
 
184
187
  To get more information about ServicePerimeterDryRunIngressPolicy, see:
185
188
 
@@ -222,6 +225,9 @@ class ServicePerimeterDryRunIngressPolicy(pulumi.CustomResource):
222
225
  > **Note:** By default, updates to this resource will remove the IngressPolicy from the
223
226
  from the perimeter and add it back in a non-atomic manner. To ensure that the new IngressPolicy
224
227
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
228
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
229
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [spec[0].ingress_policies]` so
230
+ they don't fight over which ingress rules should be in the policy.
225
231
 
226
232
  To get more information about ServicePerimeterDryRunIngressPolicy, see:
227
233
 
@@ -175,6 +175,9 @@ class ServicePerimeterEgressPolicy(pulumi.CustomResource):
175
175
  > **Note:** By default, updates to this resource will remove the EgressPolicy from the
176
176
  from the perimeter and add it back in a non-atomic manner. To ensure that the new EgressPolicy
177
177
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
178
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
179
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].egress_policies]` so
180
+ they don't fight over which egress rules should be in the policy.
178
181
 
179
182
  To get more information about ServicePerimeterEgressPolicy, see:
180
183
 
@@ -215,6 +218,9 @@ class ServicePerimeterEgressPolicy(pulumi.CustomResource):
215
218
  > **Note:** By default, updates to this resource will remove the EgressPolicy from the
216
219
  from the perimeter and add it back in a non-atomic manner. To ensure that the new EgressPolicy
217
220
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
221
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
222
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].egress_policies]` so
223
+ they don't fight over which egress rules should be in the policy.
218
224
 
219
225
  To get more information about ServicePerimeterEgressPolicy, see:
220
226
 
@@ -180,6 +180,9 @@ class ServicePerimeterIngressPolicy(pulumi.CustomResource):
180
180
  > **Note:** By default, updates to this resource will remove the IngressPolicy from the
181
181
  from the perimeter and add it back in a non-atomic manner. To ensure that the new IngressPolicy
182
182
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
183
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
184
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].ingress_policies]` so
185
+ they don't fight over which ingress rules should be in the policy.
183
186
 
184
187
  To get more information about ServicePerimeterIngressPolicy, see:
185
188
 
@@ -222,6 +225,9 @@ class ServicePerimeterIngressPolicy(pulumi.CustomResource):
222
225
  > **Note:** By default, updates to this resource will remove the IngressPolicy from the
223
226
  from the perimeter and add it back in a non-atomic manner. To ensure that the new IngressPolicy
224
227
  is added before the old one is removed, add a `lifecycle` block with `create_before_destroy = true` to this resource.
228
+ **Note:** If this resource is used alongside a `accesscontextmanager.ServicePerimeter` resource,
229
+ the service perimeter resource must have a `lifecycle` block with `ignore_changes = [status[0].ingress_policies]` so
230
+ they don't fight over which ingress rules should be in the policy.
225
231
 
226
232
  To get more information about ServicePerimeterIngressPolicy, see:
227
233
 
@@ -37,7 +37,7 @@ class AppGroupArgs:
37
37
  - - -
38
38
  :param pulumi.Input[Sequence[pulumi.Input['AppGroupAttributeArgs']]] attributes: A list of attributes
39
39
  Structure is documented below.
40
- :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaing this grouping.
40
+ :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaining this grouping.
41
41
  :param pulumi.Input[str] channel_uri: A reference to the associated storefront/marketplace.
42
42
  :param pulumi.Input[str] display_name: App group name displayed in the UI
43
43
  :param pulumi.Input[str] name: Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._-$ %.
@@ -91,7 +91,7 @@ class AppGroupArgs:
91
91
  @pulumi.getter(name="channelId")
92
92
  def channel_id(self) -> Optional[pulumi.Input[str]]:
93
93
  """
94
- Channel identifier identifies the owner maintaing this grouping.
94
+ Channel identifier identifies the owner maintaining this grouping.
95
95
  """
96
96
  return pulumi.get(self, "channel_id")
97
97
 
@@ -168,7 +168,7 @@ class _AppGroupState:
168
168
  :param pulumi.Input[str] app_group_id: Internal identifier that cannot be edited
169
169
  :param pulumi.Input[Sequence[pulumi.Input['AppGroupAttributeArgs']]] attributes: A list of attributes
170
170
  Structure is documented below.
171
- :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaing this grouping.
171
+ :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaining this grouping.
172
172
  :param pulumi.Input[str] channel_uri: A reference to the associated storefront/marketplace.
173
173
  :param pulumi.Input[str] created_at: Created time as milliseconds since epoch.
174
174
  :param pulumi.Input[str] display_name: App group name displayed in the UI
@@ -235,7 +235,7 @@ class _AppGroupState:
235
235
  @pulumi.getter(name="channelId")
236
236
  def channel_id(self) -> Optional[pulumi.Input[str]]:
237
237
  """
238
- Channel identifier identifies the owner maintaing this grouping.
238
+ Channel identifier identifies the owner maintaining this grouping.
239
239
  """
240
240
  return pulumi.get(self, "channel_id")
241
241
 
@@ -476,7 +476,7 @@ class AppGroup(pulumi.CustomResource):
476
476
  :param pulumi.ResourceOptions opts: Options for the resource.
477
477
  :param pulumi.Input[Sequence[pulumi.Input[Union['AppGroupAttributeArgs', 'AppGroupAttributeArgsDict']]]] attributes: A list of attributes
478
478
  Structure is documented below.
479
- :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaing this grouping.
479
+ :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaining this grouping.
480
480
  :param pulumi.Input[str] channel_uri: A reference to the associated storefront/marketplace.
481
481
  :param pulumi.Input[str] display_name: App group name displayed in the UI
482
482
  :param pulumi.Input[str] name: Name of the AppGroup. Characters you can use in the name are restricted to: A-Z0-9._-$ %.
@@ -683,7 +683,7 @@ class AppGroup(pulumi.CustomResource):
683
683
  :param pulumi.Input[str] app_group_id: Internal identifier that cannot be edited
684
684
  :param pulumi.Input[Sequence[pulumi.Input[Union['AppGroupAttributeArgs', 'AppGroupAttributeArgsDict']]]] attributes: A list of attributes
685
685
  Structure is documented below.
686
- :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaing this grouping.
686
+ :param pulumi.Input[str] channel_id: Channel identifier identifies the owner maintaining this grouping.
687
687
  :param pulumi.Input[str] channel_uri: A reference to the associated storefront/marketplace.
688
688
  :param pulumi.Input[str] created_at: Created time as milliseconds since epoch.
689
689
  :param pulumi.Input[str] display_name: App group name displayed in the UI
@@ -736,7 +736,7 @@ class AppGroup(pulumi.CustomResource):
736
736
  @pulumi.getter(name="channelId")
737
737
  def channel_id(self) -> pulumi.Output[Optional[str]]:
738
738
  """
739
- Channel identifier identifies the owner maintaing this grouping.
739
+ Channel identifier identifies the owner maintaining this grouping.
740
740
  """
741
741
  return pulumi.get(self, "channel_id")
742
742
 
@@ -249,6 +249,7 @@ class Client(pulumi.CustomResource):
249
249
  ```python
250
250
  import pulumi
251
251
  import pulumi_gcp as gcp
252
+ import pulumi_std as std
252
253
 
253
254
  test_project = gcp.organizations.get_project()
254
255
  keyring = gcp.kms.KeyRing("keyring",
@@ -268,9 +269,9 @@ class Client(pulumi.CustomResource):
268
269
  run_as_service_account=service_account.email,
269
270
  cloud_kms_config={
270
271
  "kms_location": "us-east1",
271
- "kms_ring": keyring.id,
272
- "key": cryptokey.id,
273
- "key_version": test_key.id,
272
+ "kms_ring": std.basename_output(input=keyring.id).apply(lambda invoke: invoke.result),
273
+ "key": std.basename_output(input=cryptokey.id).apply(lambda invoke: invoke.result),
274
+ "key_version": std.basename_output(input=test_key.id).apply(lambda invoke: invoke.result),
274
275
  "kms_project_id": test_project.project_id,
275
276
  })
276
277
  ```
@@ -343,6 +344,7 @@ class Client(pulumi.CustomResource):
343
344
  ```python
344
345
  import pulumi
345
346
  import pulumi_gcp as gcp
347
+ import pulumi_std as std
346
348
 
347
349
  test_project = gcp.organizations.get_project()
348
350
  keyring = gcp.kms.KeyRing("keyring",
@@ -362,9 +364,9 @@ class Client(pulumi.CustomResource):
362
364
  run_as_service_account=service_account.email,
363
365
  cloud_kms_config={
364
366
  "kms_location": "us-east1",
365
- "kms_ring": keyring.id,
366
- "key": cryptokey.id,
367
- "key_version": test_key.id,
367
+ "kms_ring": std.basename_output(input=keyring.id).apply(lambda invoke: invoke.result),
368
+ "key": std.basename_output(input=cryptokey.id).apply(lambda invoke: invoke.result),
369
+ "key_version": std.basename_output(input=test_key.id).apply(lambda invoke: invoke.result),
368
370
  "kms_project_id": test_project.project_id,
369
371
  })
370
372
  ```