Skip to content

Commit 372fd75

Browse files
authored
chore: Remove existing providers from the repo (feast-dev#4298)
remove providers Signed-off-by: tokoko <togurg14@freeuni.edu.ge>
1 parent 86af60a commit 372fd75

10 files changed

Lines changed: 40 additions & 235 deletions

File tree

sdk/python/feast/errors.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -119,23 +119,11 @@ def __init__(self, provider_name):
119119
super().__init__(f"Provider '{provider_name}' is not implemented")
120120

121121

122-
class FeastProviderNotSetError(Exception):
123-
def __init__(self):
124-
super().__init__("Provider is not set, but is required")
125-
126-
127122
class FeastRegistryNotSetError(Exception):
128123
def __init__(self):
129124
super().__init__("Registry is not set, but is required")
130125

131126

132-
class FeastFeatureServerTypeSetError(Exception):
133-
def __init__(self, feature_server_type: str):
134-
super().__init__(
135-
f"Feature server type was set to {feature_server_type}, but the type should be determined by the provider"
136-
)
137-
138-
139127
class FeastFeatureServerTypeInvalidError(Exception):
140128
def __init__(self, feature_server_type: str):
141129
super().__init__(

sdk/python/feast/infra/aws.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

sdk/python/feast/infra/contrib/azure_provider.py

Lines changed: 0 additions & 72 deletions
This file was deleted.

sdk/python/feast/infra/gcp.py

Lines changed: 0 additions & 9 deletions
This file was deleted.

sdk/python/feast/infra/local.py

Lines changed: 0 additions & 23 deletions
This file was deleted.

sdk/python/feast/infra/passthrough_provider.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
from feast.feature_logging import FeatureServiceLoggingSource
1313
from feast.feature_service import FeatureService
1414
from feast.feature_view import FeatureView
15+
from feast.infra.infra_object import Infra, InfraObject
1516
from feast.infra.materialization.batch_materialization_engine import (
1617
BatchMaterializationEngine,
1718
MaterializationJobStatus,
@@ -22,6 +23,7 @@
2223
from feast.infra.online_stores.helpers import get_online_store_from_config
2324
from feast.infra.provider import Provider
2425
from feast.infra.registry.base_registry import BaseRegistry
26+
from feast.protos.feast.core.Registry_pb2 import Registry as RegistryProto
2527
from feast.protos.feast.types.EntityKey_pb2 import EntityKey as EntityKeyProto
2628
from feast.protos.feast.types.Value_pb2 import Value as ValueProto
2729
from feast.repo_config import BATCH_ENGINE_CLASS_FOR_TYPE, RepoConfig
@@ -103,6 +105,17 @@ def batch_engine(self) -> BatchMaterializationEngine:
103105
self._batch_engine = _batch_engine
104106
return _batch_engine
105107

108+
def plan_infra(
109+
self, config: RepoConfig, desired_registry_proto: RegistryProto
110+
) -> Infra:
111+
infra = Infra()
112+
if self.online_store:
113+
infra_objects: List[InfraObject] = self.online_store.plan(
114+
config, desired_registry_proto
115+
)
116+
infra.infra_objects += infra_objects
117+
return infra
118+
106119
def update_infra(
107120
self,
108121
project: str,

sdk/python/feast/infra/provider.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
from feast.saved_dataset import SavedDataset
2323

2424
PROVIDERS_CLASS_FOR_TYPE = {
25-
"gcp": "feast.infra.gcp.GcpProvider",
26-
"aws": "feast.infra.aws.AwsProvider",
27-
"local": "feast.infra.local.LocalProvider",
28-
"azure": "feast.infra.contrib.azure_provider.AzureProvider",
25+
"gcp": "feast.infra.passthrough_provider.PassthroughProvider",
26+
"aws": "feast.infra.passthrough_provider.PassthroughProvider",
27+
"local": "feast.infra.passthrough_provider.PassthroughProvider",
28+
"azure": "feast.infra.passthrough_provider.PassthroughProvider",
2929
}
3030

3131

sdk/python/feast/repo_config.py

Lines changed: 6 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@
1818

1919
from feast.errors import (
2020
FeastFeatureServerTypeInvalidError,
21-
FeastFeatureServerTypeSetError,
2221
FeastOfflineStoreInvalidName,
2322
FeastOnlineStoreInvalidName,
24-
FeastProviderNotSetError,
2523
FeastRegistryNotSetError,
2624
FeastRegistryTypeInvalidError,
2725
)
@@ -85,10 +83,6 @@
8583
"local": "feast.infra.feature_servers.local_process.config.LocalFeatureServerConfig",
8684
}
8785

88-
FEATURE_SERVER_TYPE_FOR_PROVIDER = {
89-
"local": "local",
90-
}
91-
9286

9387
class FeastBaseModel(BaseModel):
9488
"""Feast Pydantic Configuration Class"""
@@ -138,7 +132,7 @@ class RepoConfig(FeastBaseModel):
138132
provider account, as long as they have different project ids.
139133
"""
140134

141-
provider: StrictStr
135+
provider: StrictStr = "local"
142136
""" str: local or gcp or aws """
143137

144138
registry_config: Any = Field(alias="registry", default="data/registry.db")
@@ -191,30 +185,10 @@ def __init__(self, **data: Any):
191185
self.registry_config = data["registry"]
192186

193187
self._offline_store = None
194-
if "offline_store" in data:
195-
self.offline_config = data["offline_store"]
196-
else:
197-
if data["provider"] == "local":
198-
self.offline_config = "file"
199-
elif data["provider"] == "gcp":
200-
self.offline_config = "bigquery"
201-
elif data["provider"] == "aws":
202-
self.offline_config = "redshift"
203-
elif data["provider"] == "azure":
204-
self.offline_config = "mssql"
188+
self.offline_config = data.get("offline_store", "file")
205189

206190
self._online_store = None
207-
if "online_store" in data:
208-
self.online_config = data["online_store"]
209-
else:
210-
if data["provider"] == "local":
211-
self.online_config = "sqlite"
212-
elif data["provider"] == "gcp":
213-
self.online_config = "datastore"
214-
elif data["provider"] == "aws":
215-
self.online_config = "dynamodb"
216-
elif data["provider"] == "rockset":
217-
self.online_config = "rockset"
191+
self.online_config = data.get("online_store", "sqlite")
218192

219193
self._batch_engine = None
220194
if "batch_engine" in data:
@@ -325,20 +299,11 @@ def _validate_online_store_config(cls, values: Any) -> Any:
325299
values["online_store"] = None
326300
return values
327301

328-
# Make sure that the provider configuration is set. We need it to set the defaults
329-
if "provider" not in values:
330-
raise FeastProviderNotSetError()
331-
332302
# Set the default type
333303
# This is only direct reference to a provider or online store that we should have
334304
# for backwards compatibility.
335305
if "type" not in values["online_store"]:
336-
if values["provider"] == "local":
337-
values["online_store"]["type"] = "sqlite"
338-
elif values["provider"] == "gcp":
339-
values["online_store"]["type"] = "datastore"
340-
elif values["provider"] == "aws":
341-
values["online_store"]["type"] = "dynamodb"
306+
values["online_store"]["type"] = "sqlite"
342307

343308
online_store_type = values["online_store"]["type"]
344309

@@ -361,20 +326,9 @@ def _validate_offline_store_config(cls, values: Any) -> Any:
361326
if not isinstance(values["offline_store"], Dict):
362327
return values
363328

364-
# Make sure that the provider configuration is set. We need it to set the defaults
365-
if "provider" not in values:
366-
raise FeastProviderNotSetError()
367-
368329
# Set the default type
369330
if "type" not in values["offline_store"]:
370-
if values["provider"] == "local":
371-
values["offline_store"]["type"] = "file"
372-
elif values["provider"] == "gcp":
373-
values["offline_store"]["type"] = "bigquery"
374-
elif values["provider"] == "aws":
375-
values["offline_store"]["type"] = "redshift"
376-
if values["provider"] == "azure":
377-
values["offline_store"]["type"] = "mssql"
331+
values["offline_store"]["type"] = "file"
378332

379333
offline_store_type = values["offline_store"]["type"]
380334

@@ -398,15 +352,7 @@ def _validate_feature_server_config(cls, values: Any) -> Any:
398352
if not isinstance(values["feature_server"], Dict):
399353
return values
400354

401-
# Make sure that the provider configuration is set. We need it to set the defaults
402-
if "provider" not in values:
403-
raise FeastProviderNotSetError()
404-
405-
default_type = FEATURE_SERVER_TYPE_FOR_PROVIDER.get(values["provider"])
406-
defined_type = values["feature_server"].get("type", default_type)
407-
# Make sure that the type is either not set, or set correctly, since it's defined by the provider
408-
if defined_type not in (default_type, "local"):
409-
raise FeastFeatureServerTypeSetError(defined_type)
355+
defined_type = values["feature_server"].get("type", "local")
410356
values["feature_server"]["type"] = defined_type
411357

412358
# Validate the dict to ensure one of the union types match

sdk/python/tests/unit/infra/offline_stores/test_offline_store.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,7 @@ def retrieval_job(request, environment):
124124
iam_role="arn:aws:iam::585132637328:role/service-role/AmazonRedshift-CommandsAccessRole-20240403T092631",
125125
workgroup="",
126126
)
127-
config = environment.config.copy(
127+
config = environment.config.model_copy(
128128
update={"offline_config": offline_store_config}
129129
)
130130
return RedshiftRetrievalJob(
@@ -147,7 +147,7 @@ def retrieval_job(request, environment):
147147
storage_integration_name="FEAST_S3",
148148
blob_export_location="s3://feast-snowflake-offload/export",
149149
)
150-
config = environment.config.copy(
150+
config = environment.config.model_copy(
151151
update={"offline_config": offline_store_config}
152152
)
153153
environment.project = "project"

0 commit comments

Comments
 (0)