diff --git a/.secrets.baseline b/.secrets.baseline index 332bb7596f8..fa591b9c234 100644 --- a/.secrets.baseline +++ b/.secrets.baseline @@ -989,7 +989,7 @@ "filename": "infra/feast-operator/api/v1alpha1/featurestore_types.go", "hashed_secret": "44e17306b837162269a410204daaa5ecee4ec22c", "is_verified": false, - "line_number": 663 + "line_number": 664 } ], "infra/feast-operator/api/v1alpha1/zz_generated.deepcopy.go": [ diff --git a/docs/reference/offline-stores/hybrid.md b/docs/reference/offline-stores/hybrid.md index a10ed66fd2c..38adb1820e0 100644 --- a/docs/reference/offline-stores/hybrid.md +++ b/docs/reference/offline-stores/hybrid.md @@ -18,7 +18,7 @@ project: my_feature_repo registry: data/registry.db provider: local offline_store: - type: hybrid_offline_store.HybridOfflineStore + type: hybrid offline_stores: - type: spark conf: diff --git a/infra/feast-operator/api/v1/featurestore_types.go b/infra/feast-operator/api/v1/featurestore_types.go index 6b710064eec..11acc80b8b4 100644 --- a/infra/feast-operator/api/v1/featurestore_types.go +++ b/infra/feast-operator/api/v1/featurestore_types.go @@ -528,7 +528,7 @@ var ValidOfflineStoreFilePersistenceTypes = []string{ // OfflineStoreDBStorePersistence configures the DB store persistence for the offline store service type OfflineStoreDBStorePersistence struct { // Type of the persistence type you want to use. - // +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray;oracle + // +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray;oracle;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"` @@ -549,6 +549,7 @@ var ValidOfflineStoreDBStorePersistenceTypes = []string{ "clickhouse", "ray", "oracle", + "hybrid", } // OnlineStore configures the online store service diff --git a/infra/feast-operator/api/v1alpha1/featurestore_types.go b/infra/feast-operator/api/v1alpha1/featurestore_types.go index 8ccde377e77..985a6887316 100644 --- a/infra/feast-operator/api/v1alpha1/featurestore_types.go +++ b/infra/feast-operator/api/v1alpha1/featurestore_types.go @@ -337,7 +337,7 @@ var ValidOfflineStoreFilePersistenceTypes = []string{ // OfflineStoreDBStorePersistence configures the DB store persistence for the offline store service type OfflineStoreDBStorePersistence struct { // Type of the persistence type you want to use. - // +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray + // +kubebuilder:validation:Enum=snowflake.offline;bigquery;redshift;spark;postgres;trino;athena;mssql;couchbase.offline;clickhouse;ray;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"` @@ -357,6 +357,7 @@ var ValidOfflineStoreDBStorePersistenceTypes = []string{ "couchbase.offline", "clickhouse", "ray", + "hybrid", } // OnlineStore configures the online store service diff --git a/infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml b/infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml index 677f1b0737d..fcdce62c80b 100644 --- a/infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml +++ b/infra/feast-operator/bundle/manifests/feast.dev_featurestores.yaml @@ -1893,6 +1893,7 @@ spec: - clickhouse - ray - oracle + - hybrid type: string required: - secretRef @@ -8235,6 +8236,7 @@ spec: - clickhouse - ray - oracle + - hybrid type: string required: - secretRef @@ -13795,6 +13797,7 @@ spec: - couchbase.offline - clickhouse - ray + - hybrid type: string required: - secretRef @@ -18316,6 +18319,7 @@ spec: - couchbase.offline - clickhouse - ray + - hybrid type: string required: - secretRef 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 5f3e867db64..e589133d1c0 100644 --- a/infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml +++ b/infra/feast-operator/config/crd/bases/feast.dev_featurestores.yaml @@ -1893,6 +1893,7 @@ spec: - clickhouse - ray - oracle + - hybrid type: string required: - secretRef @@ -8235,6 +8236,7 @@ spec: - clickhouse - ray - oracle + - hybrid type: string required: - secretRef @@ -13795,6 +13797,7 @@ spec: - couchbase.offline - clickhouse - ray + - hybrid type: string required: - secretRef @@ -18316,6 +18319,7 @@ spec: - couchbase.offline - clickhouse - ray + - hybrid type: string required: - secretRef diff --git a/infra/feast-operator/dist/install.yaml b/infra/feast-operator/dist/install.yaml index 4ce8b1a1261..39db6a64bff 100644 --- a/infra/feast-operator/dist/install.yaml +++ b/infra/feast-operator/dist/install.yaml @@ -1901,6 +1901,7 @@ spec: - clickhouse - ray - oracle + - hybrid type: string required: - secretRef @@ -8243,6 +8244,7 @@ spec: - clickhouse - ray - oracle + - hybrid type: string required: - secretRef @@ -13803,6 +13805,7 @@ spec: - couchbase.offline - clickhouse - ray + - hybrid type: string required: - secretRef @@ -18324,6 +18327,7 @@ spec: - couchbase.offline - clickhouse - ray + - hybrid type: string required: - secretRef diff --git a/sdk/python/feast/repo_config.py b/sdk/python/feast/repo_config.py index 775a62aab57..5a975f0a1c2 100644 --- a/sdk/python/feast/repo_config.py +++ b/sdk/python/feast/repo_config.py @@ -108,6 +108,7 @@ "clickhouse": "feast.infra.offline_stores.contrib.clickhouse_offline_store.clickhouse.ClickhouseOfflineStore", "ray": "feast.infra.offline_stores.contrib.ray_offline_store.ray.RayOfflineStore", "oracle": "feast.infra.offline_stores.contrib.oracle_offline_store.oracle.OracleOfflineStore", + "hybrid": "feast.infra.offline_stores.hybrid_offline_store.HybridOfflineStore", } FEATURE_SERVER_CONFIG_CLASS_FOR_TYPE = {