Skip to content

Commit

Permalink
Merge pull request #1885 from slntopp/update-proto
Browse files Browse the repository at this point in the history
update nocloud-proto
  • Loading branch information
coddmeistr committed Sep 12, 2024
2 parents 02b9209 + 1d2ae2f commit 21b95c3
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 3 deletions.
39 changes: 37 additions & 2 deletions pkg/eventbus/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,18 @@ package eventbus

import (
"context"
elpb "github.com/slntopp/nocloud-proto/events_logging"
"github.com/slntopp/nocloud/pkg/nocloud"
"go.uber.org/zap"
"time"

"github.com/arangodb/go-driver"
pb "github.com/slntopp/nocloud-proto/events"
"github.com/slntopp/nocloud/pkg/nocloud/schema"
"google.golang.org/protobuf/types/known/structpb"
)

type EventHandler func(context.Context, *pb.Event, driver.Database) (*pb.Event, error)
type EventHandler func(context.Context, *zap.Logger, *pb.Event, driver.Database) (*pb.Event, error)

var handlers = map[string]EventHandler{
"instance_suspended": GetInstAccountHandler,
Expand All @@ -22,6 +26,7 @@ var handlers = map[string]EventHandler{
"instance_renew": GetInstAccountHandler,
"pending_notification": GetInstAccountHandler,
"instance_credentials": GetInstAccountHandler,
"logging": EventLoggingHandler,
}

var getInstanceAccount = `
Expand Down Expand Up @@ -88,7 +93,7 @@ type EventInfo struct {
Price float64 `json:"price,omitempty"`
}

func GetInstAccountHandler(ctx context.Context, event *pb.Event, db driver.Database) (*pb.Event, error) {
func GetInstAccountHandler(ctx context.Context, _ *zap.Logger, event *pb.Event, db driver.Database) (*pb.Event, error) {
if event.GetData() == nil {
event.Data = make(map[string]*structpb.Value)
}
Expand Down Expand Up @@ -144,3 +149,33 @@ func GetInstAccountHandler(ctx context.Context, event *pb.Event, db driver.Datab

return event, nil
}

func EventLoggingHandler(_ context.Context, log *zap.Logger, event *pb.Event, _ driver.Database) (*pb.Event, error) {
data := event.GetData()
scope := data["scope"].GetStringValue()
action := data["action"].GetStringValue()
diff := data["diff"].GetStringValue()
if scope == "" || action == "" {
log.Warn("Invalid event for logging. Scope or action missing. skip logging", zap.Any("event", event))
return event, nil
}

logEvent := &elpb.Event{
Scope: scope,
Action: action,
Rc: 0,
Requestor: schema.ROOT_ACCOUNT_KEY,
Ts: time.Now().Unix(),
Snapshot: &elpb.Snapshot{
Diff: diff,
},
Priority: event.Priority,
Entity: event.Type,
Uuid: event.Uuid,
}

nocloud.Log(log, logEvent)
log.Debug("Logged event", zap.Any("event", logEvent))

return event, nil
}
2 changes: 1 addition & 1 deletion pkg/eventbus/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ init:
continue
}

updEvent, err := handler(ctx, &event, s.db)
updEvent, err := handler(ctx, log, &event, s.db)
if err != nil {
log.Error("Fail to call handler", zap.Any("handler type", event.Key), zap.String("err", err.Error()))
if err = msg.Ack(false); err != nil {
Expand Down

0 comments on commit 21b95c3

Please sign in to comment.