pulumi-gcp 7.8.0a1706829616__py3-none-any.whl → 7.8.0a1706905467__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. pulumi_gcp/__init__.py +30 -0
  2. pulumi_gcp/artifactregistry/repository.py +26 -28
  3. pulumi_gcp/cloudrun/_inputs.py +87 -4
  4. pulumi_gcp/cloudrun/outputs.py +152 -4
  5. pulumi_gcp/composer/_inputs.py +63 -0
  6. pulumi_gcp/composer/outputs.py +136 -0
  7. pulumi_gcp/compute/_inputs.py +8 -18
  8. pulumi_gcp/compute/backend_service.py +28 -0
  9. pulumi_gcp/compute/outputs.py +10 -20
  10. pulumi_gcp/compute/region_backend_service.py +30 -0
  11. pulumi_gcp/config/__init__.pyi +4 -0
  12. pulumi_gcp/config/vars.py +8 -0
  13. pulumi_gcp/discoveryengine/__init__.py +8 -0
  14. pulumi_gcp/discoveryengine/data_store.py +734 -0
  15. pulumi_gcp/eventarc/_inputs.py +2 -2
  16. pulumi_gcp/eventarc/outputs.py +2 -2
  17. pulumi_gcp/firebase/_inputs.py +4 -2
  18. pulumi_gcp/firebase/extensions_instance.py +6 -8
  19. pulumi_gcp/firebase/outputs.py +4 -2
  20. pulumi_gcp/firestore/backup_schedule.py +36 -12
  21. pulumi_gcp/firestore/database.py +0 -8
  22. pulumi_gcp/firestore/document.py +0 -68
  23. pulumi_gcp/firestore/field.py +22 -102
  24. pulumi_gcp/firestore/index.py +4 -42
  25. pulumi_gcp/gkehub/feature.py +2 -2
  26. pulumi_gcp/provider.py +40 -0
  27. pulumi_gcp/pubsub/_inputs.py +26 -4
  28. pulumi_gcp/pubsub/outputs.py +45 -8
  29. pulumi_gcp/pubsub/subscription.py +82 -0
  30. pulumi_gcp/securityposture/__init__.py +11 -0
  31. pulumi_gcp/securityposture/_inputs.py +1364 -0
  32. pulumi_gcp/securityposture/outputs.py +1372 -0
  33. pulumi_gcp/securityposture/posture.py +828 -0
  34. pulumi_gcp/securityposture/posture_deployment.py +872 -0
  35. pulumi_gcp/vertex/_inputs.py +156 -0
  36. pulumi_gcp/vertex/ai_feature_online_store_featureview.py +259 -3
  37. pulumi_gcp/vertex/outputs.py +170 -0
  38. pulumi_gcp/workflows/workflow.py +75 -7
  39. pulumi_gcp/workstations/_inputs.py +38 -0
  40. pulumi_gcp/workstations/outputs.py +30 -0
  41. pulumi_gcp/workstations/workstation_config.py +54 -0
  42. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/METADATA +1 -1
  43. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/RECORD +45 -38
  44. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/WHEEL +0 -0
  45. {pulumi_gcp-7.8.0a1706829616.dist-info → pulumi_gcp-7.8.0a1706905467.dist-info}/top_level.txt +0 -0
