pulumi-gcp 8.16.0a1738080576__py3-none-any.whl → 8.17.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 (83) hide show
  1. pulumi_gcp/__init__.py +91 -0
  2. pulumi_gcp/alloydb/cluster.py +75 -7
  3. pulumi_gcp/apigee/_inputs.py +91 -0
  4. pulumi_gcp/apigee/endpoint_attachment.py +0 -64
  5. pulumi_gcp/apigee/environment.py +54 -0
  6. pulumi_gcp/apigee/outputs.py +54 -0
  7. pulumi_gcp/apihub/__init__.py +10 -0
  8. pulumi_gcp/apihub/_inputs.py +154 -0
  9. pulumi_gcp/apihub/api_hub_instance.py +784 -0
  10. pulumi_gcp/apihub/outputs.py +124 -0
  11. pulumi_gcp/chronicle/__init__.py +1 -0
  12. pulumi_gcp/chronicle/_inputs.py +124 -0
  13. pulumi_gcp/chronicle/outputs.py +112 -0
  14. pulumi_gcp/chronicle/retrohunt.py +645 -0
  15. pulumi_gcp/cloudrunv2/_inputs.py +197 -0
  16. pulumi_gcp/cloudrunv2/get_service.py +12 -1
  17. pulumi_gcp/cloudrunv2/outputs.py +256 -0
  18. pulumi_gcp/cloudrunv2/service.py +159 -0
  19. pulumi_gcp/colab/__init__.py +5 -0
  20. pulumi_gcp/colab/_inputs.py +131 -0
  21. pulumi_gcp/colab/get_runtime_template_iam_policy.py +182 -0
  22. pulumi_gcp/colab/outputs.py +92 -0
  23. pulumi_gcp/colab/runtime.py +696 -0
  24. pulumi_gcp/colab/runtime_template_iam_binding.py +828 -0
  25. pulumi_gcp/colab/runtime_template_iam_member.py +828 -0
  26. pulumi_gcp/colab/runtime_template_iam_policy.py +667 -0
  27. pulumi_gcp/compute/__init__.py +4 -0
  28. pulumi_gcp/compute/_inputs.py +526 -0
  29. pulumi_gcp/compute/firewall_policy_rule.py +104 -22
  30. pulumi_gcp/compute/firewall_policy_with_rules.py +114 -42
  31. pulumi_gcp/compute/get_instance_template_iam_policy.py +159 -0
  32. pulumi_gcp/compute/instance_template_iam_binding.py +998 -0
  33. pulumi_gcp/compute/instance_template_iam_member.py +998 -0
  34. pulumi_gcp/compute/instance_template_iam_policy.py +817 -0
  35. pulumi_gcp/compute/interconnect_attachment.py +189 -2
  36. pulumi_gcp/compute/network_firewall_policy_rule.py +122 -10
  37. pulumi_gcp/compute/network_firewall_policy_with_rules.py +116 -44
  38. pulumi_gcp/compute/outputs.py +352 -0
  39. pulumi_gcp/compute/project_metadata_item.py +12 -0
  40. pulumi_gcp/compute/public_advertised_prefix.py +87 -0
  41. pulumi_gcp/compute/region_network_firewall_policy_rule.py +130 -10
  42. pulumi_gcp/compute/region_network_firewall_policy_with_rules.py +104 -32
  43. pulumi_gcp/compute/router_peer.py +115 -3
  44. pulumi_gcp/config/__init__.pyi +2 -0
  45. pulumi_gcp/config/vars.py +4 -0
  46. pulumi_gcp/filestore/get_instance.py +12 -1
  47. pulumi_gcp/filestore/instance.py +75 -0
  48. pulumi_gcp/gemini/code_repository_index.py +29 -33
  49. pulumi_gcp/gemini/get_repository_group_iam_policy.py +28 -2
  50. pulumi_gcp/gemini/repository_group.py +76 -26
  51. pulumi_gcp/gemini/repository_group_iam_binding.py +258 -0
  52. pulumi_gcp/gemini/repository_group_iam_member.py +258 -0
  53. pulumi_gcp/gemini/repository_group_iam_policy.py +258 -0
  54. pulumi_gcp/kms/__init__.py +1 -0
  55. pulumi_gcp/kms/get_key_handles.py +172 -0
  56. pulumi_gcp/kms/outputs.py +45 -0
  57. pulumi_gcp/networksecurity/_inputs.py +72 -0
  58. pulumi_gcp/networksecurity/outputs.py +76 -0
  59. pulumi_gcp/networksecurity/security_profile.py +233 -7
  60. pulumi_gcp/networksecurity/security_profile_group.py +218 -0
  61. pulumi_gcp/organizations/__init__.py +1 -0
  62. pulumi_gcp/organizations/get_s.py +128 -0
  63. pulumi_gcp/organizations/outputs.py +63 -0
  64. pulumi_gcp/parametermanager/__init__.py +3 -0
  65. pulumi_gcp/parametermanager/get_parameter.py +211 -0
  66. pulumi_gcp/parametermanager/get_regional_parameters.py +157 -0
  67. pulumi_gcp/parametermanager/outputs.py +210 -0
  68. pulumi_gcp/parametermanager/parameter_version.py +496 -0
  69. pulumi_gcp/parametermanager/regional_parameter_version.py +10 -38
  70. pulumi_gcp/provider.py +20 -0
  71. pulumi_gcp/pubsub/_inputs.py +213 -1
  72. pulumi_gcp/pubsub/outputs.py +278 -2
  73. pulumi_gcp/pubsub/topic.py +42 -0
  74. pulumi_gcp/pulumi-plugin.json +1 -1
  75. pulumi_gcp/redis/__init__.py +1 -0
  76. pulumi_gcp/redis/_inputs.py +342 -6
  77. pulumi_gcp/redis/cluster.py +223 -102
  78. pulumi_gcp/redis/cluster_user_created_connections.py +845 -0
  79. pulumi_gcp/redis/outputs.py +268 -4
  80. {pulumi_gcp-8.16.0a1738080576.dist-info → pulumi_gcp-8.17.0.dist-info}/METADATA +1 -1
  81. {pulumi_gcp-8.16.0a1738080576.dist-info → pulumi_gcp-8.17.0.dist-info}/RECORD +83 -63
  82. {pulumi_gcp-8.16.0a1738080576.dist-info → pulumi_gcp-8.17.0.dist-info}/WHEEL +0 -0
  83. {pulumi_gcp-8.16.0a1738080576.dist-info → pulumi_gcp-8.17.0.dist-info}/top_level.txt +0 -0
