Skip to content

Commit 491d5f6

Browse files
authored
Merge pull request #4 from gojektech/feast-apply
Change register to apply
2 parents 1b1bd2b + f878d3f commit 491d5f6

29 files changed

+740
-474
lines changed
Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,17 @@ import (
2121
"io/ioutil"
2222
"path/filepath"
2323

24+
"github.com/gojektech/feast/cli/feast/pkg/parse"
2425
"github.com/gojektech/feast/go-feast-proto/feast/core"
2526

26-
"feast/cli/feast/pkg/parse"
27-
2827
"github.com/spf13/cobra"
2928
)
3029

31-
// registerCmd represents the register command
32-
var registerCmd = &cobra.Command{
33-
Use: "register [resource] [filepaths...]",
34-
Short: "Register a resource given one or many yaml files.",
35-
Long: `Register a resource from one or multiple yamls.
30+
// applyCmd represents the apply command
31+
var applyCmd = &cobra.Command{
32+
Use: "apply [resource] [filepaths...]",
33+
Short: "Apply a resource given one or many yaml files.",
34+
Long: `Apply a resource from one or multiple yamls.
3635
3736
Valid resources include:
3837
- entity
@@ -41,17 +40,17 @@ Valid resources include:
4140
- storage
4241
4342
Examples:
44-
- feast register entity entity.yml
45-
- feast register storage storage1.yml storage2.yml
46-
- feast register feature *-feature.yml`,
43+
- feast apply entity entity.yml
44+
- feast apply storage storage1.yml storage2.yml
45+
- feast apply feature *-feature.yml`,
4746
RunE: func(cmd *cobra.Command, args []string) error {
4847
if len(args) == 0 {
4948
return cmd.Help()
5049
}
5150

5251
if len(args) < 2 {
5352
fmt.Println(args)
54-
return errors.New("invalid number of arguments for register command")
53+
return errors.New("invalid number of arguments for apply command")
5554
}
5655

5756
initConn()
@@ -62,75 +61,75 @@ Examples:
6261

6362
for _, fp := range paths {
6463
if isYaml(fp) {
65-
fmt.Printf("Registering %s at %s\n", resource, fp)
66-
regID, err := register(ctx, coreCli, resource, fp)
64+
fmt.Printf("Applying %s at %s\n", resource, fp)
65+
regID, err := apply(ctx, coreCli, resource, fp)
6766
if err != nil {
68-
return fmt.Errorf("failed to register %s at path %s: %v", resource, fp, err)
67+
return fmt.Errorf("failed to apply %s at path %s: %v", resource, fp, err)
6968
}
70-
fmt.Printf("Successfully registered %s %s\n", resource, regID)
69+
fmt.Printf("Successfully applied %s %s\n", resource, regID)
7170
}
7271
}
7372
return nil
7473
},
7574
}
7675

7776
func init() {
78-
rootCmd.AddCommand(registerCmd)
77+
rootCmd.AddCommand(applyCmd)
7978
}
8079

81-
func register(ctx context.Context, coreCli core.CoreServiceClient, resource string, fileLocation string) (string, error) {
80+
func apply(ctx context.Context, coreCli core.CoreServiceClient, resource string, fileLocation string) (string, error) {
8281
yml, err := ioutil.ReadFile(fileLocation)
8382
if err != nil {
8483
return "", fmt.Errorf("error reading file at %s: %v", fileLocation, err)
8584
}
8685

8786
switch resource {
8887
case "feature":
89-
return registerFeature(ctx, coreCli, yml)
88+
return applyFeature(ctx, coreCli, yml)
9089
case "featureGroup":
91-
return registerFeatureGroup(ctx, coreCli, yml)
90+
return applyFeatureGroup(ctx, coreCli, yml)
9291
case "entity":
93-
return registerEntity(ctx, coreCli, yml)
92+
return applyEntity(ctx, coreCli, yml)
9493
case "storage":
95-
return registerStorage(ctx, coreCli, yml)
94+
return applyStorage(ctx, coreCli, yml)
9695
default:
9796
return "", fmt.Errorf("invalid resource %s: please choose one of [feature, featureGroup, entity, storage]", resource)
9897
}
9998
}
10099

101-
func registerFeature(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
100+
func applyFeature(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
102101
fs, err := parse.YamlToFeatureSpec(yml)
103102
if err != nil {
104103
return "", err
105104
}
106-
_, err = coreCli.RegisterFeature(ctx, fs)
105+
_, err = coreCli.ApplyFeature(ctx, fs)
107106
return fs.GetId(), err
108107
}
109108

110-
func registerFeatureGroup(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
109+
func applyFeatureGroup(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
111110
fgs, err := parse.YamlToFeatureGroupSpec(yml)
112111
if err != nil {
113112
return "", err
114113
}
115-
_, err = coreCli.RegisterFeatureGroup(ctx, fgs)
114+
_, err = coreCli.ApplyFeatureGroup(ctx, fgs)
116115
return fgs.GetId(), err
117116
}
118117

119-
func registerEntity(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
118+
func applyEntity(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
120119
es, err := parse.YamlToEntitySpec(yml)
121120
if err != nil {
122121
return "", err
123122
}
124-
_, err = coreCli.RegisterEntity(ctx, es)
123+
_, err = coreCli.ApplyEntity(ctx, es)
125124
return es.GetName(), err
126125
}
127126

128-
func registerStorage(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
127+
func applyStorage(ctx context.Context, coreCli core.CoreServiceClient, yml []byte) (string, error) {
129128
ss, err := parse.YamlToStorageSpec(yml)
130129
if err != nil {
131130
return "", err
132131
}
133-
_, err = coreCli.RegisterStorage(ctx, ss)
132+
_, err = coreCli.ApplyStorage(ctx, ss)
134133
return ss.GetId(), err
135134
}
136135

cli/feast/cmd/jobs.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,8 @@ import (
2020
"fmt"
2121
"io/ioutil"
2222

23-
"feast/cli/feast/pkg/parse"
24-
"feast/cli/feast/pkg/printer"
25-
23+
"github.com/gojektech/feast/cli/feast/pkg/parse"
24+
"github.com/gojektech/feast/cli/feast/pkg/printer"
2625
"github.com/gojektech/feast/go-feast-proto/feast/core"
2726

2827
"github.com/spf13/cobra"

cli/feast/cmd/list.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@ package cmd
1717
import (
1818
"context"
1919
"errors"
20-
"feast/cli/feast/pkg/util"
2120
"fmt"
2221
"os"
2322
"strings"
2423
"text/tabwriter"
2524

25+
"github.com/gojektech/feast/cli/feast/pkg/util"
2626
"github.com/gojektech/feast/go-feast-proto/feast/core"
2727

2828
"github.com/golang/protobuf/ptypes/empty"

cli/feast/cmd/root.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
package cmd
1616

1717
import (
18-
"fmt"
1918
"os"
2019

2120
"github.com/spf13/cobra"
@@ -42,7 +41,6 @@ func init() {
4241

4342
func handleErr(err error) {
4443
if err != nil {
45-
fmt.Println(err)
4644
os.Exit(1)
4745
}
4846
}

cli/feast/cmd/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"github.com/spf13/cobra"
2121
)
2222

23-
var version = "0.2.0"
23+
var version = "0.3.0"
2424

2525
var versionCmd = &cobra.Command{
2626
Use: "version",

cli/feast/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
package main
1616

17-
import "feast/cli/feast/cmd"
17+
import "github.com/gojektech/feast/cli/feast/cmd"
1818

1919
func main() {
2020
cmd.Execute()

cli/feast/pkg/printer/job.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
package printer
1616

1717
import (
18-
"feast/cli/feast/pkg/util"
1918
"fmt"
2019
"strings"
2120

21+
"github.com/gojektech/feast/cli/feast/pkg/util"
2222
"github.com/gojektech/feast/go-feast-proto/feast/core"
2323
)
2424

core/src/main/java/feast/core/grpc/CoreServiceImpl.java

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -233,20 +233,20 @@ public void listStorage(Empty request, StreamObserver<ListStorageResponse> respo
233233
* error will be returned.
234234
*/
235235
@Override
236-
public void registerFeature(
237-
FeatureSpec request, StreamObserver<RegisterFeatureResponse> responseObserver) {
236+
public void applyFeature(
237+
FeatureSpec request, StreamObserver<ApplyFeatureResponse> responseObserver) {
238238
try {
239239
validator.validateFeatureSpec(request);
240-
FeatureInfo feature = specService.registerFeature(request);
241-
RegisterFeatureResponse response =
242-
RegisterFeatureResponse.newBuilder().setFeatureId(feature.getId()).build();
240+
FeatureInfo feature = specService.applyFeature(request);
241+
ApplyFeatureResponse response =
242+
ApplyFeatureResponse.newBuilder().setFeatureId(feature.getId()).build();
243243
responseObserver.onNext(response);
244244
responseObserver.onCompleted();
245245
} catch (RegistrationException e) {
246-
log.error("Error in registerFeature: {}", e);
246+
log.error("Error in applyFeature: {}", e);
247247
responseObserver.onError(getRuntimeException(e));
248248
} catch (IllegalArgumentException e) {
249-
log.error("Error in registerFeature: {}", e);
249+
log.error("Error in applyFeature: {}", e);
250250
responseObserver.onError(getBadRequestException(e));
251251
}
252252
}
@@ -257,21 +257,21 @@ public void registerFeature(
257257
* error will be returned.
258258
*/
259259
@Override
260-
public void registerFeatureGroup(
260+
public void applyFeatureGroup(
261261
FeatureGroupSpecProto.FeatureGroupSpec request,
262-
StreamObserver<RegisterFeatureGroupResponse> responseObserver) {
262+
StreamObserver<ApplyFeatureGroupResponse> responseObserver) {
263263
try {
264264
validator.validateFeatureGroupSpec(request);
265-
FeatureGroupInfo featureGroup = specService.registerFeatureGroup(request);
266-
RegisterFeatureGroupResponse response =
267-
RegisterFeatureGroupResponse.newBuilder().setFeatureGroupId(featureGroup.getId()).build();
265+
FeatureGroupInfo featureGroup = specService.applyFeatureGroup(request);
266+
ApplyFeatureGroupResponse response =
267+
ApplyFeatureGroupResponse.newBuilder().setFeatureGroupId(featureGroup.getId()).build();
268268
responseObserver.onNext(response);
269269
responseObserver.onCompleted();
270270
} catch (RegistrationException e) {
271-
log.error("Error in registerFeatureGroup: {}", e);
271+
log.error("Error in applyFeatureGroup: {}", e);
272272
responseObserver.onError(getRuntimeException(e));
273273
} catch (IllegalArgumentException e) {
274-
log.error("Error in registerFeatureGroup: {}", e);
274+
log.error("Error in applyFeatureGroup: {}", e);
275275
responseObserver.onError(getBadRequestException(e));
276276
}
277277
}
@@ -282,20 +282,20 @@ public void registerFeatureGroup(
282282
* be returned.
283283
*/
284284
@Override
285-
public void registerEntity(
286-
EntitySpec request, StreamObserver<RegisterEntityResponse> responseObserver) {
285+
public void applyEntity(
286+
EntitySpec request, StreamObserver<ApplyEntityResponse> responseObserver) {
287287
try {
288288
validator.validateEntitySpec(request);
289-
EntityInfo entity = specService.registerEntity(request);
290-
RegisterEntityResponse response =
291-
RegisterEntityResponse.newBuilder().setEntityName(entity.getName()).build();
289+
EntityInfo entity = specService.applyEntity(request);
290+
ApplyEntityResponse response =
291+
ApplyEntityResponse.newBuilder().setEntityName(entity.getName()).build();
292292
responseObserver.onNext(response);
293293
responseObserver.onCompleted();
294294
} catch (RegistrationException e) {
295-
log.error("Error in registerEntity: {}", e);
295+
log.error("Error in applyEntity: {}", e);
296296
responseObserver.onError(getRuntimeException(e));
297297
} catch (IllegalArgumentException e) {
298-
log.error("Error in registerEntity: {}", e);
298+
log.error("Error in applyEntity: {}", e);
299299
responseObserver.onError(getBadRequestException(e));
300300
}
301301
}
@@ -306,13 +306,13 @@ public void registerEntity(
306306
* be returned.
307307
*/
308308
@Override
309-
public void registerStorage(
310-
StorageSpec request, StreamObserver<RegisterStorageResponse> responseObserver) {
309+
public void applyStorage(
310+
StorageSpec request, StreamObserver<ApplyStorageResponse> responseObserver) {
311311
try {
312312
validator.validateStorageSpec(request);
313313
StorageInfo storage = specService.registerStorage(request);
314-
RegisterStorageResponse response =
315-
RegisterStorageResponse.newBuilder().setStorageId(storage.getId()).build();
314+
ApplyStorageResponse response =
315+
ApplyStorageResponse.newBuilder().setStorageId(storage.getId()).build();
316316
responseObserver.onNext(response);
317317
responseObserver.onCompleted();
318318
} catch (RegistrationException e) {

core/src/main/java/feast/core/job/ScheduledJobMonitor.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@
1919

2020
import com.google.common.base.Strings;
2121
import feast.core.dao.JobInfoRepository;
22+
import feast.core.log.Action;
2223
import feast.core.log.AuditLogger;
24+
import feast.core.log.Resource;
2325
import feast.core.model.JobInfo;
2426
import feast.core.model.JobStatus;
2527
import feast.core.model.Metrics;
@@ -74,9 +76,9 @@ public void pollStatusAndMetrics() {
7476
JobStatus jobStatus = jobMonitor.getJobStatus(jobId);
7577
if (job.getStatus() != jobStatus) {
7678
AuditLogger.log(
77-
"Jobs",
79+
Resource.JOB,
7880
jobId,
79-
"Status Update",
81+
Action.STATUS_CHANGE,
8082
"Job status updated from %s to %s",
8183
job.getStatus(),
8284
jobStatus);
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package feast.core.log;
2+
3+
/**
4+
* Actions taken for audit logging purposes
5+
*/
6+
public enum Action {
7+
// Job-related actions
8+
SUBMIT,
9+
STATUS_CHANGE,
10+
ABORT,
11+
12+
// Spec-related
13+
UPDATE,
14+
REGISTER,
15+
16+
// Storage-related
17+
ADD,
18+
SCHEMA_UPDATE,
19+
}

0 commit comments

Comments
 (0)