diff --git a/docs/reference/online-stores/hybrid.md b/docs/reference/online-stores/hybrid.md index 38527d9a66e..a03cc4ae853 100644 --- a/docs/reference/online-stores/hybrid.md +++ b/docs/reference/online-stores/hybrid.md @@ -20,7 +20,7 @@ project: my_feature_repo registry: data/registry.db provider: local online_store: - type: hybrid_online_store.HybridOnlineStore + type: hybrid routing_tag: team # or any tag name you want to use in FeatureView's for routing online_stores: - type: bigtable diff --git a/infra/feast-operator/api/v1/featurestore_types.go b/infra/feast-operator/api/v1/featurestore_types.go index 462447d23c6..cb79578a1ff 100644 --- a/infra/feast-operator/api/v1/featurestore_types.go +++ b/infra/feast-operator/api/v1/featurestore_types.go @@ -371,7 +371,7 @@ type OnlineStoreFilePersistence struct { // OnlineStoreDBStorePersistence configures the DB store persistence for the online store service type OnlineStoreDBStorePersistence struct { // Type of the persistence type you want to use. - // +kubebuilder:validation:Enum=snowflake.online;redis;ikv;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus + // +kubebuilder:validation:Enum=snowflake.online;redis;ikv;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus;hybrid Type string `json:"type"` // Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed. SecretRef corev1.LocalObjectReference `json:"secretRef"` @@ -396,6 +396,7 @@ var ValidOnlineStoreDBStorePersistenceTypes = []string{ "qdrant", "couchbase.online", "milvus", + "hybrid", } // LocalRegistryConfig configures the registry service diff --git a/infra/feast-operator/api/v1alpha1/featurestore_types.go b/infra/feast-operator/api/v1alpha1/featurestore_types.go index 45dff27f816..c246877ea7c 100644 --- a/infra/feast-operator/api/v1alpha1/featurestore_types.go +++ b/infra/feast-operator/api/v1alpha1/featurestore_types.go @@ -371,7 +371,7 @@ type OnlineStoreFilePersistence struct { // OnlineStoreDBStorePersistence configures the DB store persistence for the online store service type OnlineStoreDBStorePersistence struct { // Type of the persistence type you want to use. - // +kubebuilder:validation:Enum=snowflake.online;redis;ikv;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus + // +kubebuilder:validation:Enum=snowflake.online;redis;ikv;datastore;dynamodb;bigtable;postgres;cassandra;mysql;hazelcast;singlestore;hbase;elasticsearch;qdrant;couchbase.online;milvus;hybrid Type string `json:"type"` // Data store parameters should be placed as-is from the "feature_store.yaml" under the secret key. "registry_type" & "type" fields should be removed. SecretRef corev1.LocalObjectReference `json:"secretRef"` @@ -396,6 +396,7 @@ var ValidOnlineStoreDBStorePersistenceTypes = []string{ "qdrant", "couchbase.online", "milvus", + "hybrid", } // LocalRegistryConfig configures the registry service diff --git a/infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml b/infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml index d47acf74135..04456c5a929 100644 --- a/infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml +++ b/infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml @@ -1322,6 +1322,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef @@ -5358,6 +5359,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef @@ -9521,6 +9523,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef @@ -13557,6 +13560,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef diff --git a/infra/feast-operator/dist/install.yaml b/infra/feast-operator/dist/install.yaml index 57e32090b19..0bfc0da14d8 100644 --- a/infra/feast-operator/dist/install.yaml +++ b/infra/feast-operator/dist/install.yaml @@ -1330,6 +1330,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef @@ -5366,6 +5367,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef @@ -9529,6 +9531,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef @@ -13565,6 +13568,7 @@ spec: - qdrant - couchbase.online - milvus + - hybrid type: string required: - secretRef diff --git a/sdk/python/feast/infra/online_stores/hybrid_online_store/__init__.py b/sdk/python/feast/infra/online_stores/hybrid_online_store/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/sdk/python/feast/infra/online_stores/hybrid_online_store/hybrid_online_store.py b/sdk/python/feast/infra/online_stores/hybrid_online_store/hybrid_online_store.py index e929e039411..8faefdbd344 100644 --- a/sdk/python/feast/infra/online_stores/hybrid_online_store/hybrid_online_store.py +++ b/sdk/python/feast/infra/online_stores/hybrid_online_store/hybrid_online_store.py @@ -21,7 +21,7 @@ Example configuration (feature_store.yaml): online_store: - type: hybrid_online_store.HybridOnlineStore + type: hybrid routing_tag: team # or any tag name you want to use for routing online_stores: - type: feast.infra.online_stores.bigtable.BigtableOnlineStore @@ -64,9 +64,7 @@ class HybridOnlineStoreConfig(FeastConfigBaseModel): online_stores: A list of OnlineStoresWithConfig, each specifying the type and config for an online store backend. """ - type: Literal["HybridOnlineStore", "hybrid_online_store.HybridOnlineStore"] = ( - "hybrid_online_store.HybridOnlineStore" - ) + type: Literal["hybrid"] = "hybrid" class OnlineStoresWithConfig(FeastConfigBaseModel): """ diff --git a/sdk/python/feast/repo_config.py b/sdk/python/feast/repo_config.py index 2cd148edb66..318ca324cd6 100644 --- a/sdk/python/feast/repo_config.py +++ b/sdk/python/feast/repo_config.py @@ -84,6 +84,7 @@ "qdrant": "feast.infra.online_stores.qdrant_online_store.qdrant.QdrantOnlineStore", "couchbase.online": "feast.infra.online_stores.couchbase_online_store.couchbase.CouchbaseOnlineStore", "milvus": "feast.infra.online_stores.milvus_online_store.milvus.MilvusOnlineStore", + "hybrid": "feast.infra.online_stores.hybrid_online_store.hybrid_online_store.HybridOnlineStore", **LEGACY_ONLINE_STORE_CLASS_FOR_TYPE, }