/
info_server.go
74 lines (61 loc) · 2.22 KB
/
info_server.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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package info
import (
"context"
"os"
log "github.com/sirupsen/logrus"
"github.com/argoproj/argo-workflows/v3"
infopkg "github.com/argoproj/argo-workflows/v3/pkg/apiclient/info"
wfv1 "github.com/argoproj/argo-workflows/v3/pkg/apis/workflow/v1alpha1"
"github.com/argoproj/argo-workflows/v3/server/auth"
)
type infoServer struct {
managedNamespace string
links []*wfv1.Link
navColor string
}
func (i *infoServer) GetUserInfo(ctx context.Context, _ *infopkg.GetUserInfoRequest) (*infopkg.GetUserInfoResponse, error) {
claims := auth.GetClaims(ctx)
if claims != nil {
return &infopkg.GetUserInfoResponse{
Subject: claims.Subject,
Issuer: claims.Issuer,
Groups: claims.Groups,
Email: claims.Email,
EmailVerified: claims.EmailVerified,
ServiceAccountName: claims.ServiceAccountName,
ServiceAccountNamespace: claims.ServiceAccountNamespace,
}, nil
}
return &infopkg.GetUserInfoResponse{}, nil
}
func (i *infoServer) GetInfo(context.Context, *infopkg.GetInfoRequest) (*infopkg.InfoResponse, error) {
modals := map[string]bool{
"feedback": os.Getenv("FEEDBACK_MODAL") != "false",
"firstTimeUser": os.Getenv("FIRST_TIME_USER_MODAL") != "false",
"newVersion": os.Getenv("NEW_VERSION_MODAL") != "false",
}
return &infopkg.InfoResponse{
ManagedNamespace: i.managedNamespace,
Links: i.links,
Modals: modals,
NavColor: i.navColor,
}, nil
}
func (i *infoServer) GetVersion(context.Context, *infopkg.GetVersionRequest) (*wfv1.Version, error) {
version := argo.GetVersion()
return &version, nil
}
func (i *infoServer) CollectEvent(ctx context.Context, req *infopkg.CollectEventRequest) (*infopkg.CollectEventResponse, error) {
logFields := log.Fields{}
claims := auth.GetClaims(ctx)
if claims != nil {
logFields["subject"] = claims.Subject
logFields["email"] = claims.Email
}
logFields["name"] = req.Name
log.WithFields(logFields).Info("tracking UI usage️️")
return &infopkg.CollectEventResponse{}, nil
}
func NewInfoServer(managedNamespace string, links []*wfv1.Link, navColor string) infopkg.InfoServiceServer {
return &infoServer{managedNamespace, links, navColor}
}