pulumi-gcp 7.30.0a1720075632__py3-none-any.whl → 7.30.1__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 (56) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/artifactregistry/get_docker_image.py +2 -2
  3. pulumi_gcp/bigtable/gc_policy.py +68 -14
  4. pulumi_gcp/cloudfunctionsv2/_inputs.py +97 -0
  5. pulumi_gcp/cloudfunctionsv2/function.py +232 -0
  6. pulumi_gcp/cloudfunctionsv2/outputs.py +129 -1
  7. pulumi_gcp/compute/_inputs.py +622 -0
  8. pulumi_gcp/compute/address.py +0 -7
  9. pulumi_gcp/compute/backend_service.py +0 -14
  10. pulumi_gcp/compute/forwarding_rule.py +0 -21
  11. pulumi_gcp/compute/global_forwarding_rule.py +0 -21
  12. pulumi_gcp/compute/managed_ssl_certificate.py +0 -7
  13. pulumi_gcp/compute/manged_ssl_certificate.py +0 -7
  14. pulumi_gcp/compute/network_attachment.py +16 -0
  15. pulumi_gcp/compute/outputs.py +504 -8
  16. pulumi_gcp/compute/region_backend_service.py +0 -14
  17. pulumi_gcp/compute/region_ssl_certificate.py +0 -7
  18. pulumi_gcp/compute/ssl_certificate.py +0 -7
  19. pulumi_gcp/compute/target_https_proxy.py +76 -1
  20. pulumi_gcp/compute/url_map.py +255 -0
  21. pulumi_gcp/container/aws_cluster.py +2 -2
  22. pulumi_gcp/container/aws_node_pool.py +2 -2
  23. pulumi_gcp/container/azure_client.py +2 -2
  24. pulumi_gcp/container/azure_cluster.py +2 -2
  25. pulumi_gcp/container/azure_node_pool.py +2 -2
  26. pulumi_gcp/datafusion/_inputs.py +163 -11
  27. pulumi_gcp/datafusion/instance.py +64 -0
  28. pulumi_gcp/datafusion/outputs.py +127 -7
  29. pulumi_gcp/healthcare/_inputs.py +43 -0
  30. pulumi_gcp/healthcare/dataset.py +110 -0
  31. pulumi_gcp/healthcare/outputs.py +43 -0
  32. pulumi_gcp/identityplatform/config.py +1 -1
  33. pulumi_gcp/logging/billing_account_bucket_config.py +1 -1
  34. pulumi_gcp/logging/folder_bucket_config.py +1 -1
  35. pulumi_gcp/logging/organization_bucket_config.py +1 -1
  36. pulumi_gcp/monitoring/_inputs.py +77 -0
  37. pulumi_gcp/monitoring/outputs.py +63 -0
  38. pulumi_gcp/pulumi-plugin.json +1 -1
  39. pulumi_gcp/securitycenter/instance_iam_binding.py +64 -0
  40. pulumi_gcp/securitycenter/instance_iam_member.py +64 -0
  41. pulumi_gcp/securitycenter/instance_iam_policy.py +64 -0
  42. pulumi_gcp/storage/__init__.py +5 -0
  43. pulumi_gcp/storage/_inputs.py +130 -0
  44. pulumi_gcp/storage/get_managed_folder_iam_policy.py +115 -0
  45. pulumi_gcp/storage/managed_folder.py +440 -0
  46. pulumi_gcp/storage/managed_folder_iam_binding.py +947 -0
  47. pulumi_gcp/storage/managed_folder_iam_member.py +947 -0
  48. pulumi_gcp/storage/managed_folder_iam_policy.py +766 -0
  49. pulumi_gcp/storage/outputs.py +76 -0
  50. pulumi_gcp/vertex/_inputs.py +3 -3
  51. pulumi_gcp/vertex/ai_feature_online_store.py +9 -9
  52. pulumi_gcp/vertex/outputs.py +2 -2
  53. {pulumi_gcp-7.30.0a1720075632.dist-info → pulumi_gcp-7.30.1.dist-info}/METADATA +1 -1
  54. {pulumi_gcp-7.30.0a1720075632.dist-info → pulumi_gcp-7.30.1.dist-info}/RECORD +56 -51
  55. {pulumi_gcp-7.30.0a1720075632.dist-info → pulumi_gcp-7.30.1.dist-info}/WHEEL +0 -0
  56. {pulumi_gcp-7.30.0a1720075632.dist-info → pulumi_gcp-7.30.1.dist-info}/top_level.txt +0 -0
@@ -13,6 +13,8 @@ if sys.version_info >= (3, 11):
13
13
  else:
14
14
  from typing_extensions import NotRequired, TypedDict, TypeAlias
15
15
  from .. import _utilities
