Skip to content

Commit 0343ecf

Browse files
committed
chore: Remove old way of flagging features as experimental (#3005)
* remove straggler references Signed-off-by: Danny Chiao <[email protected]> * remove straggler references Signed-off-by: Danny Chiao <[email protected]> * fix Signed-off-by: Danny Chiao <[email protected]> * rebase Signed-off-by: Danny Chiao <[email protected]> * add lambda doc to feature server README Signed-off-by: Danny Chiao <[email protected]>
1 parent c100a52 commit 0343ecf

File tree

16 files changed

+46
-226
lines changed

16 files changed

+46
-226
lines changed

docs/reference/alpha-on-demand-feature-view.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33
**Warning**: This is an _experimental_ feature. It's intended for early testing and feedback, and could change without warnings in future releases.
44

5-
{% hint style="info" %}
6-
To enable this feature, run **`feast alpha enable on_demand_transforms`**
7-
{% endhint %}
8-
95
## Overview
106

117
On demand feature views allows users to use existing features and request time data \(features only available at request time\) to transform and create new features. Users define python transformation logic which is executed in both historical retrieval and online retrieval paths.

docs/reference/feature-servers/README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,14 @@
22

33
Feast users can choose to retrieve features from a feature server, as opposed to through the Python SDK.
44

5-
{% page-ref page="python-feature-server.md" %}
5+
{% content-ref url="python-feature-server.md" %}
6+
[python-feature-server.md](python-feature-server.md)
7+
{% endcontent-ref %}
8+
9+
{% content-ref url="go-feature-server.md" %}
10+
[go-feature-server.md](go-feature-server.md)
11+
{% endcontent-ref %}
12+
13+
{% content-ref url="alpha-aws-lambda-feature-server.md" %}
14+
[alpha-aws-lambda-feature-server.md](alpha-aws-lambda-feature-server.md)
15+
{% endcontent-ref %}

docs/reference/alpha-aws-lambda-feature-server.md renamed to docs/reference/feature-servers/alpha-aws-lambda-feature-server.md

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,6 @@
22

33
**Warning**: This is an _experimental_ feature. It's intended for early testing and feedback, and could change without warnings in future releases.
44

5-
{% hint style="info" %}
6-
To enable this feature, run **`feast alpha enable aws_lambda_feature_server`**
7-
{% endhint %}
8-
95
## Overview
106

117
The AWS Lambda feature server is an HTTP endpoint that serves features with JSON I/O, deployed as a Docker image through AWS Lambda and AWS API Gateway. This enables users to get features from Feast using any programming language that can make HTTP requests. A [local feature server](feature-servers/python-feature-server.md) is also available. A remote feature server on GCP Cloud Run is currently being developed.
@@ -14,7 +10,7 @@ The AWS Lambda feature server is an HTTP endpoint that serves features with JSON
1410

1511
The AWS Lambda feature server is only available to projects using the `AwsProvider` with registries on S3. It is disabled by default. To enable it, `feature_store.yaml` must be modified; specifically, the `enable` flag must be on and an `execution_role_name` must be specified. For example, after running `feast init -t aws`, changing the registry to be on S3, and enabling the feature server, the contents of `feature_store.yaml` should look similar to the following:
1612

17-
```text
13+
```
1814
project: dev
1915
registry: s3://feast/registries/dev
2016
provider: aws
@@ -27,9 +23,6 @@ offline_store:
2723
database: feast
2824
s3_staging_location: s3://feast/redshift/tests/staging_location
2925
iam_role: arn:aws:iam::{aws_account}:role/redshift_s3_access_role
30-
flags:
31-
alpha_features: true
32-
aws_lambda_feature_server: true
3326
feature_server:
3427
enabled: True
3528
execution_role_name: arn:aws:iam::{aws_account}:role/lambda_execution_role
@@ -41,12 +34,12 @@ If enabled, the feature server will be deployed during `feast apply`. After it i
4134

4235
Feast requires the following permissions in order to deploy and teardown AWS Lambda feature server:
4336

44-
| Permissions | Resources |
45-
| ----------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------- |
46-
| <p>lambda:CreateFunction</p><p>lambda:GetFunction</p><p>lambda:DeleteFunction</p><p>lambda:AddPermission</p><p>lambda:UpdateFunctionConfiguration</p> | arn:aws:lambda:\<region>:\<account_id>:function:feast-\* |
47-
| <p>ecr:CreateRepository</p><p>ecr:DescribeRepositories</p><p>ecr:DeleteRepository</p><p>ecr:PutImage</p><p>ecr:DescribeImages</p><p>ecr:BatchDeleteImage</p><p>ecr:CompleteLayerUpload</p><p>ecr:UploadLayerPart</p><p>ecr:InitiateLayerUpload</p><p>ecr:BatchCheckLayerAvailability</p><p>ecr:GetDownloadUrlForLayer</p><p>ecr:GetRepositoryPolicy</p><p>ecr:SetRepositoryPolicy</p><p>ecr:GetAuthorizationToken</p> | \* |
48-
| <p>iam:PassRole</p> | arn:aws:iam::\<account_id>:role/<lambda-execution-role-name> |
49-
| <p>apigateway:*</p> | <p>arn:aws:apigateway:*::/apis/*/routes/*/routeresponses</p><p>arn:aws:apigateway:*::/apis/*/routes/*/routeresponses/*</p><p>arn:aws:apigateway:*::/apis/*/routes/*</p><p>arn:aws:apigateway:*::/apis/*/routes</p><p>arn:aws:apigateway:*::/apis/*/integrations</p><p>arn:aws:apigateway:*::/apis/*/stages/*/routesettings/*</p><p>arn:aws:apigateway:*::/apis/*</p><p>arn:aws:apigateway:*::/apis</p> |
37+
| Permissions | Resources |
38+
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
39+
| <p>lambda:CreateFunction</p><p>lambda:GetFunction</p><p>lambda:DeleteFunction</p><p>lambda:AddPermission</p><p>lambda:UpdateFunctionConfiguration</p> | arn:aws:lambda:\<region>:\<account_id>:function:feast-\* |
40+
| <p>ecr:CreateRepository</p><p>ecr:DescribeRepositories</p><p>ecr:DeleteRepository</p><p>ecr:PutImage</p><p>ecr:DescribeImages</p><p>ecr:BatchDeleteImage</p><p>ecr:CompleteLayerUpload</p><p>ecr:UploadLayerPart</p><p>ecr:InitiateLayerUpload</p><p>ecr:BatchCheckLayerAvailability</p><p>ecr:GetDownloadUrlForLayer</p><p>ecr:GetRepositoryPolicy</p><p>ecr:SetRepositoryPolicy</p><p>ecr:GetAuthorizationToken</p> | \* |
41+
| <p>iam:PassRole</p> | arn:aws:iam::\<account_id>:role/<lambda-execution-role-name> |
42+
| <p>apigateway:*</p> | <p>arn:aws:apigateway:*::/apis/*/routes/*/routeresponses</p><p>arn:aws:apigateway:*::/apis/*/routes/*/routeresponses/*</p><p>arn:aws:apigateway:*::/apis/*/routes/*</p><p>arn:aws:apigateway:*::/apis/*/routes</p><p>arn:aws:apigateway:*::/apis/*/integrations</p><p>arn:aws:apigateway:*::/apis/*/stages/*/routesettings/*</p><p>arn:aws:apigateway:*::/apis/*</p><p>arn:aws:apigateway:*::/apis</p> |
5043

5144
The following inline policy can be used to grant Feast the necessary permissions:
5245

examples/java-demo/README.md

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,6 @@ For this tutorial, we setup Feast with Redis, using the Feast CLI to register an
3939
connection_string: localhost:6379,password=[YOUR PASSWORD]
4040
offline_store:
4141
type: file
42-
flags:
43-
alpha_features: true
44-
on_demand_transforms: true
4542
```
4643
4. Run `feast apply` to apply your local features to the remote registry
4744
5. Materialize features to the online store:

examples/java-demo/feature_repo/feature_store.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,3 @@ online_store:
66
connection_string: localhost:6379,password=[YOUR PASSWORD]
77
offline_store:
88
type: file
9-
flags:
10-
alpha_features: true
11-
on_demand_transforms: true

infra/charts/feast/charts/transformation-service/config/feature_store.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,4 @@ registry:
22
path: {{ .Values.global.registry.path }}
33
cache_ttl_seconds: {{ .Values.global.registry.cache_ttl_seconds }}
44
provider: local
5-
project: {{ .Values.global.project }}
6-
flags:
7-
on_demand_transforms: true
8-
alpha_features: true
5+
project: {{ .Values.global.project }}

java/serving/src/test/resources/docker-compose/feast10/feature_store.yaml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,3 @@ online_store:
55
type: redis
66
connection_string: "redis:6379,password=testpw"
77
offline_store: {}
8-
flags:
9-
alpha_features: true
10-
on_demand_transforms: true

sdk/python/docs/source/feast.rst

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -169,14 +169,6 @@ feast.field module
169169
:undoc-members:
170170
:show-inheritance:
171171

172-
feast.flags module
173-
------------------
174-
175-
.. automodule:: feast.flags
176-
:members:
177-
:undoc-members:
178-
:show-inheritance:
179-
180172
feast.flags\_helper module
181173
--------------------------
182174

sdk/python/feast/cli.py

Lines changed: 1 addition & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
from dateutil import parser
2626
from pygments import formatters, highlight, lexers
2727

28-
from feast import flags, flags_helper, utils
28+
from feast import utils
2929
from feast.constants import DEFAULT_FEATURE_TRANSFORMATION_SERVER_PORT
3030
from feast.errors import FeastObjectNotFoundException, FeastProviderLoginError
3131
from feast.feature_store import FeatureStore
@@ -662,113 +662,6 @@ def serve_transformations_command(ctx: click.Context, port: int):
662662
store.serve_transformations(port)
663663

664664

665-
@cli.group(name="alpha")
666-
def alpha_cmd():
667-
"""
668-
Access alpha features
669-
"""
670-
pass
671-
672-
673-
@alpha_cmd.command("list")
674-
@click.pass_context
675-
def list_alpha_features(ctx: click.Context):
676-
"""
677-
Lists all alpha features
678-
"""
679-
repo = ctx.obj["CHDIR"]
680-
cli_check_repo(repo)
681-
repo_path = str(repo)
682-
store = FeatureStore(repo_path=repo_path)
683-
684-
flags_to_show = flags.FLAG_NAMES.copy()
685-
flags_to_show.remove(flags.FLAG_ALPHA_FEATURES_NAME)
686-
print("Alpha features:")
687-
for flag in flags_to_show:
688-
enabled_string = (
689-
"enabled"
690-
if flags_helper.feature_flag_enabled(store.config, flag)
691-
else "disabled"
692-
)
693-
print(f"{flag}: {enabled_string}")
694-
695-
696-
@alpha_cmd.command("enable-all")
697-
@click.pass_context
698-
def enable_alpha_features(ctx: click.Context):
699-
"""
700-
Enables all alpha features
701-
"""
702-
repo = ctx.obj["CHDIR"]
703-
cli_check_repo(repo)
704-
repo_path = str(repo)
705-
store = FeatureStore(repo_path=repo_path)
706-
707-
if store.config.flags is None:
708-
store.config.flags = {}
709-
for flag_name in flags.FLAG_NAMES:
710-
store.config.flags[flag_name] = True
711-
store.config.write_to_path(Path(repo_path))
712-
713-
714-
@alpha_cmd.command("enable")
715-
@click.argument("name", type=click.STRING)
716-
@click.pass_context
717-
def enable_alpha_feature(ctx: click.Context, name: str):
718-
"""
719-
Enables an alpha feature
720-
"""
721-
if name not in flags.FLAG_NAMES:
722-
raise ValueError(f"Flag name, {name}, not valid.")
723-
724-
repo = ctx.obj["CHDIR"]
725-
cli_check_repo(repo)
726-
repo_path = str(repo)
727-
store = FeatureStore(repo_path=repo_path)
728-
729-
if store.config.flags is None:
730-
store.config.flags = {}
731-
store.config.flags[flags.FLAG_ALPHA_FEATURES_NAME] = True
732-
store.config.flags[name] = True
733-
store.config.write_to_path(Path(repo_path))
734-
735-
736-
@alpha_cmd.command("disable")
737-
@click.argument("name", type=click.STRING)
738-
@click.pass_context
739-
def disable_alpha_feature(ctx: click.Context, name: str):
740-
"""
741-
Disables an alpha feature
742-
"""
743-
if name not in flags.FLAG_NAMES:
744-
raise ValueError(f"Flag name, {name}, not valid.")
745-
746-
repo = ctx.obj["CHDIR"]
747-
cli_check_repo(repo)
748-
repo_path = str(repo)
749-
store = FeatureStore(repo_path=repo_path)
750-
751-
if store.config.flags is None or name not in store.config.flags:
752-
return
753-
store.config.flags[name] = False
754-
store.config.write_to_path(Path(repo_path))
755-
756-
757-
@alpha_cmd.command("disable-all")
758-
@click.pass_context
759-
def disable_alpha_features(ctx: click.Context):
760-
"""
761-
Disables all alpha features
762-
"""
763-
repo = ctx.obj["CHDIR"]
764-
cli_check_repo(repo)
765-
repo_path = str(repo)
766-
store = FeatureStore(repo_path=repo_path)
767-
768-
store.config.flags = None
769-
store.config.write_to_path(Path(repo_path))
770-
771-
772665
@cli.command("validate")
773666
@click.option(
774667
"--feature-service", "-f", help="Specify a feature service name",

sdk/python/feast/errors.py

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -319,14 +319,6 @@ def __init__(self, feature_view_name: str):
319319
)
320320

321321

322-
class ExperimentalFeatureNotEnabled(Exception):
323-
def __init__(self, feature_flag_name: str):
324-
super().__init__(
325-
f"You are attempting to use an experimental feature that is not enabled. Please run "
326-
f"`feast alpha enable {feature_flag_name}` "
327-
)
328-
329-
330322
class RepoConfigPathDoesNotExist(Exception):
331323
def __init__(self):
332324
super().__init__("The repo_path attribute does not exist for the repo_config.")

0 commit comments

Comments
 (0)