@@ -29,6 +29,9 @@ __all__ = [
29
29
  'AiFeatureOnlineStoreEmbeddingManagementArgs',
30
30
  'AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs',
31
31
  'AiFeatureOnlineStoreFeatureviewSyncConfigArgs',
32
+ 'AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs',
33
+ 'AiFeatureOnlineStoreFeatureviewVectorSearchConfigBruteForceConfigArgs',
34
+ 'AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs',
32
35
  'AiFeatureOnlineStoreOptimizedArgs',
33
36
  'AiFeatureStoreEncryptionSpecArgs',
34
37
  'AiFeatureStoreEntityTypeIamBindingConditionArgs',
@@ -1039,6 +1042,159 @@ class AiFeatureOnlineStoreFeatureviewSyncConfigArgs:
1039
1042
  pulumi.set(self, "cron", value)
1040
1043
 
1041
1044
 
1045
+ @pulumi.input_type
1046
+ class AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs:
1047
+ def __init__(__self__, *,
1048
+ embedding_column: pulumi.Input[str],
1049
+ brute_force_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigBruteForceConfigArgs']] = None,
1050
+ crowding_column: Optional[pulumi.Input[str]] = None,
1051
+ distance_measure_type: Optional[pulumi.Input[str]] = None,
1052
+ embedding_dimension: Optional[pulumi.Input[int]] = None,
1053
+ filter_columns: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]] = None,
1054
+ tree_ah_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs']] = None):
1055
+ """
1056
+ :param pulumi.Input[str] embedding_column: Column of embedding. This column contains the source data to create index for vector search.
1057
+ :param pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigBruteForceConfigArgs'] brute_force_config: Configuration options for using brute force search, which simply implements the standard linear search in the database for each query. It is primarily meant for benchmarking and to generate the ground truth for approximate search.
1058
+ :param pulumi.Input[str] crowding_column: Column of crowding. This column contains crowding attribute which is a constraint on a neighbor list produced by nearest neighbor search requiring that no more than some value k' of the k neighbors returned have the same value of crowdingAttribute.
1059
+ :param pulumi.Input[str] distance_measure_type: The distance measure used in nearest neighbor search.
1060
+ For details on allowed values, see the [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.featureOnlineStores.featureViews#DistanceMeasureType).
1061
+ Possible values are: `SQUARED_L2_DISTANCE`, `COSINE_DISTANCE`, `DOT_PRODUCT_DISTANCE`.
1062
+ :param pulumi.Input[int] embedding_dimension: The number of dimensions of the input embedding.
1063
+ :param pulumi.Input[Sequence[pulumi.Input[str]]] filter_columns: Columns of features that are used to filter vector search results.
1064
+ :param pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs'] tree_ah_config: Configuration options for the tree-AH algorithm (Shallow tree + Asymmetric Hashing). Please refer to this paper for more details: https://arxiv.org/abs/1908.10396
1065
+ Structure is documented below.
1066
+ """
1067
+ pulumi.set(__self__, "embedding_column", embedding_column)
1068
+ if brute_force_config is not None:
1069
+ pulumi.set(__self__, "brute_force_config", brute_force_config)
1070
+ if crowding_column is not None:
1071
+ pulumi.set(__self__, "crowding_column", crowding_column)
1072
+ if distance_measure_type is not None:
1073
+ pulumi.set(__self__, "distance_measure_type", distance_measure_type)
1074
+ if embedding_dimension is not None:
1075
+ pulumi.set(__self__, "embedding_dimension", embedding_dimension)
1076
+ if filter_columns is not None:
1077
+ pulumi.set(__self__, "filter_columns", filter_columns)
1078
+ if tree_ah_config is not None:
1079
+ pulumi.set(__self__, "tree_ah_config", tree_ah_config)
1080
+
1081
+ @property
1082
+ @pulumi.getter(name="embeddingColumn")
1083
+ def embedding_column(self) -> pulumi.Input[str]:
1084
+ """
1085
+ Column of embedding. This column contains the source data to create index for vector search.
1086
+ """
1087
+ return pulumi.get(self, "embedding_column")
1088
+
1089
+ @embedding_column.setter
1090
+ def embedding_column(self, value: pulumi.Input[str]):
1091
+ pulumi.set(self, "embedding_column", value)
1092
+
1093
+ @property
1094
+ @pulumi.getter(name="bruteForceConfig")
1095
+ def brute_force_config(self) -> Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigBruteForceConfigArgs']]:
1096
+ """
1097
+ Configuration options for using brute force search, which simply implements the standard linear search in the database for each query. It is primarily meant for benchmarking and to generate the ground truth for approximate search.
1098
+ """
1099
+ return pulumi.get(self, "brute_force_config")
1100
+
1101
+ @brute_force_config.setter
1102
+ def brute_force_config(self, value: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigBruteForceConfigArgs']]):
1103
+ pulumi.set(self, "brute_force_config", value)
1104
+
1105
+ @property
1106
+ @pulumi.getter(name="crowdingColumn")
1107
+ def crowding_column(self) -> Optional[pulumi.Input[str]]:
1108
+ """
1109
+ Column of crowding. This column contains crowding attribute which is a constraint on a neighbor list produced by nearest neighbor search requiring that no more than some value k' of the k neighbors returned have the same value of crowdingAttribute.
1110
+ """
1111
+ return pulumi.get(self, "crowding_column")
1112
+
1113
+ @crowding_column.setter
1114
+ def crowding_column(self, value: Optional[pulumi.Input[str]]):
1115
+ pulumi.set(self, "crowding_column", value)
1116
+
1117
+ @property
1118
+ @pulumi.getter(name="distanceMeasureType")
1119
+ def distance_measure_type(self) -> Optional[pulumi.Input[str]]:
1120
+ """
1121
+ The distance measure used in nearest neighbor search.
1122
+ For details on allowed values, see the [API documentation](https://cloud.google.com/vertex-ai/docs/reference/rest/v1beta1/projects.locations.featureOnlineStores.featureViews#DistanceMeasureType).
1123
+ Possible values are: `SQUARED_L2_DISTANCE`, `COSINE_DISTANCE`, `DOT_PRODUCT_DISTANCE`.
1124
+ """
1125
+ return pulumi.get(self, "distance_measure_type")
1126
+
1127
+ @distance_measure_type.setter
1128
+ def distance_measure_type(self, value: Optional[pulumi.Input[str]]):
1129
+ pulumi.set(self, "distance_measure_type", value)
1130
+
1131
+ @property
1132
+ @pulumi.getter(name="embeddingDimension")
1133
+ def embedding_dimension(self) -> Optional[pulumi.Input[int]]:
1134
+ """
1135
+ The number of dimensions of the input embedding.
1136
+ """
1137
+ return pulumi.get(self, "embedding_dimension")
1138
+
1139
+ @embedding_dimension.setter
1140
+ def embedding_dimension(self, value: Optional[pulumi.Input[int]]):
1141
+ pulumi.set(self, "embedding_dimension", value)
1142
+
1143
+ @property
1144
+ @pulumi.getter(name="filterColumns")
1145
+ def filter_columns(self) -> Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]:
1146
+ """
1147
+ Columns of features that are used to filter vector search results.
1148
+ """
1149
+ return pulumi.get(self, "filter_columns")
1150
+
1151
+ @filter_columns.setter
1152
+ def filter_columns(self, value: Optional[pulumi.Input[Sequence[pulumi.Input[str]]]]):
1153
+ pulumi.set(self, "filter_columns", value)
1154
+
1155
+ @property
1156
+ @pulumi.getter(name="treeAhConfig")
1157
+ def tree_ah_config(self) -> Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs']]:
1158
+ """
1159
+ Configuration options for the tree-AH algorithm (Shallow tree + Asymmetric Hashing). Please refer to this paper for more details: https://arxiv.org/abs/1908.10396
1160
+ Structure is documented below.
1161
+ """
1162
+ return pulumi.get(self, "tree_ah_config")
1163
+
1164
+ @tree_ah_config.setter
1165
+ def tree_ah_config(self, value: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs']]):
1166
+ pulumi.set(self, "tree_ah_config", value)
1167
+
1168
+
1169
+ @pulumi.input_type
1170
+ class AiFeatureOnlineStoreFeatureviewVectorSearchConfigBruteForceConfigArgs:
1171
+ def __init__(__self__):
1172
+ pass
1173
+
1174
+
1175
+ @pulumi.input_type
1176
+ class AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs:
1177
+ def __init__(__self__, *,
1178
+ leaf_node_embedding_count: Optional[pulumi.Input[str]] = None):
1179
+ """
1180
+ :param pulumi.Input[str] leaf_node_embedding_count: Number of embeddings on each leaf node. The default value is 1000 if not set.
1181
+ """
1182
+ if leaf_node_embedding_count is not None:
1183
+ pulumi.set(__self__, "leaf_node_embedding_count", leaf_node_embedding_count)
1184
+
1185
+ @property
1186
+ @pulumi.getter(name="leafNodeEmbeddingCount")
1187
+ def leaf_node_embedding_count(self) -> Optional[pulumi.Input[str]]:
1188
+ """
1189
+ Number of embeddings on each leaf node. The default value is 1000 if not set.
1190
+ """
1191
+ return pulumi.get(self, "leaf_node_embedding_count")
1192
+
1193
+ @leaf_node_embedding_count.setter
1194
+ def leaf_node_embedding_count(self, value: Optional[pulumi.Input[str]]):
1195
+ pulumi.set(self, "leaf_node_embedding_count", value)
1196
+
1197
+
1042
1198
  @pulumi.input_type
1043
1199
  class AiFeatureOnlineStoreOptimizedArgs:
1044
1200
  def __init__(__self__):
@@ -22,7 +22,8 @@ class AiFeatureOnlineStoreFeatureviewArgs:
22
22
  labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
23
23
  name: Optional[pulumi.Input[str]] = None,
24
24
  project: Optional[pulumi.Input[str]] = None,
25
- sync_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']] = None):
25
+ sync_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']] = None,
26
+ vector_search_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']] = None):
26
27
  """
27
28
  The set of arguments for constructing a AiFeatureOnlineStoreFeatureview resource.
28
29
  :param pulumi.Input[str] feature_online_store: The name of the FeatureOnlineStore to use for the featureview.
@@ -41,6 +42,8 @@ class AiFeatureOnlineStoreFeatureviewArgs:
41
42
  If it is not provided, the provider project is used.
42
43
  :param pulumi.Input['AiFeatureOnlineStoreFeatureviewSyncConfigArgs'] sync_config: Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving.
43
44
  Structure is documented below.
45
+ :param pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs'] vector_search_config: Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
46
+ Structure is documented below.
44
47
  """
45
48
  pulumi.set(__self__, "feature_online_store", feature_online_store)
46
49
  pulumi.set(__self__, "region", region)
@@ -54,6 +57,8 @@ class AiFeatureOnlineStoreFeatureviewArgs:
54
57
  pulumi.set(__self__, "project", project)
55
58
  if sync_config is not None:
56
59
  pulumi.set(__self__, "sync_config", sync_config)
60
+ if vector_search_config is not None:
61
+ pulumi.set(__self__, "vector_search_config", vector_search_config)
57
62
 
58
63
  @property
59
64
  @pulumi.getter(name="featureOnlineStore")
@@ -148,6 +153,19 @@ class AiFeatureOnlineStoreFeatureviewArgs:
148
153
  def sync_config(self, value: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']]):
149
154
  pulumi.set(self, "sync_config", value)
150
155
 
156
+ @property
157
+ @pulumi.getter(name="vectorSearchConfig")
158
+ def vector_search_config(self) -> Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]:
159
+ """
160
+ Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
161
+ Structure is documented below.
162
+ """
163
+ return pulumi.get(self, "vector_search_config")
164
+
165
+ @vector_search_config.setter
166
+ def vector_search_config(self, value: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]):
167
+ pulumi.set(self, "vector_search_config", value)
168
+
151
169
 
152
170
  @pulumi.input_type
153
171
  class _AiFeatureOnlineStoreFeatureviewState:
@@ -162,7 +180,8 @@ class _AiFeatureOnlineStoreFeatureviewState:
162
180
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
163
181
  region: Optional[pulumi.Input[str]] = None,
164
182
  sync_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']] = None,
165
- update_time: Optional[pulumi.Input[str]] = None):
183
+ update_time: Optional[pulumi.Input[str]] = None,
184
+ vector_search_config: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']] = None):
166
185
  """
167
186
  Input properties used for looking up and filtering AiFeatureOnlineStoreFeatureview resources.
168
187
  :param pulumi.Input['AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs'] big_query_source: Configures how data is supposed to be extracted from a BigQuery source to be loaded onto the FeatureOnlineStore.
@@ -186,6 +205,8 @@ class _AiFeatureOnlineStoreFeatureviewState:
186
205
  :param pulumi.Input['AiFeatureOnlineStoreFeatureviewSyncConfigArgs'] sync_config: Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving.
187
206
  Structure is documented below.
188
207
  :param pulumi.Input[str] update_time: The timestamp of when the featureOnlinestore was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
208
+ :param pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs'] vector_search_config: Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
209
+ Structure is documented below.
189
210
  """
190
211
  if big_query_source is not None:
191
212
  pulumi.set(__self__, "big_query_source", big_query_source)
@@ -209,6 +230,8 @@ class _AiFeatureOnlineStoreFeatureviewState:
209
230
  pulumi.set(__self__, "sync_config", sync_config)
210
231
  if update_time is not None:
211
232
  pulumi.set(__self__, "update_time", update_time)
233
+ if vector_search_config is not None:
234
+ pulumi.set(__self__, "vector_search_config", vector_search_config)
212
235
 
213
236
  @property
214
237
  @pulumi.getter(name="bigQuerySource")
@@ -352,6 +375,19 @@ class _AiFeatureOnlineStoreFeatureviewState:
352
375
  def update_time(self, value: Optional[pulumi.Input[str]]):
353
376
  pulumi.set(self, "update_time", value)
354
377
 
378
+ @property
379
+ @pulumi.getter(name="vectorSearchConfig")
380
+ def vector_search_config(self) -> Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]:
381
+ """
382
+ Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
383
+ Structure is documented below.
384
+ """
385
+ return pulumi.get(self, "vector_search_config")
386
+
387
+ @vector_search_config.setter
388
+ def vector_search_config(self, value: Optional[pulumi.Input['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]):
389
+ pulumi.set(self, "vector_search_config", value)
390
+
355
391
 
356
392
  class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
357
393
  @overload
@@ -365,6 +401,7 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
365
401
  project: Optional[pulumi.Input[str]] = None,
366
402
  region: Optional[pulumi.Input[str]] = None,
367
403
  sync_config: Optional[pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']]] = None,
404
+ vector_search_config: Optional[pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]] = None,
368
405
  __props__=None):
369
406
  """
370
407
  FeatureView is representation of values that the FeatureOnlineStore will serve based on its syncConfig.
@@ -436,6 +473,107 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
436
473
  ))
437
474
  project = gcp.organizations.get_project()
438
475
  ```
476
+ ### Vertex Ai Featureonlinestore Featureview With Vector Search
477
+
478
+ ```python
479
+ import pulumi
480
+ import pulumi_gcp as gcp
481
+
482
+ featureonlinestore = gcp.vertex.AiFeatureOnlineStore("featureonlinestore",
483
+ labels={
484
+ "foo": "bar",
485
+ },
486
+ region="us-central1",
487
+ bigtable=gcp.vertex.AiFeatureOnlineStoreBigtableArgs(
488
+ auto_scaling=gcp.vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs(
489
+ min_node_count=1,
490
+ max_node_count=2,
491
+ cpu_utilization_target=80,
492
+ ),
493
+ ),
494
+ embedding_management=gcp.vertex.AiFeatureOnlineStoreEmbeddingManagementArgs(
495
+ enabled=True,
496
+ ),
497
+ opts=pulumi.ResourceOptions(provider=google_beta))
498
+ tf_test_dataset = gcp.bigquery.Dataset("tf-test-dataset",
499
+ dataset_id="example_feature_view_vector_search",
500
+ friendly_name="test",
501
+ description="This is a test description",
502
+ location="US",
503
+ opts=pulumi.ResourceOptions(provider=google_beta))
504
+ tf_test_table = gcp.bigquery.Table("tf-test-table",
505
+ deletion_protection=False,
506
+ dataset_id=tf_test_dataset.dataset_id,
507
+ table_id="example_feature_view_vector_search",
508
+ schema=\"\"\"[
509
+ {
510
+ "name": "test_primary_id",
511
+ "mode": "NULLABLE",
512
+ "type": "STRING",
513
+ "description": "primary test id"
514
+ },
515
+ {
516
+ "name": "embedding",
517
+ "mode": "REPEATED",
518
+ "type": "FLOAT",
519
+ "description": "embedding column for primary_id column"
520
+ },
521
+ {
522
+ "name": "country",
523
+ "mode": "NULLABLE",
524
+ "type": "STRING",
525
+ "description": "country"
526
+ },
527
+ {
528
+ "name": "test_crowding_column",
529
+ "mode": "NULLABLE",
530
+ "type": "INTEGER",
531
+ "description": "test crowding column"
532
+ },
533
+ {
534
+ "name": "entity_id",
535
+ "mode": "NULLABLE",
536
+ "type": "STRING",
537
+ "description": "Test default entity_id"
538
+ },
539
+ {
540
+ "name": "test_entity_column",
541
+ "mode": "NULLABLE",
542
+ "type": "STRING",
543
+ "description": "test secondary entity column"
544
+ },
545
+ {
546
+ "name": "feature_timestamp",
547
+ "mode": "NULLABLE",
548
+ "type": "TIMESTAMP",
549
+ "description": "Default timestamp value"
550
+ }
551
+ ]
552
+ \"\"\",
553
+ opts=pulumi.ResourceOptions(provider=google_beta))
554
+ featureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview("featureviewVectorSearch",
555
+ region="us-central1",
556
+ feature_online_store=featureonlinestore.name,
557
+ sync_config=gcp.vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs(
558
+ cron="0 0 * * *",
559
+ ),
560
+ big_query_source=gcp.vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs(
561
+ uri=pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"),
562
+ entity_id_columns=["test_entity_column"],
563
+ ),
564
+ vector_search_config=gcp.vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs(
565
+ embedding_column="embedding",
566
+ filter_columns=["country"],
567
+ crowding_column="test_crowding_column",
568
+ distance_measure_type="DOT_PRODUCT_DISTANCE",
569
+ tree_ah_config=gcp.vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs(
570
+ leaf_node_embedding_count="1000",
571
+ ),
572
+ embedding_dimension=2,
573
+ ),
574
+ opts=pulumi.ResourceOptions(provider=google_beta))
575
+ project = gcp.organizations.get_project()
576
+ ```
439
577
 
440
578
  ## Import
441
579
 
@@ -475,6 +613,8 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
475
613
  - - -
476
614
  :param pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']] sync_config: Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving.
477
615
  Structure is documented below.
616
+ :param pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']] vector_search_config: Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
617
+ Structure is documented below.
478
618
  """
479
619
  ...
480
620
  @overload
@@ -552,6 +692,107 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
552
692
  ))
553
693
  project = gcp.organizations.get_project()
554
694
  ```
695
+ ### Vertex Ai Featureonlinestore Featureview With Vector Search
696
+
697
+ ```python
698
+ import pulumi
699
+ import pulumi_gcp as gcp
700
+
701
+ featureonlinestore = gcp.vertex.AiFeatureOnlineStore("featureonlinestore",
702
+ labels={
703
+ "foo": "bar",
704
+ },
705
+ region="us-central1",
706
+ bigtable=gcp.vertex.AiFeatureOnlineStoreBigtableArgs(
707
+ auto_scaling=gcp.vertex.AiFeatureOnlineStoreBigtableAutoScalingArgs(
708
+ min_node_count=1,
709
+ max_node_count=2,
710
+ cpu_utilization_target=80,
711
+ ),
712
+ ),
713
+ embedding_management=gcp.vertex.AiFeatureOnlineStoreEmbeddingManagementArgs(
714
+ enabled=True,
715
+ ),
716
+ opts=pulumi.ResourceOptions(provider=google_beta))
717
+ tf_test_dataset = gcp.bigquery.Dataset("tf-test-dataset",
718
+ dataset_id="example_feature_view_vector_search",
719
+ friendly_name="test",
720
+ description="This is a test description",
721
+ location="US",
722
+ opts=pulumi.ResourceOptions(provider=google_beta))
723
+ tf_test_table = gcp.bigquery.Table("tf-test-table",
724
+ deletion_protection=False,
725
+ dataset_id=tf_test_dataset.dataset_id,
726
+ table_id="example_feature_view_vector_search",
727
+ schema=\"\"\"[
728
+ {
729
+ "name": "test_primary_id",
730
+ "mode": "NULLABLE",
731
+ "type": "STRING",
732
+ "description": "primary test id"
733
+ },
734
+ {
735
+ "name": "embedding",
736
+ "mode": "REPEATED",
737
+ "type": "FLOAT",
738
+ "description": "embedding column for primary_id column"
739
+ },
740
+ {
741
+ "name": "country",
742
+ "mode": "NULLABLE",
743
+ "type": "STRING",
744
+ "description": "country"
745
+ },
746
+ {
747
+ "name": "test_crowding_column",
748
+ "mode": "NULLABLE",
749
+ "type": "INTEGER",
750
+ "description": "test crowding column"
751
+ },
752
+ {
753
+ "name": "entity_id",
754
+ "mode": "NULLABLE",
755
+ "type": "STRING",
756
+ "description": "Test default entity_id"
757
+ },
758
+ {
759
+ "name": "test_entity_column",
760
+ "mode": "NULLABLE",
761
+ "type": "STRING",
762
+ "description": "test secondary entity column"
763
+ },
764
+ {
765
+ "name": "feature_timestamp",
766
+ "mode": "NULLABLE",
767
+ "type": "TIMESTAMP",
768
+ "description": "Default timestamp value"
769
+ }
770
+ ]
771
+ \"\"\",
772
+ opts=pulumi.ResourceOptions(provider=google_beta))
773
+ featureview_vector_search = gcp.vertex.AiFeatureOnlineStoreFeatureview("featureviewVectorSearch",
774
+ region="us-central1",
775
+ feature_online_store=featureonlinestore.name,
776
+ sync_config=gcp.vertex.AiFeatureOnlineStoreFeatureviewSyncConfigArgs(
777
+ cron="0 0 * * *",
778
+ ),
779
+ big_query_source=gcp.vertex.AiFeatureOnlineStoreFeatureviewBigQuerySourceArgs(
780
+ uri=pulumi.Output.all(tf_test_table.project, tf_test_table.dataset_id, tf_test_table.table_id).apply(lambda project, dataset_id, table_id: f"bq://{project}.{dataset_id}.{table_id}"),
781
+ entity_id_columns=["test_entity_column"],
782
+ ),
783
+ vector_search_config=gcp.vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs(
784
+ embedding_column="embedding",
785
+ filter_columns=["country"],
786
+ crowding_column="test_crowding_column",
787
+ distance_measure_type="DOT_PRODUCT_DISTANCE",
788
+ tree_ah_config=gcp.vertex.AiFeatureOnlineStoreFeatureviewVectorSearchConfigTreeAhConfigArgs(
789
+ leaf_node_embedding_count="1000",
790
+ ),
791
+ embedding_dimension=2,
792
+ ),
793
+ opts=pulumi.ResourceOptions(provider=google_beta))
794
+ project = gcp.organizations.get_project()
795
+ ```
555
796
 
556
797
  ## Import
557
798
 
@@ -595,6 +836,7 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
595
836
  project: Optional[pulumi.Input[str]] = None,
596
837
  region: Optional[pulumi.Input[str]] = None,
597
838
  sync_config: Optional[pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']]] = None,
839
+ vector_search_config: Optional[pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]] = None,
598
840
  __props__=None):
599
841
  opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
600
842
  if not isinstance(opts, pulumi.ResourceOptions):
@@ -615,6 +857,7 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
615
857
  raise TypeError("Missing required property 'region'")
616
858
  __props__.__dict__["region"] = region
617
859
  __props__.__dict__["sync_config"] = sync_config
860
+ __props__.__dict__["vector_search_config"] = vector_search_config
618
861
  __props__.__dict__["create_time"] = None
619
862
  __props__.__dict__["effective_labels"] = None
620
863
  __props__.__dict__["pulumi_labels"] = None
@@ -641,7 +884,8 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
641
884
  pulumi_labels: Optional[pulumi.Input[Mapping[str, pulumi.Input[str]]]] = None,
642
885
  region: Optional[pulumi.Input[str]] = None,
643
886
  sync_config: Optional[pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']]] = None,
644
- update_time: Optional[pulumi.Input[str]] = None) -> 'AiFeatureOnlineStoreFeatureview':
887
+ update_time: Optional[pulumi.Input[str]] = None,
888
+ vector_search_config: Optional[pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']]] = None) -> 'AiFeatureOnlineStoreFeatureview':
645
889
  """
646
890
  Get an existing AiFeatureOnlineStoreFeatureview resource's state with the given name, id, and optional extra
647
891
  properties used to qualify the lookup.
@@ -670,6 +914,8 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
670
914
  :param pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewSyncConfigArgs']] sync_config: Configures when data is to be synced/updated for this FeatureView. At the end of the sync the latest featureValues for each entityId of this FeatureView are made ready for online serving.
671
915
  Structure is documented below.
672
916
  :param pulumi.Input[str] update_time: The timestamp of when the featureOnlinestore was last updated in RFC3339 UTC "Zulu" format, with nanosecond resolution and up to nine fractional digits.
917
+ :param pulumi.Input[pulumi.InputType['AiFeatureOnlineStoreFeatureviewVectorSearchConfigArgs']] vector_search_config: Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
918
+ Structure is documented below.
673
919
  """
674
920
  opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))
675
921
 
@@ -686,6 +932,7 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
686
932
  __props__.__dict__["region"] = region
687
933
  __props__.__dict__["sync_config"] = sync_config
688
934
  __props__.__dict__["update_time"] = update_time
935
+ __props__.__dict__["vector_search_config"] = vector_search_config
689
936
  return AiFeatureOnlineStoreFeatureview(resource_name, opts=opts, __props__=__props__)
690
937
 
691
938
  @property
@@ -786,3 +1033,12 @@ class AiFeatureOnlineStoreFeatureview(pulumi.CustomResource):
786
1033
  """
787
1034
  return pulumi.get(self, "update_time")
788
1035
 
1036
+ @property
1037
+ @pulumi.getter(name="vectorSearchConfig")
1038
+ def vector_search_config(self) -> pulumi.Output[Optional['outputs.AiFeatureOnlineStoreFeatureviewVectorSearchConfig']]:
1039
+ """
1040
+ Configuration for vector search. It contains the required configurations to create an index from source data, so that approximate nearest neighbor (a.k.a ANN) algorithms search can be performed during online serving.
1041
+ Structure is documented below.
1042
+ """
1043
+ return pulumi.get(self, "vector_search_config")
1044
+