16
+ from . import outputs
17
+ from ._inputs import *
16
18
 
17
19
  __all__ = ['DatasetArgs', 'Dataset']
18
20
 
@@ -20,6 +22,7 @@ __all__ = ['DatasetArgs', 'Dataset']
20
22
  class DatasetArgs:
21
23
  def __init__(__self__, *,
22
24
  location: pulumi.Input[str],
25
+ encryption_spec: Optional[pulumi.Input['DatasetEncryptionSpecArgs']] = None,
23
26
  name: Optional[pulumi.Input[str]] = None,
24
27
  project: Optional[pulumi.Input[str]] = None,
25
28
  time_zone: Optional[pulumi.Input[str]] = None):
@@ -29,6 +32,8 @@ class DatasetArgs:
29
32
 
30
33
 
31
34
  - - -
35
+ :param pulumi.Input['DatasetEncryptionSpecArgs'] encryption_spec: A nested object resource
36
+ Structure is documented below.
32
37
  :param pulumi.Input[str] name: The resource name for the Dataset.
33
38
  :param pulumi.Input[str] project: The ID of the project in which the resource belongs.
34
39
  If it is not provided, the provider project is used.
@@ -37,6 +42,8 @@ class DatasetArgs:
37
42
  (e.g., HL7 messages) where no explicit timezone is specified.
38
43
  """
39
44
  pulumi.set(__self__, "location", location)
45
+ if encryption_spec is not None:
46
+ pulumi.set(__self__, "encryption_spec", encryption_spec)
40
47
  if name is not None:
41
48
  pulumi.set(__self__, "name", name)
42
49
  if project is not None:
@@ -59,6 +66,19 @@ class DatasetArgs:
59
66
  def location(self, value: pulumi.Input[str]):
60
67
  pulumi.set(self, "location", value)
61
68
 
69
+ @property
70
+ @pulumi.getter(name="encryptionSpec")
71
+ def encryption_spec(self) -> Optional[pulumi.Input['DatasetEncryptionSpecArgs']]:
72
+ """
73
+ A nested object resource
74
+ Structure is documented below.
75
+ """
76
+ return pulumi.get(self, "encryption_spec")
77
+
78
+ @encryption_spec.setter
79
+ def encryption_spec(self, value: Optional[pulumi.Input['DatasetEncryptionSpecArgs']]):
80
+ pulumi.set(self, "encryption_spec", value)
81
+
62
82
  @property
63
83
  @pulumi.getter
64
84
  def name(self) -> Optional[pulumi.Input[str]]:
@@ -102,6 +122,7 @@ class DatasetArgs:
102
122
  @pulumi.input_type
103
123
  class _DatasetState:
104
124
  def __init__(__self__, *,
125
+ encryption_spec: Optional[pulumi.Input['DatasetEncryptionSpecArgs']] = None,
105
126
  location: Optional[pulumi.Input[str]] = None,
106
127
  name: Optional[pulumi.Input[str]] = None,
107
128
  project: Optional[pulumi.Input[str]] = None,
@@ -109,6 +130,8 @@ class _DatasetState:
109
130
  time_zone: Optional[pulumi.Input[str]] = None):
110
131
  """
111
132
  Input properties used for looking up and filtering Dataset resources.
133
+ :param pulumi.Input['DatasetEncryptionSpecArgs'] encryption_spec: A nested object resource
134
+ Structure is documented below.
112
135
  :param pulumi.Input[str] location: The location for the Dataset.
113
136
 
114
137
 
@@ -121,6 +144,8 @@ class _DatasetState:
121
144
  "America/New_York" or empty, which defaults to UTC. This is used for parsing times in resources
122
145
  (e.g., HL7 messages) where no explicit timezone is specified.