@@ -217,6 +217,135 @@ class RepositoryGroupIamPolicy(pulumi.CustomResource):
217
217
  repository_group_id: Optional[pulumi.Input[str]] = None,
218
218
  __props__=None):
219
219
  """
220
+ Three different resources help you manage your IAM policy for Gemini for Google Cloud RepositoryGroup. Each of these resources serves a different use case:
221
+
222
+ * `gemini.RepositoryGroupIamPolicy`: Authoritative. Sets the IAM policy for the repositorygroup and replaces any existing policy already attached.
223
+ * `gemini.RepositoryGroupIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the repositorygroup are preserved.
224
+ * `gemini.RepositoryGroupIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the repositorygroup are preserved.
225
+
226
+ A data source can be used to retrieve policy data in advent you do not need creation
227
+
228
+ * `gemini.RepositoryGroupIamPolicy`: Retrieves the IAM policy for the repositorygroup
229
+
230
+ > **Note:** `gemini.RepositoryGroupIamPolicy` **cannot** be used in conjunction with `gemini.RepositoryGroupIamBinding` and `gemini.RepositoryGroupIamMember` or they will fight over what your policy should be.
231
+
232
+ > **Note:** `gemini.RepositoryGroupIamBinding` resources **can be** used in conjunction with `gemini.RepositoryGroupIamMember` resources **only if** they do not grant privilege to the same role.
233
+
234
+ ## gemini.RepositoryGroupIamPolicy
235
+
236
+ ```python
237
+ import pulumi
238
+ import pulumi_gcp as gcp
239
+
240
+ admin = gcp.organizations.get_iam_policy(bindings=[{
241
+ "role": "roles/cloudaicompanion.repositoryGroupsUser",
242
+ "members": ["user:jane@example.com"],
243
+ }])
244
+ policy = gcp.gemini.RepositoryGroupIamPolicy("policy",
245
+ project=example["project"],
246
+ location=example["location"],
247
+ code_repository_index=example["codeRepositoryIndex"],
248
+ repository_group_id=example["repositoryGroupId"],
249
+ policy_data=admin.policy_data)
250
+ ```
251
+
252
+ ## gemini.RepositoryGroupIamBinding
253
+
254
+ ```python
255
+ import pulumi
256
+ import pulumi_gcp as gcp
257
+
258
+ binding = gcp.gemini.RepositoryGroupIamBinding("binding",
259
+ project=example["project"],
260
+ location=example["location"],
261
+ code_repository_index=example["codeRepositoryIndex"],
262
+ repository_group_id=example["repositoryGroupId"],
263
+ role="roles/cloudaicompanion.repositoryGroupsUser",
264
+ members=["user:jane@example.com"])
265
+ ```
266
+
267
+ ## gemini.RepositoryGroupIamMember
268
+
269
+ ```python
270
+ import pulumi
271
+ import pulumi_gcp as gcp
272
+
273
+ member = gcp.gemini.RepositoryGroupIamMember("member",
274
+ project=example["project"],
275
+ location=example["location"],
276
+ code_repository_index=example["codeRepositoryIndex"],
277
+ repository_group_id=example["repositoryGroupId"],
278
+ role="roles/cloudaicompanion.repositoryGroupsUser",
279
+ member="user:jane@example.com")
280
+ ```
281
+
282
+ ## This resource supports User Project Overrides.
283
+
284
+ -
285
+
286
+ # IAM policy for Gemini for Google Cloud RepositoryGroup
287
+ Three different resources help you manage your IAM policy for Gemini for Google Cloud RepositoryGroup. Each of these resources serves a different use case:
288
+
289
+ * `gemini.RepositoryGroupIamPolicy`: Authoritative. Sets the IAM policy for the repositorygroup and replaces any existing policy already attached.
290
+ * `gemini.RepositoryGroupIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the repositorygroup are preserved.
291
+ * `gemini.RepositoryGroupIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the repositorygroup are preserved.
292
+
293
+ A data source can be used to retrieve policy data in advent you do not need creation
294
+
295
+ * `gemini.RepositoryGroupIamPolicy`: Retrieves the IAM policy for the repositorygroup
296
+
297
+ > **Note:** `gemini.RepositoryGroupIamPolicy` **cannot** be used in conjunction with `gemini.RepositoryGroupIamBinding` and `gemini.RepositoryGroupIamMember` or they will fight over what your policy should be.
298
+
299
+ > **Note:** `gemini.RepositoryGroupIamBinding` resources **can be** used in conjunction with `gemini.RepositoryGroupIamMember` resources **only if** they do not grant privilege to the same role.
300
+
301
+ ## gemini.RepositoryGroupIamPolicy
302
+
303
+ ```python
304
+ import pulumi
305
+ import pulumi_gcp as gcp
306
+
307
+ admin = gcp.organizations.get_iam_policy(bindings=[{
308
+ "role": "roles/cloudaicompanion.repositoryGroupsUser",
309
+ "members": ["user:jane@example.com"],
310
+ }])
311
+ policy = gcp.gemini.RepositoryGroupIamPolicy("policy",
312
+ project=example["project"],
313
+ location=example["location"],
314
+ code_repository_index=example["codeRepositoryIndex"],
315
+ repository_group_id=example["repositoryGroupId"],
316
+ policy_data=admin.policy_data)
317
+ ```
318
+
319
+ ## gemini.RepositoryGroupIamBinding
320
+
321
+ ```python
322
+ import pulumi
323
+ import pulumi_gcp as gcp
324
+
325
+ binding = gcp.gemini.RepositoryGroupIamBinding("binding",
326
+ project=example["project"],
327
+ location=example["location"],
328
+ code_repository_index=example["codeRepositoryIndex"],
329
+ repository_group_id=example["repositoryGroupId"],
330
+ role="roles/cloudaicompanion.repositoryGroupsUser",
331
+ members=["user:jane@example.com"])
332
+ ```
333
+
334
+ ## gemini.RepositoryGroupIamMember
335
+
336
+ ```python
337
+ import pulumi
338
+ import pulumi_gcp as gcp
339
+
340
+ member = gcp.gemini.RepositoryGroupIamMember("member",
341
+ project=example["project"],
342
+ location=example["location"],
343
+ code_repository_index=example["codeRepositoryIndex"],
344
+ repository_group_id=example["repositoryGroupId"],
345
+ role="roles/cloudaicompanion.repositoryGroupsUser",
346
+ member="user:jane@example.com")
347
+ ```
348
+
220
349
  ## Import
221
350
 
222
351
  For all import syntaxes, the "resource in question" can take any of the following forms:
@@ -272,6 +401,135 @@ class RepositoryGroupIamPolicy(pulumi.CustomResource):
272
401
  args: RepositoryGroupIamPolicyArgs,
273
402
  opts: Optional[pulumi.ResourceOptions] = None):
274
403
  """
