Skip to content

Commit

Permalink
draft implementation for registry service
Browse files Browse the repository at this point in the history
  • Loading branch information
tokoko committed Jun 24, 2023
1 parent c474ccd commit a1dc714
Show file tree
Hide file tree
Showing 7 changed files with 1,139 additions and 1 deletion.
334 changes: 334 additions & 0 deletions protos/feast/registry/RegistryService.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,334 @@
syntax = "proto3";

package feast.registry;

import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";
import "feast/core/Registry.proto";
import "feast/core/Entity.proto";
import "feast/core/DataSource.proto";
import "feast/core/FeatureView.proto";
import "feast/core/RequestFeatureView.proto";
import "feast/core/StreamFeatureView.proto";
import "feast/core/OnDemandFeatureView.proto";
import "feast/core/FeatureService.proto";
import "feast/core/SavedDataset.proto";
import "feast/core/ValidationProfile.proto";
import "feast/core/InfraObject.proto";

// TODO Are Separate RPCs for each object necessary?
// TODO What about Separate RPCs but shared message types?

service RegistryService {
// Entity RPCs
rpc ApplyEntity (ApplyEntityRequest) returns (google.protobuf.Empty) {}
rpc GetEntity (GetEntityRequest) returns (feast.core.Entity) {}
rpc ListEntities (ListEntitiesRequest) returns (ListEntitiesResponse) {}
rpc DeleteEntity (DeleteEntityRequest) returns (google.protobuf.Empty) {}

// DataSource RPCs
rpc ApplyDataSource (ApplyDataSourceRequest) returns (google.protobuf.Empty) {}
rpc GetDataSource (GetDataSourceRequest) returns (feast.core.DataSource) {}
rpc ListDataSources (ListDataSourcesRequest) returns (ListDataSourcesResponse) {}
rpc DeleteDataSource (DeleteDataSourceRequest) returns (google.protobuf.Empty) {}

// FeatureView RPCs
rpc ApplyFeatureView (ApplyFeatureViewRequest) returns (google.protobuf.Empty) {}
rpc GetFeatureView (GetFeatureViewRequest) returns (feast.core.FeatureView) {}
rpc ListFeatureViews (ListFeatureViewsRequest) returns (ListFeatureViewsResponse) {}
rpc DeleteFeatureView (DeleteFeatureViewRequest) returns (google.protobuf.Empty) {}

// RequestFeatureView RPCs
rpc GetRequestFeatureView (GetRequestFeatureViewRequest) returns (feast.core.RequestFeatureView) {}
rpc ListRequestFeatureViews (ListRequestFeatureViewsRequest) returns (ListRequestFeatureViewsResponse) {}

// StreamFeatureView RPCs
rpc GetStreamFeatureView (GetStreamFeatureViewRequest) returns (feast.core.StreamFeatureView) {}
rpc ListStreamFeatureViews (ListStreamFeatureViewsRequest) returns (ListStreamFeatureViewsResponse) {}

// OnDemandFeatureView RPCs
rpc GetOnDemandFeatureView (GetOnDemandFeatureViewRequest) returns (feast.core.OnDemandFeatureView) {}
rpc ListOnDemandFeatureViews (ListOnDemandFeatureViewsRequest) returns (ListOnDemandFeatureViewsResponse) {}

// FeatureService RPCs
rpc ApplyFeatureService (ApplyFeatureServiceRequest) returns (google.protobuf.Empty) {}
rpc GetFeatureService (GetFeatureServiceRequest) returns (feast.core.FeatureService) {}
rpc ListFeatureServices (ListFeatureServicesRequest) returns (ListFeatureServicesResponse) {}
rpc DeleteFeatureService (DeleteFeatureServiceRequest) returns (google.protobuf.Empty) {}

// SavedDataset RPCs
rpc ApplySavedDataset (ApplySavedDatasetRequest) returns (google.protobuf.Empty) {}
rpc GetSavedDataset (GetSavedDatasetRequest) returns (feast.core.SavedDataset) {}
rpc ListSavedDatasets (ListSavedDatasetsRequest) returns (ListSavedDatasetsResponse) {}
rpc DeleteSavedDataset (DeleteSavedDatasetRequest) returns (google.protobuf.Empty) {}

// ValidationReference RPCs
rpc ApplyValidationReference (ApplyValidationReferenceRequest) returns (google.protobuf.Empty) {}
rpc GetValidationReference (GetValidationReferenceRequest) returns (feast.core.ValidationReference) {}
rpc ListValidationReferences (ListValidationReferencesRequest) returns (ListValidationReferencesResponse) {}
rpc DeleteValidationReference (DeleteValidationReferenceRequest) returns (google.protobuf.Empty) {}

rpc ApplyMaterialization (ApplyMaterializationRequest) returns (google.protobuf.Empty) {}
rpc ListProjectMetadata (ListProjectMetadataRequest) returns (ListProjectMetadataResponse) {}
rpc UpdateInfra (UpdateInfraRequest) returns (google.protobuf.Empty) {}
rpc GetInfra (GetInfraRequest) returns (feast.core.Infra) {}
rpc Commit (google.protobuf.Empty) returns (google.protobuf.Empty) {}
rpc Refresh (RefreshRequest) returns (google.protobuf.Empty) {}
rpc Proto (google.protobuf.Empty) returns (feast.core.Registry) {}

}

message RefreshRequest {
string project = 1;
}