123
146
  """
147
+ if encryption_spec is not None:
148
+ pulumi.set(__self__, "encryption_spec", encryption_spec)
124
149
  if location is not None:
125
150
  pulumi.set(__self__, "location", location)
126
151
  if name is not None:
@@ -132,6 +157,19 @@ class _DatasetState:
132
157
  if time_zone is not None:
133
158
  pulumi.set(__self__, "time_zone", time_zone)
134
159
 
160
+ @property
161
+ @pulumi.getter(name="encryptionSpec")
162
+ def encryption_spec(self) -> Optional[pulumi.Input['DatasetEncryptionSpecArgs']]:
163
+ """
164
+ A nested object resource
165
+ Structure is documented below.
166
+ """
167
+ return pulumi.get(self, "encryption_spec")
168
+
169
+ @encryption_spec.setter
170
+ def encryption_spec(self, value: Optional[pulumi.Input['DatasetEncryptionSpecArgs']]):
171
+ pulumi.set(self, "encryption_spec", value)
172
+
135
173
  @property
136
174
  @pulumi.getter
137
175
  def location(self) -> Optional[pulumi.Input[str]]:
@@ -204,6 +242,7 @@ class Dataset(pulumi.CustomResource):
204
242
  def __init__(__self__,
205
243
  resource_name: str,
206
244
  opts: Optional[pulumi.ResourceOptions] = None,
245
+ encryption_spec: Optional[pulumi.Input[Union['DatasetEncryptionSpecArgs', 'DatasetEncryptionSpecArgsDict']]] = None,
207
246
  location: Optional[pulumi.Input[str]] = None,
208
247
  name: Optional[pulumi.Input[str]] = None,
209
248
  project: Optional[pulumi.Input[str]] = None,
@@ -231,6 +270,33 @@ class Dataset(pulumi.CustomResource):
231
270
  location="us-central1",
232
271
  time_zone="UTC")
233
272
  ```
273
+ ### Healthcare Dataset Cmek
274
+
275
+ ```python
276
+ import pulumi
277
+ import pulumi_gcp as gcp
278
+
279
+ project = gcp.organizations.get_project()
280
+ key_ring = gcp.kms.KeyRing("key_ring",
281
+ name="example-keyring",
282
+ location="us-central1")
283
+ crypto_key = gcp.kms.CryptoKey("crypto_key",
284
+ name="example-key",
285
+ key_ring=key_ring.id,
286
+ purpose="ENCRYPT_DECRYPT")
287
+ healthcare_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding("healthcare_cmek_keyuser",
288
+ crypto_key_id=crypto_key.id,
289
+ role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
290
+ members=[f"serviceAccount:service-{project.number}@gcp-sa-healthcare.iam.gserviceaccount.com"])
291
+ default = gcp.healthcare.Dataset("default",
292
+ name="example-dataset",
293
+ location="us-central1",
294
+ time_zone="UTC",
295
+ encryption_spec={
296
+ "kmsKeyName": crypto_key.id,
297
+ },
298
+ opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser]))
299
+ ```
234
300
 
235
301
  ## Import
236
302
 
@@ -258,6 +324,8 @@ class Dataset(pulumi.CustomResource):
258
324
 
259
325
  :param str resource_name: The name of the resource.
260
326
  :param pulumi.ResourceOptions opts: Options for the resource.
327
+ :param pulumi.Input[Union['DatasetEncryptionSpecArgs', 'DatasetEncryptionSpecArgsDict']] encryption_spec: A nested object resource
328
+ Structure is documented below.
261
329
  :param pulumi.Input[str] location: The location for the Dataset.
262
330
 
263
331
 
@@ -297,6 +365,33 @@ class Dataset(pulumi.CustomResource):
297
365
  location="us-central1",
298
366
  time_zone="UTC")
299
367
  ```
368
+ ### Healthcare Dataset Cmek
369
+
370
+ ```python
371
+ import pulumi
372
+ import pulumi_gcp as gcp
373
+
374
+ project = gcp.organizations.get_project()
375
+ key_ring = gcp.kms.KeyRing("key_ring",
376
+ name="example-keyring",
377
+ location="us-central1")
378
+ crypto_key = gcp.kms.CryptoKey("crypto_key",
379
+ name="example-key",
380
+ key_ring=key_ring.id,
381
+ purpose="ENCRYPT_DECRYPT")
382
+ healthcare_cmek_keyuser = gcp.kms.CryptoKeyIAMBinding("healthcare_cmek_keyuser",
383
+ crypto_key_id=crypto_key.id,
384
+ role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
385
+ members=[f"serviceAccount:service-{project.number}@gcp-sa-healthcare.iam.gserviceaccount.com"])
386
+ default = gcp.healthcare.Dataset("default",
387
+ name="example-dataset",
388
+ location="us-central1",
389
+ time_zone="UTC",
390
+ encryption_spec={
391
+ "kmsKeyName": crypto_key.id,
392
+ },
393
+ opts = pulumi.ResourceOptions(depends_on=[healthcare_cmek_keyuser]))
394
+ ```
300
395
 
301
396
  ## Import
302
397
 
@@ -337,6 +432,7 @@ class Dataset(pulumi.CustomResource):
337
432
  def _internal_init(__self__,
338
433
  resource_name: str,
339
434
  opts: Optional[pulumi.ResourceOptions] = None,
435
+ encryption_spec: Optional[pulumi.Input[Union['DatasetEncryptionSpecArgs', 'DatasetEncryptionSpecArgsDict']]] = None,
340
436
  location: Optional[pulumi.Input[str]] = None,
341
437
  name: Optional[pulumi.Input[str]] = None,
342
438
  project: Optional[pulumi.Input[str]] = None,
@@ -350,6 +446,7 @@ class Dataset(pulumi.CustomResource):
350
446
  raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
351
447
  __props__ = DatasetArgs.__new__(DatasetArgs)
352
448
 
449
+ __props__.__dict__["encryption_spec"] = encryption_spec
353
450
  if location is None and not opts.urn:
354
451
  raise TypeError("Missing required property 'location'")
355
452
  __props__.__dict__["location"] = location
@@ -367,6 +464,7 @@ class Dataset(pulumi.CustomResource):
367
464
  def get(resource_name: str,
368
465
  id: pulumi.Input[str],
369
466
  opts: Optional[pulumi.ResourceOptions] = None,
467
+ encryption_spec: Optional[pulumi.Input[Union['DatasetEncryptionSpecArgs', 'DatasetEncryptionSpecArgsDict']]] = None,
370
468
  location: Optional[pulumi.Input[str]] = None,
371
469
  name: Optional[pulumi.Input[str]] = None,
372
470
  project: Optional[pulumi.Input[str]] = None,
@@ -379,6 +477,8 @@ class Dataset(pulumi.CustomResource):
379
477
  :param str resource_name: The unique name of the resulting resource.
380
478
  :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
381
479
  :param pulumi.ResourceOptions opts: Options for the resource.
480
+ :param pulumi.Input[Union['DatasetEncryptionSpecArgs', 'DatasetEncryptionSpecArgsDict']] encryption_spec: A nested object resource
481
+ Structure is documented below.
382
482
  :param pulumi.Input[str] location: The location for the Dataset.
383
483
 
384
484
 
@@ -395,6 +495,7 @@ class Dataset(pulumi.CustomResource):
395
495
 
396
496
  __props__ = _DatasetState.__new__(_DatasetState)
397
497
 
498
+ __props__.__dict__["encryption_spec"] = encryption_spec
398
499
  __props__.__dict__["location"] = location
399
500
  __props__.__dict__["name"] = name
400
501
  __props__.__dict__["project"] = project
@@ -402,6 +503,15 @@ class Dataset(pulumi.CustomResource):
402
503
  __props__.__dict__["time_zone"] = time_zone
403
504
  return Dataset(resource_name, opts=opts, __props__=__props__)
404
505
 
506
+ @property
507
+ @pulumi.getter(name="encryptionSpec")
508
+ def encryption_spec(self) -> pulumi.Output['outputs.DatasetEncryptionSpec']:
509
+ """
510
+ A nested object resource
511
+ Structure is documented below.
512
+ """
513
+ return pulumi.get(self, "encryption_spec")
514
+
405
515
  @property
406
516
  @pulumi.getter
407
517
  def location(self) -> pulumi.Output[str]:
@@ -18,6 +18,7 @@ from . import outputs
18
18
  __all__ = [
19
19
  'ConsentStoreIamBindingCondition',
20
20
  'ConsentStoreIamMemberCondition',
21
+ 'DatasetEncryptionSpec',
21
22
  'DatasetIamBindingCondition',
22
23
  'DatasetIamMemberCondition',
23
24
  'DicomStoreIamBindingCondition',
@@ -93,6 +94,48 @@ class ConsentStoreIamMemberCondition(dict):
93
94
  return pulumi.get(self, "description")
94
95
 
95
96
 
97
+ @pulumi.output_type
98
+ class DatasetEncryptionSpec(dict):
99
+ @staticmethod
100
+ def __key_warning(key: str):
101
+ suggest = None
102
+ if key == "kmsKeyName":
103
+ suggest = "kms_key_name"
104
+
105
+ if suggest:
106
+ pulumi.log.warn(f"Key '{key}' not found in DatasetEncryptionSpec. Access the value via the '{suggest}' property getter instead.")
107
+
108
+ def __getitem__(self, key: str) -> Any:
109
+ DatasetEncryptionSpec.__key_warning(key)
110
+ return super().__getitem__(key)
111
+
112
+ def get(self, key: str, default = None) -> Any:
113
+ DatasetEncryptionSpec.__key_warning(key)
114
+ return super().get(key, default)
115
+
116
+ def __init__(__self__, *,
117
+ kms_key_name: Optional[str] = None):
118
+ """
119
+ :param str kms_key_name: KMS encryption key that is used to secure this dataset and its sub-resources. The key used for
120
+ encryption and the dataset must be in the same location. If empty, the default Google encryption
121
+ key will be used to secure this dataset. The format is
122
+ projects/{projectId}/locations/{locationId}/keyRings/{keyRingId}/cryptoKeys/{keyId}.
123
+ """
124
+ if kms_key_name is not None:
125
+ pulumi.set(__self__, "kms_key_name", kms_key_name)
126
+
127
+ @property
128
+ @pulumi.getter(name="kmsKeyName")
129
+ def kms_key_name(self) -> Optional[str]:
130
+ """
131
+ KMS encryption key that is used to secure this dataset and its sub-resources. The key used for
132
+ encryption and the dataset must be in the same location. If empty, the default Google encryption
133
+ key will be used to secure this dataset. The format is
134
+ projects/{projectId}/locations/{locationId}/keyRings/{keyRingId}/cryptoKeys/{keyId}.
135
+ """
136
+ return pulumi.get(self, "kms_key_name")
137
+
138
+
96
139
  @pulumi.output_type
97
140
  class DatasetIamBindingCondition(dict):
98
141
  def __init__(__self__, *,
@@ -918,7 +918,7 @@ class Config(pulumi.CustomResource):
918
918
 
919
919
  @property
920
920
  @pulumi.getter(name="smsRegionConfig")
921
- def sms_region_config(self) -> pulumi.Output[Optional['outputs.ConfigSmsRegionConfig']]:
921
+ def sms_region_config(self) -> pulumi.Output['outputs.ConfigSmsRegionConfig']:
922
922
  """