404
+ Three different resources help you manage your IAM policy for Gemini for Google Cloud RepositoryGroup. Each of these resources serves a different use case:
405
+
406
+ * `gemini.RepositoryGroupIamPolicy`: Authoritative. Sets the IAM policy for the repositorygroup and replaces any existing policy already attached.
407
+ * `gemini.RepositoryGroupIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the repositorygroup are preserved.
408
+ * `gemini.RepositoryGroupIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the repositorygroup are preserved.
409
+
410
+ A data source can be used to retrieve policy data in advent you do not need creation
411
+
412
+ * `gemini.RepositoryGroupIamPolicy`: Retrieves the IAM policy for the repositorygroup
413
+
414
+ > **Note:** `gemini.RepositoryGroupIamPolicy` **cannot** be used in conjunction with `gemini.RepositoryGroupIamBinding` and `gemini.RepositoryGroupIamMember` or they will fight over what your policy should be.
415
+
416
+ > **Note:** `gemini.RepositoryGroupIamBinding` resources **can be** used in conjunction with `gemini.RepositoryGroupIamMember` resources **only if** they do not grant privilege to the same role.
417
+
418
+ ## gemini.RepositoryGroupIamPolicy
419
+
420
+ ```python
421
+ import pulumi
422
+ import pulumi_gcp as gcp
423
+
424
+ admin = gcp.organizations.get_iam_policy(bindings=[{
425
+ "role": "roles/cloudaicompanion.repositoryGroupsUser",
426
+ "members": ["user:jane@example.com"],
427
+ }])
428
+ policy = gcp.gemini.RepositoryGroupIamPolicy("policy",
429
+ project=example["project"],
430
+ location=example["location"],
431
+ code_repository_index=example["codeRepositoryIndex"],
432
+ repository_group_id=example["repositoryGroupId"],
433
+ policy_data=admin.policy_data)
434
+ ```
435
+
436
+ ## gemini.RepositoryGroupIamBinding
437
+
438
+ ```python
439
+ import pulumi
440
+ import pulumi_gcp as gcp
441
+
442
+ binding = gcp.gemini.RepositoryGroupIamBinding("binding",
443
+ project=example["project"],
444
+ location=example["location"],
445
+ code_repository_index=example["codeRepositoryIndex"],
446
+ repository_group_id=example["repositoryGroupId"],
447
+ role="roles/cloudaicompanion.repositoryGroupsUser",
448
+ members=["user:jane@example.com"])
449
+ ```
450
+
451
+ ## gemini.RepositoryGroupIamMember
452
+
453
+ ```python
454
+ import pulumi
455
+ import pulumi_gcp as gcp
456
+
457
+ member = gcp.gemini.RepositoryGroupIamMember("member",
458
+ project=example["project"],
459
+ location=example["location"],
460
+ code_repository_index=example["codeRepositoryIndex"],
461
+ repository_group_id=example["repositoryGroupId"],
462
+ role="roles/cloudaicompanion.repositoryGroupsUser",
463
+ member="user:jane@example.com")
464
+ ```
465
+
466
+ ## This resource supports User Project Overrides.
467
+
468
+ -
469
+
470
+ # IAM policy for Gemini for Google Cloud RepositoryGroup
471
+ Three different resources help you manage your IAM policy for Gemini for Google Cloud RepositoryGroup. Each of these resources serves a different use case:
472
+
473
+ * `gemini.RepositoryGroupIamPolicy`: Authoritative. Sets the IAM policy for the repositorygroup and replaces any existing policy already attached.
474
+ * `gemini.RepositoryGroupIamBinding`: Authoritative for a given role. Updates the IAM policy to grant a role to a list of members. Other roles within the IAM policy for the repositorygroup are preserved.
475
+ * `gemini.RepositoryGroupIamMember`: Non-authoritative. Updates the IAM policy to grant a role to a new member. Other members for the role for the repositorygroup are preserved.
476
+
477
+ A data source can be used to retrieve policy data in advent you do not need creation
478
+
479
+ * `gemini.RepositoryGroupIamPolicy`: Retrieves the IAM policy for the repositorygroup
480
+
481
+ > **Note:** `gemini.RepositoryGroupIamPolicy` **cannot** be used in conjunction with `gemini.RepositoryGroupIamBinding` and `gemini.RepositoryGroupIamMember` or they will fight over what your policy should be.
482
+
483
+ > **Note:** `gemini.RepositoryGroupIamBinding` resources **can be** used in conjunction with `gemini.RepositoryGroupIamMember` resources **only if** they do not grant privilege to the same role.
484
+
485
+ ## gemini.RepositoryGroupIamPolicy
486
+
487
+ ```python
488
+ import pulumi
489
+ import pulumi_gcp as gcp
490
+
491
+ admin = gcp.organizations.get_iam_policy(bindings=[{
492
+ "role": "roles/cloudaicompanion.repositoryGroupsUser",
493
+ "members": ["user:jane@example.com"],
494
+ }])
495
+ policy = gcp.gemini.RepositoryGroupIamPolicy("policy",
496
+ project=example["project"],
497
+ location=example["location"],
498
+ code_repository_index=example["codeRepositoryIndex"],
499
+ repository_group_id=example["repositoryGroupId"],
500
+ policy_data=admin.policy_data)
501
+ ```
502
+
503
+ ## gemini.RepositoryGroupIamBinding
504
+
505
+ ```python
506
+ import pulumi
507
+ import pulumi_gcp as gcp
508
+
509
+ binding = gcp.gemini.RepositoryGroupIamBinding("binding",
510
+ project=example["project"],
511
+ location=example["location"],
512
+ code_repository_index=example["codeRepositoryIndex"],
513
+ repository_group_id=example["repositoryGroupId"],
514
+ role="roles/cloudaicompanion.repositoryGroupsUser",
515
+ members=["user:jane@example.com"])
516
+ ```
517
+
518
+ ## gemini.RepositoryGroupIamMember
519
+
520
+ ```python
521
+ import pulumi
522
+ import pulumi_gcp as gcp
523
+
524
+ member = gcp.gemini.RepositoryGroupIamMember("member",
525
+ project=example["project"],
526
+ location=example["location"],
527
+ code_repository_index=example["codeRepositoryIndex"],
528
+ repository_group_id=example["repositoryGroupId"],
529
+ role="roles/cloudaicompanion.repositoryGroupsUser",
530
+ member="user:jane@example.com")
531
+ ```
532
+
275
533
  ## Import
