pulumi-gcp 9.2.0a1759043191__py3-none-any.whl → 9.3.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 (76) hide show
  1. pulumi_gcp/__init__.py +32 -0
  2. pulumi_gcp/apigee/__init__.py +1 -0
  3. pulumi_gcp/apigee/api_deployment.py +372 -0
  4. pulumi_gcp/apihub/plugin.py +1 -1
  5. pulumi_gcp/artifactregistry/__init__.py +2 -0
  6. pulumi_gcp/artifactregistry/get_maven_artifacts.py +164 -0
  7. pulumi_gcp/artifactregistry/get_npm_packages.py +164 -0
  8. pulumi_gcp/artifactregistry/outputs.py +165 -0
  9. pulumi_gcp/cloudrunv2/_inputs.py +823 -15
  10. pulumi_gcp/cloudrunv2/outputs.py +1749 -743
  11. pulumi_gcp/cloudrunv2/worker_pool.py +110 -0
  12. pulumi_gcp/compute/_inputs.py +28 -0
  13. pulumi_gcp/compute/outputs.py +20 -1
  14. pulumi_gcp/compute/vpn_tunnel.py +97 -23
  15. pulumi_gcp/compute/wire_group.py +2 -0
  16. pulumi_gcp/dataloss/_inputs.py +970 -30
  17. pulumi_gcp/dataloss/outputs.py +850 -20
  18. pulumi_gcp/dataloss/prevention_discovery_config.py +54 -0
  19. pulumi_gcp/diagflow/_inputs.py +66 -0
  20. pulumi_gcp/diagflow/conversation_profile.py +84 -0
  21. pulumi_gcp/diagflow/outputs.py +57 -0
  22. pulumi_gcp/discoveryengine/__init__.py +1 -0
  23. pulumi_gcp/discoveryengine/_inputs.py +187 -0
  24. pulumi_gcp/discoveryengine/data_connector.py +1368 -0
  25. pulumi_gcp/discoveryengine/outputs.py +135 -0
  26. pulumi_gcp/discoveryengine/search_engine.py +47 -0
  27. pulumi_gcp/gkebackup/_inputs.py +111 -0
  28. pulumi_gcp/gkebackup/backup_plan.py +72 -0
  29. pulumi_gcp/gkebackup/outputs.py +84 -0
  30. pulumi_gcp/kms/__init__.py +1 -0
  31. pulumi_gcp/kms/_inputs.py +43 -0
  32. pulumi_gcp/kms/organization_kaj_policy_config.py +290 -0
  33. pulumi_gcp/kms/outputs.py +43 -0
  34. pulumi_gcp/logging/metric.py +2 -2
  35. pulumi_gcp/looker/instance.py +51 -0
  36. pulumi_gcp/managedkafka/connect_cluster.py +20 -82
  37. pulumi_gcp/managedkafka/connector.py +24 -94
  38. pulumi_gcp/netapp/_inputs.py +28 -5
  39. pulumi_gcp/netapp/outputs.py +19 -3
  40. pulumi_gcp/netapp/storage_pool.py +56 -0
  41. pulumi_gcp/netapp/volume.py +28 -0
  42. pulumi_gcp/networkconnectivity/spoke.py +14 -14
  43. pulumi_gcp/networksecurity/mirroring_endpoint_group.py +211 -23
  44. pulumi_gcp/oracledatabase/odb_network.py +101 -2
  45. pulumi_gcp/orgpolicy/policy.py +2 -2
  46. pulumi_gcp/privilegedaccessmanager/_inputs.py +27 -4
  47. pulumi_gcp/privilegedaccessmanager/outputs.py +31 -6
  48. pulumi_gcp/pubsub/get_subscription.py +12 -1
  49. pulumi_gcp/pubsub/get_topic.py +15 -4
  50. pulumi_gcp/pubsub/subscription.py +153 -7
  51. pulumi_gcp/pubsub/topic.py +145 -3
  52. pulumi_gcp/pulumi-plugin.json +1 -1
  53. pulumi_gcp/saasruntime/__init__.py +1 -0
  54. pulumi_gcp/saasruntime/_inputs.py +60 -0
  55. pulumi_gcp/saasruntime/outputs.py +55 -0
  56. pulumi_gcp/saasruntime/rollout_kind.py +1086 -0
  57. pulumi_gcp/sql/_inputs.py +122 -3
  58. pulumi_gcp/sql/database_instance.py +47 -0
  59. pulumi_gcp/sql/get_database_instance.py +12 -1
  60. pulumi_gcp/sql/outputs.py +233 -2
  61. pulumi_gcp/storage/bucket.py +52 -24
  62. pulumi_gcp/storage/get_insights_dataset_config.py +12 -1
  63. pulumi_gcp/storage/insights_dataset_config.py +49 -0
  64. pulumi_gcp/storage/insights_report_config.py +47 -0
  65. pulumi_gcp/vertex/_inputs.py +339 -1
  66. pulumi_gcp/vertex/ai_endpoint.py +4 -4
  67. pulumi_gcp/vertex/ai_endpoint_with_model_garden_deployment.py +102 -0
  68. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +4 -4
  69. pulumi_gcp/vertex/ai_index.py +74 -2
  70. pulumi_gcp/vertex/ai_index_endpoint.py +54 -0
  71. pulumi_gcp/vertex/get_ai_index.py +12 -1
  72. pulumi_gcp/vertex/outputs.py +303 -1
  73. {pulumi_gcp-9.2.0a1759043191.dist-info → pulumi_gcp-9.3.0.dist-info}/METADATA +1 -1
  74. {pulumi_gcp-9.2.0a1759043191.dist-info → pulumi_gcp-9.3.0.dist-info}/RECORD +76 -70
  75. {pulumi_gcp-9.2.0a1759043191.dist-info → pulumi_gcp-9.3.0.dist-info}/WHEEL +0 -0
  76. {pulumi_gcp-9.2.0a1759043191.dist-info → pulumi_gcp-9.3.0.dist-info}/top_level.txt +0 -0
