-
Notifications
You must be signed in to change notification settings - Fork 151
/
events.go
51 lines (41 loc) · 1.3 KB
/
events.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package server
import (
"context"
"fmt"
pb "github.com/weaveworks/weave-gitops/pkg/api/core"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
corev1 "k8s.io/api/core/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
)
func (cs *coreServer) ListFluxEvents(ctx context.Context, msg *pb.ListFluxEventsRequest) (*pb.ListFluxEventsResponse, error) {
k8s, err := cs.k8s.Client(ctx)
if err != nil {
return nil, doClientError(err)
}
if msg.InvolvedObject == nil {
return nil, status.Errorf(codes.InvalidArgument, "bad request: no object was specified")
}
l := &corev1.EventList{}
fields := client.MatchingFields{
"involvedObject.kind": msg.InvolvedObject.Kind,
"involvedObject.name": msg.InvolvedObject.Name,
"involvedObject.namespace": msg.InvolvedObject.Namespace,
}
if err := list(ctx, k8s, temporarilyEmptyAppName, msg.Namespace, l, fields); err != nil {
return nil, fmt.Errorf("could not get events: %w", err)
}
events := []*pb.Event{}
for _, e := range l.Items {
events = append(events, &pb.Event{
Type: e.Type,
Component: e.Source.Component,
Name: e.ObjectMeta.Name,
Reason: e.Reason,
Message: e.Message,
Timestamp: e.LastTimestamp.String(),
Host: e.Source.Host,
})
}
return &pb.ListFluxEventsResponse{Events: events}, nil
}