message UpdateInfraRequest {
feast.core.Infra infra = 1;
string project = 2;
bool commit = 3;
}

message GetInfraRequest {
string project = 1;
bool allow_cache = 2;
}

message ListProjectMetadataRequest {
string project = 1;
bool allow_cache = 2;
}

message ListProjectMetadataResponse {
repeated feast.core.ProjectMetadata project_metadata = 1;
}

message ApplyMaterializationRequest {
feast.core.FeatureView feature_view = 1;
string project = 2;
google.protobuf.Timestamp start_date = 3;
google.protobuf.Timestamp end_date = 4;
bool commit = 5;
}

message ApplyEntityRequest {
feast.core.Entity entity = 1;
string project = 2;
bool commit = 3;
}

message GetEntityRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListEntitiesRequest {
string project = 1;
bool allow_cache = 2;
}

message ListEntitiesResponse {
repeated feast.core.Entity entities = 1;
}

message DeleteEntityRequest {
string name = 1;
string project = 2;
bool commit = 3;
}

// DataSources

message ApplyDataSourceRequest {
feast.core.DataSource data_source = 1;
string project = 2;
bool commit = 3;
}

message GetDataSourceRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListDataSourcesRequest {
string project = 1;
bool allow_cache = 2;
}

message ListDataSourcesResponse {
repeated feast.core.DataSource data_sources = 1;
}

message DeleteDataSourceRequest {
string name = 1;
string project = 2;
bool commit = 3;
}

// FeatureViews

message ApplyFeatureViewRequest {
feast.core.FeatureView feature_view = 1;
string project = 2;
bool commit = 3;
}

message GetFeatureViewRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListFeatureViewsRequest {
string project = 1;
bool allow_cache = 2;
}

message ListFeatureViewsResponse {
repeated feast.core.FeatureView feature_views = 1;
}

message DeleteFeatureViewRequest {
string name = 1;
string project = 2;
bool commit = 3;
}

// RequestFeatureView

message GetRequestFeatureViewRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListRequestFeatureViewsRequest {
string project = 1;
bool allow_cache = 2;
}

message ListRequestFeatureViewsResponse {
repeated feast.core.RequestFeatureView request_feature_views = 1;
}

// StreamFeatureView

message GetStreamFeatureViewRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListStreamFeatureViewsRequest {
string project = 1;
bool allow_cache = 2;
}

message ListStreamFeatureViewsResponse {
repeated feast.core.StreamFeatureView stream_feature_views = 1;
}

// OnDemandFeatureView

message GetOnDemandFeatureViewRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListOnDemandFeatureViewsRequest {
string project = 1;
bool allow_cache = 2;
}

message ListOnDemandFeatureViewsResponse {
repeated feast.core.OnDemandFeatureView on_demand_feature_views = 1;
}

// FeatureServices

message ApplyFeatureServiceRequest {
feast.core.FeatureService feature_service = 1;
string project = 2;
bool commit = 3;
}

message GetFeatureServiceRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListFeatureServicesRequest {
string project = 1;
bool allow_cache = 2;
}

message ListFeatureServicesResponse {
repeated feast.core.FeatureService feature_services = 1;
}

message DeleteFeatureServiceRequest {
string name = 1;
string project = 2;
bool commit = 3;
}

// SavedDataset

message ApplySavedDatasetRequest {
feast.core.SavedDataset saved_dataset = 1;
string project = 2;
bool commit = 3;
}

message GetSavedDatasetRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListSavedDatasetsRequest {
string project = 1;
bool allow_cache = 2;
}

message ListSavedDatasetsResponse {
repeated feast.core.SavedDataset saved_datasets = 1;
}

message DeleteSavedDatasetRequest {
string name = 1;
string project = 2;
bool commit = 3;
}

// ValidationReference

message ApplyValidationReferenceRequest {
feast.core.ValidationReference validation_reference = 1;
string project = 2;
bool commit = 3;
}

message GetValidationReferenceRequest {
string name = 1;
string project = 2;
bool allow_cache = 3;
}

message ListValidationReferencesRequest {
string project = 1;
bool allow_cache = 2;
}

message ListValidationReferencesResponse {
repeated feast.core.ValidationReference validation_references = 1;
}

message DeleteValidationReferenceRequest {
string name = 1;
string project = 2;
bool commit = 3;
}
4 changes: 4 additions & 0 deletions sdk/python/feast/feature_store.py
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,10 @@ def __init__(
self._registry = SnowflakeRegistry(
registry_config, self.config.project, None
)
elif registry_config and registry_config.registry_type == "remote":
from feast.infra.registry.remote import RemoteRegistry

self._registry = RemoteRegistry(registry_config, self.config.project, None)
else:
r = Registry(self.config.project, registry_config, repo_path=self.repo_path)
r._initialize_registry(self.config.project)
Expand Down
4 changes: 4 additions & 0 deletions sdk/python/feast/infra/registry/registry.py
Original file line number Diff line number Diff line change
Expand Up @@ -178,6 +178,10 @@ def __new__(
from feast.infra.registry.snowflake import SnowflakeRegistry

return SnowflakeRegistry(registry_config, project, repo_path)
elif registry_config and registry_config.registry_type == "remote":
from feast.infra.registry.remote import RemoteRegistry

return RemoteRegistry(registry_config, project, repo_path)
else:
return super(Registry, cls).__new__(cls)

Expand Down
Loading

0 comments on commit a1dc714

Please sign in to comment.