276
534
 
277
535
  For all import syntaxes, the "resource in question" can take any of the following forms:
@@ -22,6 +22,7 @@ from .get_crypto_key_versions import *
22
22
  from .get_crypto_keys import *
23
23
  from .get_ekm_connection_iam_policy import *
24
24
  from .get_key_handle import *
25
+ from .get_key_handles import *
25
26
  from .get_key_ring_iam_policy import *
26
27
  from .get_key_rings import *
27
28
  from .get_kms_crypto_key import *
@@ -0,0 +1,172 @@
1
+ # coding=utf-8
2
+ # *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
3
+ # *** Do not edit by hand unless you're certain you know what you are doing! ***
4
+
5
+ import copy
6
+ import warnings
7
+ import sys
8
+ import pulumi
9
+ import pulumi.runtime
10
+ from typing import Any, Mapping, Optional, Sequence, Union, overload
11
+ if sys.version_info >= (3, 11):
12
+ from typing import NotRequired, TypedDict, TypeAlias
13
+ else:
14
+ from typing_extensions import NotRequired, TypedDict, TypeAlias
15
+ from .. import _utilities
16
+ from . import outputs
17
+
18
+ __all__ = [
19
+ 'GetKeyHandlesResult',
20
+ 'AwaitableGetKeyHandlesResult',
21
+ 'get_key_handles',
22
+ 'get_key_handles_output',
23
+ ]
24
+
25
+ @pulumi.output_type
26
+ class GetKeyHandlesResult:
27
+ """
28
+ A collection of values returned by getKeyHandles.
29
+ """
30
+ def __init__(__self__, id=None, key_handles=None, location=None, project=None, resource_type_selector=None):
31
+ if id and not isinstance(id, str):
32
+ raise TypeError("Expected argument 'id' to be a str")
33
+ pulumi.set(__self__, "id", id)
34
+ if key_handles and not isinstance(key_handles, list):
35
+ raise TypeError("Expected argument 'key_handles' to be a list")
36
+ pulumi.set(__self__, "key_handles", key_handles)
37
+ if location and not isinstance(location, str):
38
+ raise TypeError("Expected argument 'location' to be a str")
39
+ pulumi.set(__self__, "location", location)
40
+ if project and not isinstance(project, str):
41
+ raise TypeError("Expected argument 'project' to be a str")
42
+ pulumi.set(__self__, "project", project)
43
+ if resource_type_selector and not isinstance(resource_type_selector, str):
44
+ raise TypeError("Expected argument 'resource_type_selector' to be a str")
45
+ pulumi.set(__self__, "resource_type_selector", resource_type_selector)
46
+
47
+ @property
48
+ @pulumi.getter
49
+ def id(self) -> str:
50
+ """
51
+ The provider-assigned unique ID for this managed resource.
52
+ """
53
+ return pulumi.get(self, "id")
54
+
55
+ @property
56
+ @pulumi.getter(name="keyHandles")
57
+ def key_handles(self) -> Sequence['outputs.GetKeyHandlesKeyHandleResult']:
58
+ return pulumi.get(self, "key_handles")
59
+
60
+ @property
61
+ @pulumi.getter
62
+ def location(self) -> str:
63
+ """
64
+ The location of the KMS Key and KeyHandle.
65
+ """
66
+ return pulumi.get(self, "location")
67
+
68
+ @property
69
+ @pulumi.getter
70
+ def project(self) -> Optional[str]:
71
+ """
72
+ The identifier of the project where KMS KeyHandle is created.
73
+ """
74
+ return pulumi.get(self, "project")
75
+
76
+ @property
77
+ @pulumi.getter(name="resourceTypeSelector")
78
+ def resource_type_selector(self) -> str:
79
+ """
80
+ Indicates the resource type that the resulting CryptoKey is meant to protect, e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types.
81
+ """
82
+ return pulumi.get(self, "resource_type_selector")
83
+
84
+
85
+ class AwaitableGetKeyHandlesResult(GetKeyHandlesResult):
86
+ # pylint: disable=using-constant-test
87
+ def __await__(self):
88
+ if False:
89
+ yield self
90
+ return GetKeyHandlesResult(
91
+ id=self.id,
92
+ key_handles=self.key_handles,
93
+ location=self.location,
94
+ project=self.project,
95
+ resource_type_selector=self.resource_type_selector)
96
+
97
+
98
+ def get_key_handles(location: Optional[str] = None,
99
+ project: Optional[str] = None,
100
+ resource_type_selector: Optional[str] = None,
101
+ opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetKeyHandlesResult:
102
+ """
103
+ ## Example Usage
104
+
105
+ ```python
106
+ import pulumi
107
+ import pulumi_gcp as gcp
108
+
109
+ my_key_handles = gcp.kms.get_key_handles(project="resource-project-id",
110
+ location="us-central1",
111
+ resource_type_selector="storage.googleapis.com/Bucket")
112
+ ```
113
+
114
+
115
+ :param str location: The Google Cloud Platform location for the KeyHandle.
116
+ A full list of valid locations can be found by running `gcloud kms locations list`.
117
+ :param str project: The project in which the resource belongs. If it
118
+ is not provided, the provider project is used.
119
+ :param str resource_type_selector: The resource type by which to filter KeyHandle e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types.
120
+
121
+ - - -
122
+ """
123
+ __args__ = dict()
124
+ __args__['location'] = location
125
+ __args__['project'] = project
126
+ __args__['resourceTypeSelector'] = resource_type_selector
127
+ opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
128
+ __ret__ = pulumi.runtime.invoke('gcp:kms/getKeyHandles:getKeyHandles', __args__, opts=opts, typ=GetKeyHandlesResult).value
129
+
130
+ return AwaitableGetKeyHandlesResult(
131
+ id=pulumi.get(__ret__, 'id'),
132
+ key_handles=pulumi.get(__ret__, 'key_handles'),
133
+ location=pulumi.get(__ret__, 'location'),
134
+ project=pulumi.get(__ret__, 'project'),
135
+ resource_type_selector=pulumi.get(__ret__, 'resource_type_selector'))
136
+ def get_key_handles_output(location: Optional[pulumi.Input[str]] = None,
137
+ project: Optional[pulumi.Input[Optional[str]]] = None,
138
+ resource_type_selector: Optional[pulumi.Input[str]] = None,
139
+ opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetKeyHandlesResult]:
140
+ """
141
+ ## Example Usage
142
+
143
+ ```python
144
+ import pulumi
145
+ import pulumi_gcp as gcp
146
+
147
+ my_key_handles = gcp.kms.get_key_handles(project="resource-project-id",
148
+ location="us-central1",
149
+ resource_type_selector="storage.googleapis.com/Bucket")
150
+ ```
151
+
152
+
153
+ :param str location: The Google Cloud Platform location for the KeyHandle.
154
+ A full list of valid locations can be found by running `gcloud kms locations list`.
155
+ :param str project: The project in which the resource belongs. If it
156
+ is not provided, the provider project is used.
157
+ :param str resource_type_selector: The resource type by which to filter KeyHandle e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types.
158
+
159
+ - - -
160
+ """
161
+ __args__ = dict()
162
+ __args__['location'] = location
163
+ __args__['project'] = project
164
+ __args__['resourceTypeSelector'] = resource_type_selector
165
+ opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
166
+ __ret__ = pulumi.runtime.invoke_output('gcp:kms/getKeyHandles:getKeyHandles', __args__, opts=opts, typ=GetKeyHandlesResult)
167
+ return __ret__.apply(lambda __response__: GetKeyHandlesResult(
168
+ id=pulumi.get(__response__, 'id'),
169
+ key_handles=pulumi.get(__response__, 'key_handles'),
170
+ location=pulumi.get(__response__, 'location'),
171
+ project=pulumi.get(__response__, 'project'),
172
+ resource_type_selector=pulumi.get(__response__, 'resource_type_selector')))
pulumi_gcp/kms/outputs.py CHANGED
@@ -45,6 +45,7 @@ __all__ = [
45
45
  'GetKMSCryptoKeyPrimaryResult',
46
46
  'GetKMSCryptoKeyVersionPublicKeyResult',
47
47
  'GetKMSCryptoKeyVersionTemplateResult',
48
+ 'GetKeyHandlesKeyHandleResult',
48
49
  'GetKeyRingsKeyRingResult',
49
50
  ]
50
51
 
@@ -1554,6 +1555,50 @@ class GetKMSCryptoKeyVersionTemplateResult(dict):
1554
1555
  return pulumi.get(self, "protection_level")
1555
1556
 
1556
1557
 
1558
+ @pulumi.output_type
1559
+ class GetKeyHandlesKeyHandleResult(dict):
1560
+ def __init__(__self__, *,
1561
+ kms_key: str,
1562
+ name: str,
1563
+ resource_type_selector: str):
1564
+ """
1565
+ :param str kms_key: The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`.
1566
+ :param str name: The name of the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyHandles/{keyHandleName}`.
1567
+ :param str resource_type_selector: The resource type by which to filter KeyHandle e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types.
1568
+
1569
+ - - -
1570
+ """
1571
+ pulumi.set(__self__, "kms_key", kms_key)
1572
+ pulumi.set(__self__, "name", name)
1573
+ pulumi.set(__self__, "resource_type_selector", resource_type_selector)
1574
+
1575
+ @property
1576
+ @pulumi.getter(name="kmsKey")
1577
+ def kms_key(self) -> str:
1578
+ """
1579
+ The identifier of the KMS Key created for the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyRings/{keyRingName}/cryptoKeys/{cryptoKeyName}`.
1580
+ """
1581
+ return pulumi.get(self, "kms_key")
1582
+
1583
+ @property
1584
+ @pulumi.getter
1585
+ def name(self) -> str:
1586
+ """
1587
+ The name of the KeyHandle. Its format is `projects/{projectId}/locations/{location}/keyHandles/{keyHandleName}`.
1588
+ """
1589
+ return pulumi.get(self, "name")
1590
+
1591
+ @property
1592
+ @pulumi.getter(name="resourceTypeSelector")
1593
+ def resource_type_selector(self) -> str:
1594
+ """
1595
+ The resource type by which to filter KeyHandle e.g. {SERVICE}.googleapis.com/{TYPE}. See documentation for supported resource types.
1596
+
1597
+ - - -
1598
+ """
1599
+ return pulumi.get(self, "resource_type_selector")
1600
+
1601
+
1557
1602
  @pulumi.output_type
1558
1603
  class GetKeyRingsKeyRingResult(dict):
1559
1604
  def __init__(__self__, *,
@@ -93,6 +93,10 @@ __all__ = [
93
93
  'MirroringDeploymentGroupConnectedEndpointGroupArgsDict',
94
94
  'MirroringEndpointGroupAssociationLocationsDetailArgs',
95
95
  'MirroringEndpointGroupAssociationLocationsDetailArgsDict',
96
+ 'SecurityProfileCustomInterceptProfileArgs',
97
+ 'SecurityProfileCustomInterceptProfileArgsDict',
98
+ 'SecurityProfileCustomMirroringProfileArgs',
99
+ 'SecurityProfileCustomMirroringProfileArgsDict',
96
100
  'SecurityProfileThreatPreventionProfileArgs',
97
101
  'SecurityProfileThreatPreventionProfileArgsDict',
98
102
  'SecurityProfileThreatPreventionProfileSeverityOverrideArgs',
@@ -2760,6 +2764,74 @@ class MirroringEndpointGroupAssociationLocationsDetailArgs:
2760
2764
  pulumi.set(self, "state", value)
2761
2765
 
2762
2766
 
2767
+ if not MYPY:
2768
+ class SecurityProfileCustomInterceptProfileArgsDict(TypedDict):
2769
+ intercept_endpoint_group: pulumi.Input[str]
2770
+ """
2771
+ The Intercept Endpoint Group to which matching traffic should be intercepted.
2772
+ Format: projects/{project_id}/locations/global/interceptEndpointGroups/{endpoint_group_id}
2773
+ """
2774
+ elif False:
2775
+ SecurityProfileCustomInterceptProfileArgsDict: TypeAlias = Mapping[str, Any]
2776
+
2777
+ @pulumi.input_type
2778
+ class SecurityProfileCustomInterceptProfileArgs:
2779
+ def __init__(__self__, *,
2780
+ intercept_endpoint_group: pulumi.Input[str]):
2781
+ """
2782
+ :param pulumi.Input[str] intercept_endpoint_group: The Intercept Endpoint Group to which matching traffic should be intercepted.
2783
+ Format: projects/{project_id}/locations/global/interceptEndpointGroups/{endpoint_group_id}
2784
+ """
2785
+ pulumi.set(__self__, "intercept_endpoint_group", intercept_endpoint_group)
2786
+
2787
+ @property
2788
+ @pulumi.getter(name="interceptEndpointGroup")
2789
+ def intercept_endpoint_group(self) -> pulumi.Input[str]:
2790
+ """
2791
+ The Intercept Endpoint Group to which matching traffic should be intercepted.
2792
+ Format: projects/{project_id}/locations/global/interceptEndpointGroups/{endpoint_group_id}
2793
+ """
2794
+ return pulumi.get(self, "intercept_endpoint_group")
2795
+
2796
+ @intercept_endpoint_group.setter
2797
+ def intercept_endpoint_group(self, value: pulumi.Input[str]):
2798
+ pulumi.set(self, "intercept_endpoint_group", value)
2799
+
2800
+
2801
+ if not MYPY:
2802
+ class SecurityProfileCustomMirroringProfileArgsDict(TypedDict):
2803
+ mirroring_endpoint_group: pulumi.Input[str]
2804
+ """
2805
+ The Mirroring Endpoint Group to which matching traffic should be mirrored.
2806
+ Format: projects/{project_id}/locations/global/mirroringEndpointGroups/{endpoint_group_id}
2807
+ """
2808
+ elif False:
2809
+ SecurityProfileCustomMirroringProfileArgsDict: TypeAlias = Mapping[str, Any]
2810
+
2811
+ @pulumi.input_type
2812
+ class SecurityProfileCustomMirroringProfileArgs:
2813
+ def __init__(__self__, *,
2814
+ mirroring_endpoint_group: pulumi.Input[str]):
2815
+ """
2816
+ :param pulumi.Input[str] mirroring_endpoint_group: The Mirroring Endpoint Group to which matching traffic should be mirrored.
2817
+ Format: projects/{project_id}/locations/global/mirroringEndpointGroups/{endpoint_group_id}
2818
+ """
2819
+ pulumi.set(__self__, "mirroring_endpoint_group", mirroring_endpoint_group)
2820
+
2821
+ @property
2822
+ @pulumi.getter(name="mirroringEndpointGroup")
2823
+ def mirroring_endpoint_group(self) -> pulumi.Input[str]:
2824
+ """
2825
+ The Mirroring Endpoint Group to which matching traffic should be mirrored.
2826
+ Format: projects/{project_id}/locations/global/mirroringEndpointGroups/{endpoint_group_id}
2827
+ """
2828
+ return pulumi.get(self, "mirroring_endpoint_group")
2829
+
2830
+ @mirroring_endpoint_group.setter
2831
+ def mirroring_endpoint_group(self, value: pulumi.Input[str]):
2832
+ pulumi.set(self, "mirroring_endpoint_group", value)
2833
+
2834
+
2763
2835
  if not MYPY:
2764
2836
  class SecurityProfileThreatPreventionProfileArgsDict(TypedDict):
2765
2837
  severity_overrides: NotRequired[pulumi.Input[Sequence[pulumi.Input['SecurityProfileThreatPreventionProfileSeverityOverrideArgsDict']]]]