@@ -531,6 +531,57 @@ class AiEndpointWithModelGardenDeployment(pulumi.CustomResource):
531
531
  },
532
532
  opts = pulumi.ResourceOptions(depends_on=[deploy_qwen3_06b]))
533
533
  ```
534
+ ### Vertex Ai Deploy Psc Endpoint
535
+
536
+ ```python
537
+ import pulumi
538
+ import pulumi_gcp as gcp
539
+
540
+ deploy = gcp.vertex.AiEndpointWithModelGardenDeployment("deploy",
541
+ publisher_model_name="publishers/google/models/paligemma@paligemma-224-float32",
542
+ location="us-central1",
543
+ model_config={
544
+ "accept_eula": True,
545
+ },
546
+ endpoint_config={
547
+ "private_service_connect_config": {
548
+ "enable_private_service_connect": True,
549
+ "project_allowlists": ["my-project-id"],
550
+ },
551
+ })
552
+ ```
553
+ ### Vertex Ai Deploy Psc Endpoint Automated
554
+
555
+ ```python
556
+ import pulumi
557
+ import pulumi_gcp as gcp
558
+
559
+ network = gcp.compute.Network("network",
560
+ name="network",
561
+ auto_create_subnetworks=False)
562
+ project = gcp.organizations.get_project()
563
+ deploy = gcp.vertex.AiEndpointWithModelGardenDeployment("deploy",
564
+ publisher_model_name="publishers/google/models/paligemma@paligemma-224-float32",
565
+ location="us-central1",
566
+ model_config={
567
+ "accept_eula": True,
568
+ },
569
+ endpoint_config={
570
+ "private_service_connect_config": {
571
+ "enable_private_service_connect": True,
572
+ "project_allowlists": [project.id],
573
+ "psc_automation_configs": {
574
+ "project_id": project.id,
575
+ "network": network.id,
576
+ },
577
+ },
578
+ })
579
+ subnetwork = gcp.compute.Subnetwork("subnetwork",
580
+ name="subnetwork",
581
+ ip_cidr_range="192.168.0.0/24",
582
+ region="us-central1",
583
+ network=network.id)
584
+ ```
534
585
 
535
586
  ## Import
536
587
 
@@ -734,6 +785,57 @@ class AiEndpointWithModelGardenDeployment(pulumi.CustomResource):
734
785
  },
735
786
  opts = pulumi.ResourceOptions(depends_on=[deploy_qwen3_06b]))
736
787
  ```
788
+ ### Vertex Ai Deploy Psc Endpoint
789
+
790
+ ```python
791
+ import pulumi
792
+ import pulumi_gcp as gcp
793
+
794
+ deploy = gcp.vertex.AiEndpointWithModelGardenDeployment("deploy",
795
+ publisher_model_name="publishers/google/models/paligemma@paligemma-224-float32",
796
+ location="us-central1",
797
+ model_config={
798
+ "accept_eula": True,
799
+ },
800
+ endpoint_config={
801
+ "private_service_connect_config": {
802
+ "enable_private_service_connect": True,
803
+ "project_allowlists": ["my-project-id"],
804
+ },
805
+ })
806
+ ```
807
+ ### Vertex Ai Deploy Psc Endpoint Automated
808
+
809
+ ```python
810
+ import pulumi
811
+ import pulumi_gcp as gcp
812
+
813
+ network = gcp.compute.Network("network",
814
+ name="network",
815
+ auto_create_subnetworks=False)
816
+ project = gcp.organizations.get_project()
817
+ deploy = gcp.vertex.AiEndpointWithModelGardenDeployment("deploy",
818
+ publisher_model_name="publishers/google/models/paligemma@paligemma-224-float32",
819
+ location="us-central1",
820
+ model_config={
821
+ "accept_eula": True,
822
+ },
823
+ endpoint_config={
824
+ "private_service_connect_config": {
825
+ "enable_private_service_connect": True,
826
+ "project_allowlists": [project.id],
827
+ "psc_automation_configs": {
828
+ "project_id": project.id,
829
+ "network": network.id,
830
+ },
831
+ },
832
+ })
833
+ subnetwork = gcp.compute.Subnetwork("subnetwork",
834
+ name="subnetwork",
835
+ ip_cidr_range="192.168.0.0/24",
836
+ region="us-central1",
837
+ network=network.id)
838
+ ```
737
839
 
738
840
  ## Import
739
841
 
@@ -608,8 +608,8 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
608
608
 
609
609
  test_project = gcp.organizations.get_project()
610
610
  project = gcp.organizations.Project("project",
611
- project_id="tf-test_21563",
612
- name="tf-test_25141",
611
+ project_id="tf-test_20665",
612
+ name="tf-test_85160",
613
613
  org_id="123456789",
614
614
  billing_account="000000-0000000-0000000-000000",
615
615
  deletion_policy="DELETE")
@@ -1043,8 +1043,8 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
1043
1043
 
1044
1044
  test_project = gcp.organizations.get_project()
1045
1045
  project = gcp.organizations.Project("project",
1046
- project_id="tf-test_21563",
1047
- name="tf-test_25141",
1046
+ project_id="tf-test_20665",
1047
+ name="tf-test_85160",
1048
1048
  org_id="123456789",
1049
1049
  billing_account="000000-0000000-0000000-000000",
1050
1050
  deletion_policy="DELETE")
@@ -24,6 +24,7 @@ class AiIndexArgs:
24
24
  display_name: pulumi.Input[_builtins.str],
25
25
  metadata: pulumi.Input['AiIndexMetadataArgs'],
26
26
  description: Optional[pulumi.Input[_builtins.str]] = None,
27
+ encryption_spec: Optional[pulumi.Input['AiIndexEncryptionSpecArgs']] = None,
27
28
  index_update_method: Optional[pulumi.Input[_builtins.str]] = None,
28
29
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
29
30
  project: Optional[pulumi.Input[_builtins.str]] = None,
@@ -36,6 +37,8 @@ class AiIndexArgs:
36
37
  Attempts to create an Index without this field will result in an API error.
37
38
  Structure is documented below.
38
39
  :param pulumi.Input[_builtins.str] description: The description of the Index.
40
+ :param pulumi.Input['AiIndexEncryptionSpecArgs'] encryption_spec: Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
41
+ Structure is documented below.
39
42
  :param pulumi.Input[_builtins.str] index_update_method: The update method to use with this Index. The value must be the followings. If not set, BATCH_UPDATE will be used by default.
40
43
  * BATCH_UPDATE: user can call indexes.patch with files on Cloud Storage of datapoints to update.
41
44
  * STREAM_UPDATE: user can call indexes.upsertDatapoints/DeleteDatapoints to update the Index and the updates will be applied in corresponding DeployedIndexes in nearly real-time.
@@ -50,6 +53,8 @@ class AiIndexArgs:
50
53
  pulumi.set(__self__, "metadata", metadata)
51
54
  if description is not None:
52
55
  pulumi.set(__self__, "description", description)
56
+ if encryption_spec is not None:
57
+ pulumi.set(__self__, "encryption_spec", encryption_spec)
53
58
  if index_update_method is not None:
54
59
  pulumi.set(__self__, "index_update_method", index_update_method)
55
60
  if labels is not None:
@@ -98,6 +103,19 @@ class AiIndexArgs:
98
103
  def description(self, value: Optional[pulumi.Input[_builtins.str]]):
99
104
  pulumi.set(self, "description", value)
100
105
 
106
+ @_builtins.property
107
+ @pulumi.getter(name="encryptionSpec")
108
+ def encryption_spec(self) -> Optional[pulumi.Input['AiIndexEncryptionSpecArgs']]:
109
+ """
110
+ Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
111
+ Structure is documented below.
112
+ """
113
+ return pulumi.get(self, "encryption_spec")
114
+
115
+ @encryption_spec.setter
116
+ def encryption_spec(self, value: Optional[pulumi.Input['AiIndexEncryptionSpecArgs']]):
117
+ pulumi.set(self, "encryption_spec", value)
118
+
101
119
  @_builtins.property
102
120
  @pulumi.getter(name="indexUpdateMethod")
103
121
  def index_update_method(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -160,6 +178,7 @@ class _AiIndexState:
160
178
  description: Optional[pulumi.Input[_builtins.str]] = None,
161
179
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
162
180
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
181
+ encryption_spec: Optional[pulumi.Input['AiIndexEncryptionSpecArgs']] = None,
163
182
  etag: Optional[pulumi.Input[_builtins.str]] = None,
164
183
  index_stats: Optional[pulumi.Input[Sequence[pulumi.Input['AiIndexIndexStatArgs']]]] = None,
165
184
  index_update_method: Optional[pulumi.Input[_builtins.str]] = None,
@@ -179,6 +198,8 @@ class _AiIndexState:
179
198
  :param pulumi.Input[_builtins.str] description: The description of the Index.
180
199
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
181
200
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
201
+ :param pulumi.Input['AiIndexEncryptionSpecArgs'] encryption_spec: Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
202
+ Structure is documented below.
182
203
  :param pulumi.Input[_builtins.str] etag: Used to perform consistent read-modify-write updates.
183
204
  :param pulumi.Input[Sequence[pulumi.Input['AiIndexIndexStatArgs']]] index_stats: Stats of the index resource.
184
205
  Structure is documented below.
@@ -211,6 +232,8 @@ class _AiIndexState:
211
232
  pulumi.set(__self__, "display_name", display_name)
212
233
  if effective_labels is not None:
213
234
  pulumi.set(__self__, "effective_labels", effective_labels)
235
+ if encryption_spec is not None:
236
+ pulumi.set(__self__, "encryption_spec", encryption_spec)
214
237
  if etag is not None:
215
238
  pulumi.set(__self__, "etag", etag)
216
239
  if index_stats is not None:
@@ -295,6 +318,19 @@ class _AiIndexState:
295
318
  def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
296
319
  pulumi.set(self, "effective_labels", value)
297
320
 
321
+ @_builtins.property
322
+ @pulumi.getter(name="encryptionSpec")
323
+ def encryption_spec(self) -> Optional[pulumi.Input['AiIndexEncryptionSpecArgs']]:
324
+ """
325
+ Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
326
+ Structure is documented below.
327
+ """
328
+ return pulumi.get(self, "encryption_spec")
329
+
330
+ @encryption_spec.setter
331
+ def encryption_spec(self, value: Optional[pulumi.Input['AiIndexEncryptionSpecArgs']]):
332
+ pulumi.set(self, "encryption_spec", value)
333
+
298
334
  @_builtins.property
299
335
  @pulumi.getter
300
336
  def etag(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -446,6 +482,7 @@ class AiIndex(pulumi.CustomResource):
446
482
  opts: Optional[pulumi.ResourceOptions] = None,
447
483
  description: Optional[pulumi.Input[_builtins.str]] = None,
448
484
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
485
+ encryption_spec: Optional[pulumi.Input[Union['AiIndexEncryptionSpecArgs', 'AiIndexEncryptionSpecArgsDict']]] = None,
449
486
  index_update_method: Optional[pulumi.Input[_builtins.str]] = None,
450
487
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
451
488
  metadata: Optional[pulumi.Input[Union['AiIndexMetadataArgs', 'AiIndexMetadataArgsDict']]] = None,
@@ -467,6 +504,7 @@ class AiIndex(pulumi.CustomResource):
467
504
  import pulumi
468
505
  import pulumi_gcp as gcp
469
506
 
507
+ vertexai_sa = gcp.projects.ServiceIdentity("vertexai_sa", service="aiplatform.googleapis.com")
470
508
  bucket = gcp.storage.Bucket("bucket",
471
509
  name="vertex-ai-index-test",
472
510
  location="us-central1",
@@ -479,6 +517,10 @@ class AiIndex(pulumi.CustomResource):
479
517
  content=\"\"\"{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
480
518
  {"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
481
519
  \"\"\")
520
+ vertexai_encrypterdecrypter = gcp.kms.CryptoKeyIAMMember("vertexai_encrypterdecrypter",
521
+ crypto_key_id="kms-name",
522
+ role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
523
+ member=vertexai_sa.member)
482
524
  index = gcp.vertex.AiIndex("index",
483
525
  labels={
484
526
  "foo": "bar",
@@ -501,7 +543,11 @@ class AiIndex(pulumi.CustomResource):
501
543
  },
502
544
  },
503
545
  },
504
- index_update_method="BATCH_UPDATE")
546
+ encryption_spec={
547
+ "kms_key_name": "kms-name",
548
+ },
549
+ index_update_method="BATCH_UPDATE",
550
+ opts = pulumi.ResourceOptions(depends_on=[vertexai_encrypterdecrypter]))
505
551
  ```
506
552
  ### Vertex Ai Index Streaming
507
553
 
@@ -577,6 +623,8 @@ class AiIndex(pulumi.CustomResource):
577
623
  :param pulumi.ResourceOptions opts: Options for the resource.
578
624
  :param pulumi.Input[_builtins.str] description: The description of the Index.
579
625
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
626
+ :param pulumi.Input[Union['AiIndexEncryptionSpecArgs', 'AiIndexEncryptionSpecArgsDict']] encryption_spec: Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
627
+ Structure is documented below.
580
628
  :param pulumi.Input[_builtins.str] index_update_method: The update method to use with this Index. The value must be the followings. If not set, BATCH_UPDATE will be used by default.
581
629
  * BATCH_UPDATE: user can call indexes.patch with files on Cloud Storage of datapoints to update.
582
630
  * STREAM_UPDATE: user can call indexes.upsertDatapoints/DeleteDatapoints to update the Index and the updates will be applied in corresponding DeployedIndexes in nearly real-time.
@@ -612,6 +660,7 @@ class AiIndex(pulumi.CustomResource):
612
660
  import pulumi
613
661
  import pulumi_gcp as gcp
614
662
 
663
+ vertexai_sa = gcp.projects.ServiceIdentity("vertexai_sa", service="aiplatform.googleapis.com")
615
664
  bucket = gcp.storage.Bucket("bucket",
616
665
  name="vertex-ai-index-test",
617
666
  location="us-central1",
@@ -624,6 +673,10 @@ class AiIndex(pulumi.CustomResource):
624
673
  content=\"\"\"{"id": "42", "embedding": [0.5, 1.0], "restricts": [{"namespace": "class", "allow": ["cat", "pet"]},{"namespace": "category", "allow": ["feline"]}]}
625
674
  {"id": "43", "embedding": [0.6, 1.0], "restricts": [{"namespace": "class", "allow": ["dog", "pet"]},{"namespace": "category", "allow": ["canine"]}]}
626
675
  \"\"\")
676
+ vertexai_encrypterdecrypter = gcp.kms.CryptoKeyIAMMember("vertexai_encrypterdecrypter",
677
+ crypto_key_id="kms-name",
678
+ role="roles/cloudkms.cryptoKeyEncrypterDecrypter",
679
+ member=vertexai_sa.member)
627
680
  index = gcp.vertex.AiIndex("index",
628
681
  labels={
629
682
  "foo": "bar",
@@ -646,7 +699,11 @@ class AiIndex(pulumi.CustomResource):
646
699
  },
647
700
  },
648
701
  },
649
- index_update_method="BATCH_UPDATE")
702
+ encryption_spec={
703
+ "kms_key_name": "kms-name",
704
+ },
705
+ index_update_method="BATCH_UPDATE",
706
+ opts = pulumi.ResourceOptions(depends_on=[vertexai_encrypterdecrypter]))
650
707
  ```
651
708
  ### Vertex Ai Index Streaming
652
709
 
@@ -735,6 +792,7 @@ class AiIndex(pulumi.CustomResource):
735
792
  opts: Optional[pulumi.ResourceOptions] = None,
736
793
  description: Optional[pulumi.Input[_builtins.str]] = None,
737
794
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
795
+ encryption_spec: Optional[pulumi.Input[Union['AiIndexEncryptionSpecArgs', 'AiIndexEncryptionSpecArgsDict']]] = None,
738
796
  index_update_method: Optional[pulumi.Input[_builtins.str]] = None,
739
797
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
740
798
  metadata: Optional[pulumi.Input[Union['AiIndexMetadataArgs', 'AiIndexMetadataArgsDict']]] = None,
@@ -753,6 +811,7 @@ class AiIndex(pulumi.CustomResource):
753
811
  if display_name is None and not opts.urn:
754
812
  raise TypeError("Missing required property 'display_name'")
755
813
  __props__.__dict__["display_name"] = display_name
814
+ __props__.__dict__["encryption_spec"] = encryption_spec
756
815
  __props__.__dict__["index_update_method"] = index_update_method
757
816
  __props__.__dict__["labels"] = labels
758
817
  if metadata is None and not opts.urn:
@@ -786,6 +845,7 @@ class AiIndex(pulumi.CustomResource):
786
845
  description: Optional[pulumi.Input[_builtins.str]] = None,
787
846
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
788
847
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
848
+ encryption_spec: Optional[pulumi.Input[Union['AiIndexEncryptionSpecArgs', 'AiIndexEncryptionSpecArgsDict']]] = None,
789
849
  etag: Optional[pulumi.Input[_builtins.str]] = None,
790
850
  index_stats: Optional[pulumi.Input[Sequence[pulumi.Input[Union['AiIndexIndexStatArgs', 'AiIndexIndexStatArgsDict']]]]] = None,
791
851
  index_update_method: Optional[pulumi.Input[_builtins.str]] = None,
@@ -810,6 +870,8 @@ class AiIndex(pulumi.CustomResource):
810
870
  :param pulumi.Input[_builtins.str] description: The description of the Index.
811
871
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
812
872
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
873
+ :param pulumi.Input[Union['AiIndexEncryptionSpecArgs', 'AiIndexEncryptionSpecArgsDict']] encryption_spec: Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
874
+ Structure is documented below.
813
875
  :param pulumi.Input[_builtins.str] etag: Used to perform consistent read-modify-write updates.
814
876
  :param pulumi.Input[Sequence[pulumi.Input[Union['AiIndexIndexStatArgs', 'AiIndexIndexStatArgsDict']]]] index_stats: Stats of the index resource.
815
877
  Structure is documented below.
@@ -841,6 +903,7 @@ class AiIndex(pulumi.CustomResource):
841
903
  __props__.__dict__["description"] = description
842
904
  __props__.__dict__["display_name"] = display_name
843
905
  __props__.__dict__["effective_labels"] = effective_labels
906
+ __props__.__dict__["encryption_spec"] = encryption_spec
844
907
  __props__.__dict__["etag"] = etag
845
908
  __props__.__dict__["index_stats"] = index_stats
846
909
  __props__.__dict__["index_update_method"] = index_update_method
@@ -895,6 +958,15 @@ class AiIndex(pulumi.CustomResource):
895
958
  """
896
959
  return pulumi.get(self, "effective_labels")
897
960
 
961
+ @_builtins.property
962
+ @pulumi.getter(name="encryptionSpec")
963
+ def encryption_spec(self) -> pulumi.Output[Optional['outputs.AiIndexEncryptionSpec']]:
964
+ """
965
+ Customer-managed encryption key spec for an Index. If set, this Index and all sub-resources of this Index will be secured by this key.
966
+ Structure is documented below.
967
+ """
968
+ return pulumi.get(self, "encryption_spec")
969
+
898
970
  @_builtins.property
899
971
  @pulumi.getter
900
972
  def etag(self) -> pulumi.Output[_builtins.str]:
@@ -23,6 +23,7 @@ class AiIndexEndpointArgs:
23
23
  def __init__(__self__, *,
24
24
  display_name: pulumi.Input[_builtins.str],
25
25
  description: Optional[pulumi.Input[_builtins.str]] = None,
26
+ encryption_spec: Optional[pulumi.Input['AiIndexEndpointEncryptionSpecArgs']] = None,
26
27
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
27
28
  network: Optional[pulumi.Input[_builtins.str]] = None,
28
29
  private_service_connect_config: Optional[pulumi.Input['AiIndexEndpointPrivateServiceConnectConfigArgs']] = None,
@@ -33,6 +34,8 @@ class AiIndexEndpointArgs:
33
34
  The set of arguments for constructing a AiIndexEndpoint resource.
34
35
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
35
36
  :param pulumi.Input[_builtins.str] description: The description of the Index.
37
+ :param pulumi.Input['AiIndexEndpointEncryptionSpecArgs'] encryption_spec: Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
38
+ Structure is documented below.
36
39
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: The labels with user-defined metadata to organize your Indexes.
37
40
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
38
41
  Please refer to the field `effective_labels` for all of the labels present on the resource.
@@ -50,6 +53,8 @@ class AiIndexEndpointArgs:
50
53
  pulumi.set(__self__, "display_name", display_name)
51
54
  if description is not None:
52
55
  pulumi.set(__self__, "description", description)
56
+ if encryption_spec is not None:
57
+ pulumi.set(__self__, "encryption_spec", encryption_spec)
53
58
  if labels is not None:
54
59
  pulumi.set(__self__, "labels", labels)
55
60
  if network is not None:
@@ -87,6 +92,19 @@ class AiIndexEndpointArgs:
87
92
  def description(self, value: Optional[pulumi.Input[_builtins.str]]):
88
93
  pulumi.set(self, "description", value)
89
94
 
95
+ @_builtins.property
96
+ @pulumi.getter(name="encryptionSpec")
97
+ def encryption_spec(self) -> Optional[pulumi.Input['AiIndexEndpointEncryptionSpecArgs']]:
98
+ """
99
+ Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
100
+ Structure is documented below.
101
+ """
102
+ return pulumi.get(self, "encryption_spec")
103
+
104
+ @encryption_spec.setter
105
+ def encryption_spec(self, value: Optional[pulumi.Input['AiIndexEndpointEncryptionSpecArgs']]):
106
+ pulumi.set(self, "encryption_spec", value)
107
+
90
108
  @_builtins.property
91
109
  @pulumi.getter
92
110
  def labels(self) -> Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]:
@@ -174,6 +192,7 @@ class _AiIndexEndpointState:
174
192
  description: Optional[pulumi.Input[_builtins.str]] = None,
175
193
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
176
194
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
195
+ encryption_spec: Optional[pulumi.Input['AiIndexEndpointEncryptionSpecArgs']] = None,
177
196
  etag: Optional[pulumi.Input[_builtins.str]] = None,
178
197
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
179
198
  name: Optional[pulumi.Input[_builtins.str]] = None,
@@ -191,6 +210,8 @@ class _AiIndexEndpointState:
191
210
  :param pulumi.Input[_builtins.str] description: The description of the Index.
192
211
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
193
212
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
213
+ :param pulumi.Input['AiIndexEndpointEncryptionSpecArgs'] encryption_spec: Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
214
+ Structure is documented below.
194
215
  :param pulumi.Input[_builtins.str] etag: Used to perform consistent read-modify-write updates.
195
216
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: The labels with user-defined metadata to organize your Indexes.
196
217
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
@@ -219,6 +240,8 @@ class _AiIndexEndpointState:
219
240
  pulumi.set(__self__, "display_name", display_name)
220
241
  if effective_labels is not None:
221
242
  pulumi.set(__self__, "effective_labels", effective_labels)
243
+ if encryption_spec is not None:
244
+ pulumi.set(__self__, "encryption_spec", encryption_spec)
222
245
  if etag is not None:
223
246
  pulumi.set(__self__, "etag", etag)
224
247
  if labels is not None:
@@ -290,6 +313,19 @@ class _AiIndexEndpointState:
290
313
  def effective_labels(self, value: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]]):
291
314
  pulumi.set(self, "effective_labels", value)
292
315
 
316
+ @_builtins.property
317
+ @pulumi.getter(name="encryptionSpec")
318
+ def encryption_spec(self) -> Optional[pulumi.Input['AiIndexEndpointEncryptionSpecArgs']]:
319
+ """
320
+ Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
321
+ Structure is documented below.
322
+ """
323
+ return pulumi.get(self, "encryption_spec")
324
+
325
+ @encryption_spec.setter
326
+ def encryption_spec(self, value: Optional[pulumi.Input['AiIndexEndpointEncryptionSpecArgs']]):
327
+ pulumi.set(self, "encryption_spec", value)
328
+
293
329
  @_builtins.property
294
330
  @pulumi.getter
295
331
  def etag(self) -> Optional[pulumi.Input[_builtins.str]]:
@@ -439,6 +475,7 @@ class AiIndexEndpoint(pulumi.CustomResource):
439
475
  opts: Optional[pulumi.ResourceOptions] = None,
440
476
  description: Optional[pulumi.Input[_builtins.str]] = None,
441
477
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
478
+ encryption_spec: Optional[pulumi.Input[Union['AiIndexEndpointEncryptionSpecArgs', 'AiIndexEndpointEncryptionSpecArgsDict']]] = None,
442
479
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
443
480
  network: Optional[pulumi.Input[_builtins.str]] = None,
444
481
  private_service_connect_config: Optional[pulumi.Input[Union['AiIndexEndpointPrivateServiceConnectConfigArgs', 'AiIndexEndpointPrivateServiceConnectConfigArgsDict']]] = None,
@@ -552,6 +589,8 @@ class AiIndexEndpoint(pulumi.CustomResource):
552
589
  :param pulumi.ResourceOptions opts: Options for the resource.
553
590
  :param pulumi.Input[_builtins.str] description: The description of the Index.
554
591
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
592
+ :param pulumi.Input[Union['AiIndexEndpointEncryptionSpecArgs', 'AiIndexEndpointEncryptionSpecArgsDict']] encryption_spec: Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
593
+ Structure is documented below.
555
594
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: The labels with user-defined metadata to organize your Indexes.
556
595
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
557
596
  Please refer to the field `effective_labels` for all of the labels present on the resource.
@@ -691,6 +730,7 @@ class AiIndexEndpoint(pulumi.CustomResource):
691
730
  opts: Optional[pulumi.ResourceOptions] = None,
692
731
  description: Optional[pulumi.Input[_builtins.str]] = None,
693
732
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
733
+ encryption_spec: Optional[pulumi.Input[Union['AiIndexEndpointEncryptionSpecArgs', 'AiIndexEndpointEncryptionSpecArgsDict']]] = None,
694
734
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
695
735
  network: Optional[pulumi.Input[_builtins.str]] = None,
696
736
  private_service_connect_config: Optional[pulumi.Input[Union['AiIndexEndpointPrivateServiceConnectConfigArgs', 'AiIndexEndpointPrivateServiceConnectConfigArgsDict']]] = None,
@@ -710,6 +750,7 @@ class AiIndexEndpoint(pulumi.CustomResource):
710
750
  if display_name is None and not opts.urn:
711
751
  raise TypeError("Missing required property 'display_name'")
712
752
  __props__.__dict__["display_name"] = display_name
753
+ __props__.__dict__["encryption_spec"] = encryption_spec
713
754
  __props__.__dict__["labels"] = labels
714
755
  __props__.__dict__["network"] = network
715
756
  __props__.__dict__["private_service_connect_config"] = private_service_connect_config
@@ -739,6 +780,7 @@ class AiIndexEndpoint(pulumi.CustomResource):
739
780
  description: Optional[pulumi.Input[_builtins.str]] = None,
740
781
  display_name: Optional[pulumi.Input[_builtins.str]] = None,
741
782
  effective_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
783
+ encryption_spec: Optional[pulumi.Input[Union['AiIndexEndpointEncryptionSpecArgs', 'AiIndexEndpointEncryptionSpecArgsDict']]] = None,
742
784
  etag: Optional[pulumi.Input[_builtins.str]] = None,
743
785
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]]] = None,
744
786
  name: Optional[pulumi.Input[_builtins.str]] = None,
@@ -761,6 +803,8 @@ class AiIndexEndpoint(pulumi.CustomResource):
761
803
  :param pulumi.Input[_builtins.str] description: The description of the Index.
762
804
  :param pulumi.Input[_builtins.str] display_name: The display name of the Index. The name can be up to 128 characters long and can consist of any UTF-8 characters.
763
805
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] effective_labels: All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
806
+ :param pulumi.Input[Union['AiIndexEndpointEncryptionSpecArgs', 'AiIndexEndpointEncryptionSpecArgsDict']] encryption_spec: Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
807
+ Structure is documented below.
764
808
  :param pulumi.Input[_builtins.str] etag: Used to perform consistent read-modify-write updates.
765
809
  :param pulumi.Input[Mapping[str, pulumi.Input[_builtins.str]]] labels: The labels with user-defined metadata to organize your Indexes.
766
810
  **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
@@ -789,6 +833,7 @@ class AiIndexEndpoint(pulumi.CustomResource):
789
833
  __props__.__dict__["description"] = description
790
834
  __props__.__dict__["display_name"] = display_name
791
835
  __props__.__dict__["effective_labels"] = effective_labels
836
+ __props__.__dict__["encryption_spec"] = encryption_spec
792
837
  __props__.__dict__["etag"] = etag
793
838
  __props__.__dict__["labels"] = labels
794
839
  __props__.__dict__["name"] = name
@@ -834,6 +879,15 @@ class AiIndexEndpoint(pulumi.CustomResource):
834
879
  """
835
880
  return pulumi.get(self, "effective_labels")
836
881
 
882
+ @_builtins.property
883
+ @pulumi.getter(name="encryptionSpec")
884
+ def encryption_spec(self) -> pulumi.Output[Optional['outputs.AiIndexEndpointEncryptionSpec']]:
885
+ """
886
+ Customer-managed encryption key spec for an IndexEndpoint. If set, this IndexEndpoint and all sub-resources of this IndexEndpoint will be secured by this key.
887
+ Structure is documented below.
888
+ """
889
+ return pulumi.get(self, "encryption_spec")
890
+
837
891
  @_builtins.property
838
892
  @pulumi.getter
839
893
  def etag(self) -> pulumi.Output[_builtins.str]:
@@ -27,7 +27,7 @@ class GetAiIndexResult:
27
27
  """
28
28
  A collection of values returned by getAiIndex.
29
29
  """
30
- def __init__(__self__, create_time=None, deployed_indexes=None, description=None, display_name=None, effective_labels=None, etag=None, id=None, index_stats=None, index_update_method=None, labels=None, metadata_schema_uri=None, metadatas=None, name=None, project=None, pulumi_labels=None, region=None, update_time=None):
30
+ def __init__(__self__, create_time=None, deployed_indexes=None, description=None, display_name=None, effective_labels=None, encryption_specs=None, etag=None, id=None, index_stats=None, index_update_method=None, labels=None, metadata_schema_uri=None, metadatas=None, name=None, project=None, pulumi_labels=None, region=None, update_time=None):
31
31
  if create_time and not isinstance(create_time, str):
32
32
  raise TypeError("Expected argument 'create_time' to be a str")
33
33
  pulumi.set(__self__, "create_time", create_time)
@@ -43,6 +43,9 @@ class GetAiIndexResult:
43
43
  if effective_labels and not isinstance(effective_labels, dict):
44
44
  raise TypeError("Expected argument 'effective_labels' to be a dict")
45
45
  pulumi.set(__self__, "effective_labels", effective_labels)
46
+ if encryption_specs and not isinstance(encryption_specs, list):
47
+ raise TypeError("Expected argument 'encryption_specs' to be a list")
48
+ pulumi.set(__self__, "encryption_specs", encryption_specs)
46
49
  if etag and not isinstance(etag, str):
47
50
  raise TypeError("Expected argument 'etag' to be a str")
48
51
  pulumi.set(__self__, "etag", etag)
@@ -105,6 +108,11 @@ class GetAiIndexResult:
105
108
  def effective_labels(self) -> Mapping[str, _builtins.str]:
106
109
  return pulumi.get(self, "effective_labels")
107
110
 
111
+ @_builtins.property
112
+ @pulumi.getter(name="encryptionSpecs")
113
+ def encryption_specs(self) -> Sequence['outputs.GetAiIndexEncryptionSpecResult']:
114
+ return pulumi.get(self, "encryption_specs")
115
+
108
116
  @_builtins.property
109
117
  @pulumi.getter
110
118
  def etag(self) -> _builtins.str:
@@ -180,6 +188,7 @@ class AwaitableGetAiIndexResult(GetAiIndexResult):
180
188
  description=self.description,
181
189
  display_name=self.display_name,
182
190
  effective_labels=self.effective_labels,
191
+ encryption_specs=self.encryption_specs,
183
192
  etag=self.etag,
184
193
  id=self.id,
185
194
  index_stats=self.index_stats,
@@ -221,6 +230,7 @@ def get_ai_index(name: Optional[_builtins.str] = None,
221
230
  description=pulumi.get(__ret__, 'description'),
222
231
  display_name=pulumi.get(__ret__, 'display_name'),
223
232
  effective_labels=pulumi.get(__ret__, 'effective_labels'),
233
+ encryption_specs=pulumi.get(__ret__, 'encryption_specs'),
224
234
  etag=pulumi.get(__ret__, 'etag'),
225
235
  id=pulumi.get(__ret__, 'id'),
226
236
  index_stats=pulumi.get(__ret__, 'index_stats'),
@@ -259,6 +269,7 @@ def get_ai_index_output(name: Optional[pulumi.Input[_builtins.str]] = None,
259
269
  description=pulumi.get(__response__, 'description'),
260
270
  display_name=pulumi.get(__response__, 'display_name'),
261
271
  effective_labels=pulumi.get(__response__, 'effective_labels'),
272
+ encryption_specs=pulumi.get(__response__, 'encryption_specs'),
262
273
  etag=pulumi.get(__response__, 'etag'),
263
274
  id=pulumi.get(__response__, 'id'),
264
275
  index_stats=pulumi.get(__response__, 'index_stats'),