923
923
  Configures the regions where users are allowed to send verification SMS for the project or tenant. This is based on the calling code of the destination phone number.
924
924
  Structure is documented below.
@@ -531,7 +531,7 @@ class BillingAccountBucketConfig(pulumi.CustomResource):
531
531
 
532
532
  @property
533
533
  @pulumi.getter(name="indexConfigs")
534
- def index_configs(self) -> pulumi.Output[Optional[Sequence['outputs.BillingAccountBucketConfigIndexConfig']]]:
534
+ def index_configs(self) -> pulumi.Output[Sequence['outputs.BillingAccountBucketConfigIndexConfig']]:
535
535
  """
536
536
  A list of indexed fields and related configuration data. Structure is documented below.
537
537
  """
@@ -539,7 +539,7 @@ class FolderBucketConfig(pulumi.CustomResource):
539
539
 
540
540
  @property
541
541
  @pulumi.getter(name="indexConfigs")
542
- def index_configs(self) -> pulumi.Output[Optional[Sequence['outputs.FolderBucketConfigIndexConfig']]]:
542
+ def index_configs(self) -> pulumi.Output[Sequence['outputs.FolderBucketConfigIndexConfig']]:
543
543
  """
544
544
  A list of indexed fields and related configuration data. Structure is documented below.
545
545
  """
