Skip to content

Enhance the python feature server with new list endpoints. #4329

Description

@tchughesiv

Is your feature request related to a problem? Please describe.
With the python feature server, there should be a way to list various objects by type and filter them by tags.

Describe the solution you'd like
Feature server endpoints should be added for listing each of the following object types -

  • DataSource
  • Entity
  • FeatureService
  • FeatureView
  • OnDemandFeatureView
  • StreamFeatureView

The user should have the option of filtering by tags and/or bypassing cache where supported.

Describe alternatives you've considered
I considered adding tag filtering to the existing /get-online-features endpoint, but this would be insufficient.

Additional context
The feast UI & CLI already allow for filtering by tags.

Here's an example of what an addition to feature_server.py might look like -

from feast.protos.feast.registry.RegistryServer_pb2 import ListFeatureViewsRequest

    @app.post("/list-feature-views")
    def list_feature_views(body=Depends(get_body)):
        try:
            request = ListFeatureViewsRequest()
            if body:
                request = ListFeatureViewsRequest(**json.loads(body))
            return store.list_batch_feature_views(
                tags=request.tags, allow_cache=request.allow_cache
            )

        except Exception as e:
            # Print the original exception on the server side
            logger.exception(traceback.format_exc())
            # Raise HTTPException to return the error message to the client
            raise HTTPException(status_code=500, detail=str(e))

with the above endpoint, one could list all feature-views -

curl -X POST "http://localhost:6566/list-feature-views"

or filter the list by tag(s) -

curl -X POST \                                              
  "http://localhost:6566/list-feature-views" \
  -d '{"tags": {"team": "driver_performance"}}'

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions