Skip to content

Commit 3f77752

Browse files
committed
chore: Remove old way of flagging features as experimental (#3005)
* remove straggler references Signed-off-by: Danny Chiao <danny@tecton.ai> * remove straggler references Signed-off-by: Danny Chiao <danny@tecton.ai> * fix Signed-off-by: Danny Chiao <danny@tecton.ai> * rebase Signed-off-by: Danny Chiao <danny@tecton.ai> * add lambda doc to feature server README Signed-off-by: Danny Chiao <danny@tecton.ai>
1 parent 606ce80 commit 3f77752

File tree

16 files changed

+38
-224
lines changed

16 files changed

+38
-224
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 data scientists 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: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@ Feast users can choose to retrieve features from a feature server, as opposed to
99
{% content-ref url="go-feature-server.md" %}
1010
[go-feature-server.md](go-feature-server.md)
1111
{% 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/feature-servers/alpha-aws-lambda-feature-server.md

Lines changed: 6 additions & 13 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](python-feature-server.md) is also available. A remote feature server on GCP Cloud Run is currently being developed.
@@ -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-
| iam:PassRole | arn:aws:iam::\<account\_id>:role/ |
49-
| apigateway:\* | <p>arn:aws:apigateway:<em>::/apis/</em>/routes/<em>/routeresponses</em></p><p><em>arn:aws:apigateway:</em>::/apis/<em>/routes/</em>/routeresponses/</p><p><em>arn:aws:apigateway:</em>::/apis/<em>/routes/</em></p><p>arn:aws:apigateway:<em>::/apis/</em>/routes</p><p>arn:aws:apigateway:<em>::/apis/</em>/integrations</p><p>arn:aws:apigateway:<em>::/apis/</em>/stages/<em>/routesettings/</em></p><p>arn:aws:apigateway:<em>::/apis/</em></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
@@ -691,113 +691,6 @@ def serve_transformations_command(ctx: click.Context, port: int):
691691
store.serve_transformations(port)
692692

693693

694-
@cli.group(name="alpha")
695-
def alpha_cmd():
696-
"""
697-
Access alpha features
698-
"""
699-
pass
700-
701-
702-
@alpha_cmd.command("list")
703-
@click.pass_context
704-
def list_alpha_features(ctx: click.Context):
705-
"""
706-
Lists all alpha features
707-
"""
708-
repo = ctx.obj["CHDIR"]
709-
cli_check_repo(repo)
710-
repo_path = str(repo)
711-
store = FeatureStore(repo_path=repo_path)
712-
713-
flags_to_show = flags.FLAG_NAMES.copy()
714-
flags_to_show.remove(flags.FLAG_ALPHA_FEATURES_NAME)
715-
print("Alpha features:")
716-
for flag in flags_to_show:
717-
enabled_string = (
718-
"enabled"
719-
if flags_helper.feature_flag_enabled(store.config, flag)
720-
else "disabled"
721-
)
722-
print(f"{flag}: {enabled_string}")
723-
724-
725-
@alpha_cmd.command("enable-all")
726-
@click.pass_context
727-
def enable_alpha_features(ctx: click.Context):
728-
"""
729-
Enables all alpha features
730-
"""
731-
repo = ctx.obj["CHDIR"]
732-
cli_check_repo(repo)
733-
repo_path = str(repo)
734-
store = FeatureStore(repo_path=repo_path)
735-
736-
if store.config.flags is None:
737-
store.config.flags = {}
738-
for flag_name in flags.FLAG_NAMES:
739-
store.config.flags[flag_name] = True
740-
store.config.write_to_path(Path(repo_path))
741-
742-
743-
@alpha_cmd.command("enable")
744-
@click.argument("name", type=click.STRING)
745-
@click.pass_context
746-
def enable_alpha_feature(ctx: click.Context, name: str):
747-
"""
748-
Enables an alpha feature
749-
"""
750-
if name not in flags.FLAG_NAMES:
751-
raise ValueError(f"Flag name, {name}, not valid.")
752-
753-
repo = ctx.obj["CHDIR"]
754-
cli_check_repo(repo)
755-
repo_path = str(repo)
756-
store = FeatureStore(repo_path=repo_path)
757-
758-
if store.config.flags is None:
759-
store.config.flags = {}
760-
store.config.flags[flags.FLAG_ALPHA_FEATURES_NAME] = True
761-
store.config.flags[name] = True
762-
store.config.write_to_path(Path(repo_path))
763-
764-
765-
@alpha_cmd.command("disable")
766-
@click.argument("name", type=click.STRING)
767-
@click.pass_context
768-
def disable_alpha_feature(ctx: click.Context, name: str):
769-
"""
770-
Disables an alpha feature
771-
"""
772-
if name not in flags.FLAG_NAMES:
773-
raise ValueError(f"Flag name, {name}, not valid.")
774-
775-
repo = ctx.obj["CHDIR"]
776-
cli_check_repo(repo)
777-
repo_path = str(repo)
778-
store = FeatureStore(repo_path=repo_path)
779-
780-
if store.config.flags is None or name not in store.config.flags:
781-
return
782-
store.config.flags[name] = False
783-
store.config.write_to_path(Path(repo_path))
784-
785-
786-
@alpha_cmd.command("disable-all")
787-
@click.pass_context
788-
def disable_alpha_features(ctx: click.Context):
789-
"""
790-
Disables all alpha features
791-
"""
792-
repo = ctx.obj["CHDIR"]
793-
cli_check_repo(repo)
794-
repo_path = str(repo)
795-
store = FeatureStore(repo_path=repo_path)
796-
797-
store.config.flags = None
798-
store.config.write_to_path(Path(repo_path))
799-
800-
801694
@cli.command("validate")
802695
@click.option(
803696
"--feature-service",

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)