@@ -527,7 +527,7 @@ class OrganizationBucketConfig(pulumi.CustomResource):
527
527
 
528
528
  @property
529
529
  @pulumi.getter(name="indexConfigs")
530
- def index_configs(self) -> pulumi.Output[Optional[Sequence['outputs.OrganizationBucketConfigIndexConfig']]]:
530
+ def index_configs(self) -> pulumi.Output[Sequence['outputs.OrganizationBucketConfigIndexConfig']]:
531
531
  """
532
532
  A list of indexed fields and related configuration data. Structure is documented below.
533
533
  """
@@ -51,6 +51,8 @@ __all__ = [
51
51
  'AlertPolicyCreationRecordArgsDict',
52
52
  'AlertPolicyDocumentationArgs',
53
53
  'AlertPolicyDocumentationArgsDict',
54
+ 'AlertPolicyDocumentationLinkArgs',
55
+ 'AlertPolicyDocumentationLinkArgsDict',
54
56
  'CustomServiceTelemetryArgs',
55
57
  'CustomServiceTelemetryArgsDict',
56
58
  'GenericServiceBasicServiceArgs',
@@ -2875,6 +2877,11 @@ if not MYPY:
2875
2877
  exceed more than 10,240 bytes when encoded in UTF-8 format,
2876
2878
  whichever is smaller.
2877
2879
  """
2880
+ links: NotRequired[pulumi.Input[Sequence[pulumi.Input['AlertPolicyDocumentationLinkArgsDict']]]]
2881
+ """
2882
+ Links to content such as playbooks, repositories, and other resources. This field can contain up to 3 entries.
2883
+ Structure is documented below.
2884
+ """
2878
2885
  mime_type: NotRequired[pulumi.Input[str]]
2879
2886
  """
2880
2887
  The format of the content field. Presently, only the value
@@ -2894,6 +2901,7 @@ elif False:
2894
2901
  class AlertPolicyDocumentationArgs:
2895
2902
  def __init__(__self__, *,
2896
2903
  content: Optional[pulumi.Input[str]] = None,
2904
+ links: Optional[pulumi.Input[Sequence[pulumi.Input['AlertPolicyDocumentationLinkArgs']]]] = None,
2897
2905
  mime_type: Optional[pulumi.Input[str]] = None,
2898
2906
  subject: Optional[pulumi.Input[str]] = None):
2899
2907
  """
@@ -2901,6 +2909,8 @@ class AlertPolicyDocumentationArgs:
2901
2909
  The content may not exceed 8,192 Unicode characters and may not
2902
2910
  exceed more than 10,240 bytes when encoded in UTF-8 format,
2903
2911
  whichever is smaller.
2912
+ :param pulumi.Input[Sequence[pulumi.Input['AlertPolicyDocumentationLinkArgs']]] links: Links to content such as playbooks, repositories, and other resources. This field can contain up to 3 entries.
2913
+ Structure is documented below.
2904
2914
  :param pulumi.Input[str] mime_type: The format of the content field. Presently, only the value
2905
2915
  "text/markdown" is supported.
2906
2916
  :param pulumi.Input[str] subject: The subject line of the notification. The subject line may not
@@ -2910,6 +2920,8 @@ class AlertPolicyDocumentationArgs:
2910
2920
  """
2911
2921
  if content is not None:
2912
2922
  pulumi.set(__self__, "content", content)
2923
+ if links is not None:
2924
+ pulumi.set(__self__, "links", links)
2913
2925
  if mime_type is not None:
2914
2926
  pulumi.set(__self__, "mime_type", mime_type)
2915
2927
  if subject is not None:
@@ -2930,6 +2942,19 @@ class AlertPolicyDocumentationArgs:
2930
2942
  def content(self, value: Optional[pulumi.Input[str]]):
2931
2943
  pulumi.set(self, "content", value)
2932
2944
 
2945
+ @property
2946
+ @pulumi.getter
2947
+ def links(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['AlertPolicyDocumentationLinkArgs']]]]:
2948
+ """
2949
+ Links to content such as playbooks, repositories, and other resources. This field can contain up to 3 entries.
2950
+ Structure is documented below.
2951
+ """
2952
+ return pulumi.get(self, "links")
2953
+
2954
+ @links.setter
2955
+ def links(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['AlertPolicyDocumentationLinkArgs']]]]):
2956
+ pulumi.set(self, "links", value)
2957
+
2933
2958
  @property
2934
2959
  @pulumi.getter(name="mimeType")
2935
2960
  def mime_type(self) -> Optional[pulumi.Input[str]]:
@@ -2959,6 +2984,58 @@ class AlertPolicyDocumentationArgs:
2959
2984
  pulumi.set(self, "subject", value)
2960
2985
 
2961
2986
 
2987
+ if not MYPY:
2988
+ class AlertPolicyDocumentationLinkArgsDict(TypedDict):
2989
+ display_name: NotRequired[pulumi.Input[str]]
2990
+ """
2991
+ A short display name for the link. The display name must not be empty or exceed 63 characters. Example: "playbook".
2992
+ """
2993
+ url: NotRequired[pulumi.Input[str]]
2994
+ """
2995
+ The url of a webpage. A url can be templatized by using variables in the path or the query parameters. The total length of a URL should not exceed 2083 characters before and after variable expansion. Example: "https://my_domain.com/playbook?name=${resource.name}".
2996
+ """
2997
+ elif False:
2998
+ AlertPolicyDocumentationLinkArgsDict: TypeAlias = Mapping[str, Any]
2999
+
3000
+ @pulumi.input_type
3001
+ class AlertPolicyDocumentationLinkArgs:
3002
+ def __init__(__self__, *,
3003
+ display_name: Optional[pulumi.Input[str]] = None,
3004
+ url: Optional[pulumi.Input[str]] = None):
3005
+ """
3006
+ :param pulumi.Input[str] display_name: A short display name for the link. The display name must not be empty or exceed 63 characters. Example: "playbook".
3007
+ :param pulumi.Input[str] url: The url of a webpage. A url can be templatized by using variables in the path or the query parameters. The total length of a URL should not exceed 2083 characters before and after variable expansion. Example: "https://my_domain.com/playbook?name=${resource.name}".
3008
+ """
3009
+ if display_name is not None:
3010
+ pulumi.set(__self__, "display_name", display_name)
3011
+ if url is not None:
3012
+ pulumi.set(__self__, "url", url)
3013
+
3014
+ @property
3015
+ @pulumi.getter(name="displayName")
3016
+ def display_name(self) -> Optional[pulumi.Input[str]]:
3017
+ """
3018
+ A short display name for the link. The display name must not be empty or exceed 63 characters. Example: "playbook".
3019
+ """
3020
+ return pulumi.get(self, "display_name")
3021
+
3022
+ @display_name.setter
3023
+ def display_name(self, value: Optional[pulumi.Input[str]]):
3024
+ pulumi.set(self, "display_name", value)
3025
+
3026
+ @property
3027
+ @pulumi.getter
3028
+ def url(self) -> Optional[pulumi.Input[str]]:
3029
+ """
3030
+ The url of a webpage. A url can be templatized by using variables in the path or the query parameters. The total length of a URL should not exceed 2083 characters before and after variable expansion. Example: "https://my_domain.com/playbook?name=${resource.name}".
3031
+ """
3032
+ return pulumi.get(self, "url")
3033
+
3034
+ @url.setter
3035
+ def url(self, value: Optional[pulumi.Input[str]]):
3036
+ pulumi.set(self, "url", value)
3037
+
3038
+
2962
3039
  if not MYPY:
2963
3040
  class CustomServiceTelemetryArgsDict(TypedDict):
2964
3041
  resource_name: NotRequired[pulumi.Input[str]]
@@ -34,6 +34,7 @@ __all__ = [
34
34
  'AlertPolicyConditionConditionThresholdTrigger',
35
35
  'AlertPolicyCreationRecord',
36
36
  'AlertPolicyDocumentation',
37
+ 'AlertPolicyDocumentationLink',
37
38
  'CustomServiceTelemetry',
38
39
  'GenericServiceBasicService',
39
40
  'GenericServiceTelemetry',
@@ -2076,6 +2077,7 @@ class AlertPolicyDocumentation(dict):
2076
2077
 
2077
2078
  def __init__(__self__, *,
2078
2079
  content: Optional[str] = None,
2080
+ links: Optional[Sequence['outputs.AlertPolicyDocumentationLink']] = None,
2079
2081
  mime_type: Optional[str] = None,
2080
2082
  subject: Optional[str] = None):
2081
2083
  """
@@ -2083,6 +2085,8 @@ class AlertPolicyDocumentation(dict):
2083
2085
  The content may not exceed 8,192 Unicode characters and may not
2084
2086
  exceed more than 10,240 bytes when encoded in UTF-8 format,
2085
2087
  whichever is smaller.
2088
+ :param Sequence['AlertPolicyDocumentationLinkArgs'] links: Links to content such as playbooks, repositories, and other resources. This field can contain up to 3 entries.
2089
+ Structure is documented below.
2086
2090
  :param str mime_type: The format of the content field. Presently, only the value
2087
2091
  "text/markdown" is supported.
2088
2092
  :param str subject: The subject line of the notification. The subject line may not
@@ -2092,6 +2096,8 @@ class AlertPolicyDocumentation(dict):
2092
2096
  """
2093
2097
  if content is not None:
2094
2098
  pulumi.set(__self__, "content", content)
2099
+ if links is not None:
2100
+ pulumi.set(__self__, "links", links)
2095
2101
  if mime_type is not None:
2096
2102
  pulumi.set(__self__, "mime_type", mime_type)
2097
2103
  if subject is not None:
@@ -2108,6 +2114,15 @@ class AlertPolicyDocumentation(dict):
2108
2114
  """
2109
2115
  return pulumi.get(self, "content")
2110
2116
 
2117
+ @property
2118
+ @pulumi.getter
2119
+ def links(self) -> Optional[Sequence['outputs.AlertPolicyDocumentationLink']]:
2120
+ """
2121
+ Links to content such as playbooks, repositories, and other resources. This field can contain up to 3 entries.
2122
+ Structure is documented below.
2123
+ """
2124
+ return pulumi.get(self, "links")
2125
+
2111
2126
  @property
2112
2127
  @pulumi.getter(name="mimeType")
2113
2128
  def mime_type(self) -> Optional[str]:
@@ -2129,6 +2144,54 @@ class AlertPolicyDocumentation(dict):
2129
2144
  return pulumi.get(self, "subject")
2130
2145
 
2131
2146
 
2147
+ @pulumi.output_type
2148
+ class AlertPolicyDocumentationLink(dict):
2149
+ @staticmethod
2150
+ def __key_warning(key: str):
2151
+ suggest = None
2152
+ if key == "displayName":
2153
+ suggest = "display_name"
2154
+
2155
+ if suggest:
2156
+ pulumi.log.warn(f"Key '{key}' not found in AlertPolicyDocumentationLink. Access the value via the '{suggest}' property getter instead.")
2157
+
2158
+ def __getitem__(self, key: str) -> Any:
2159
+ AlertPolicyDocumentationLink.__key_warning(key)
2160
+ return super().__getitem__(key)
2161
+
2162
+ def get(self, key: str, default = None) -> Any:
2163
+ AlertPolicyDocumentationLink.__key_warning(key)
2164
+ return super().get(key, default)
2165
+
2166
+ def __init__(__self__, *,
2167
+ display_name: Optional[str] = None,
2168
+ url: Optional[str] = None):
2169
+ """
2170
+ :param str display_name: A short display name for the link. The display name must not be empty or exceed 63 characters. Example: "playbook".
2171
+ :param str url: The url of a webpage. A url can be templatized by using variables in the path or the query parameters. The total length of a URL should not exceed 2083 characters before and after variable expansion. Example: "https://my_domain.com/playbook?name=${resource.name}".
2172
+ """
2173
+ if display_name is not None:
2174
+ pulumi.set(__self__, "display_name", display_name)
2175
+ if url is not None:
2176
+ pulumi.set(__self__, "url", url)
2177
+
2178
+ @property
2179
+ @pulumi.getter(name="displayName")
2180
+ def display_name(self) -> Optional[str]:
2181
+ """
2182
+ A short display name for the link. The display name must not be empty or exceed 63 characters. Example: "playbook".
2183
+ """
2184
+ return pulumi.get(self, "display_name")
2185
+
2186
+ @property
2187
+ @pulumi.getter
2188
+ def url(self) -> Optional[str]:
2189
+ """
2190
+ The url of a webpage. A url can be templatized by using variables in the path or the query parameters. The total length of a URL should not exceed 2083 characters before and after variable expansion. Example: "https://my_domain.com/playbook?name=${resource.name}".
2191
+ """
2192
+ return pulumi.get(self, "url")
2193
+
2194
+
2132
2195
  @pulumi.output_type
2133
2196
  class CustomServiceTelemetry(dict):
2134
2197
  @staticmethod
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "resource": true,
3
3
  "name": "gcp",
4
- "version": "7.30.0-alpha.1720075632"
4
+ "version": "7.30.1"
5
5
  }
@@ -286,6 +286,38 @@ class InstanceIamBinding(pulumi.CustomResource):
286
286
  "state": "ENABLED",
287
287
  }])
288
288
  ```
289
+ ### Data Fusion Instance Psc
290
+
291
+ ```python
292
+ import pulumi
293
+ import pulumi_gcp as gcp
294
+
295
+ psc = gcp.compute.Network("psc",
296
+ name="datafusion-psc-network",
297
+ auto_create_subnetworks=False)
298
+ psc_subnetwork = gcp.compute.Subnetwork("psc",
299
+ name="datafusion-psc-subnet",
300
+ region="us-central1",
301
+ network=psc.id,
302
+ ip_cidr_range="10.0.0.0/16")
303
+ psc_network_attachment = gcp.compute.NetworkAttachment("psc",
304
+ name="datafusion-psc-attachment",
305
+ region="us-central1",
306
+ connection_preference="ACCEPT_AUTOMATIC",
307
+ subnetworks=[psc_subnetwork.self_link])
308
+ psc_instance = gcp.datafusion.Instance("psc_instance",
309
+ name="psc-instance",
310
+ region="us-central1",
311
+ type="BASIC",
312
+ private_instance=True,
313
+ network_config={
314
+ "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
315
+ "privateServiceConnectConfig": {
316
+ "networkAttachment": psc_network_attachment.id,
317
+ "unreachableCidrBlock": "192.168.0.0/25",
318
+ },
319
+ })
320
+ ```
289
321
  ### Data Fusion Instance Cmek
290
322
 
291
323
  ```python
@@ -454,6 +486,38 @@ class InstanceIamBinding(pulumi.CustomResource):
454
486
  "state": "ENABLED",
455
487
  }])
456
488
  ```
489
+ ### Data Fusion Instance Psc
490
+
491
+ ```python
492
+ import pulumi
493
+ import pulumi_gcp as gcp
494
+
495
+ psc = gcp.compute.Network("psc",
496
+ name="datafusion-psc-network",
497
+ auto_create_subnetworks=False)
498
+ psc_subnetwork = gcp.compute.Subnetwork("psc",
499
+ name="datafusion-psc-subnet",
500
+ region="us-central1",
501
+ network=psc.id,
502
+ ip_cidr_range="10.0.0.0/16")
503
+ psc_network_attachment = gcp.compute.NetworkAttachment("psc",
504
+ name="datafusion-psc-attachment",
505
+ region="us-central1",
506
+ connection_preference="ACCEPT_AUTOMATIC",
507
+ subnetworks=[psc_subnetwork.self_link])
508
+ psc_instance = gcp.datafusion.Instance("psc_instance",
509
+ name="psc-instance",
510
+ region="us-central1",
511
+ type="BASIC",
512
+ private_instance=True,
513
+ network_config={
514
+ "connectionType": "PRIVATE_SERVICE_CONNECT_INTERFACES",
515
+ "privateServiceConnectConfig": {
516
+ "networkAttachment": psc_network_attachment.id,
517
+ "unreachableCidrBlock": "192.168.0.0/25",
518
+ },
519
+ })
520
+ ```
457
521
  ### Data Fusion Instance Cmek
458
522
 
459
523
  ```python