-
Notifications
You must be signed in to change notification settings - Fork 0
/
alert.go
99 lines (79 loc) · 2.19 KB
/
alert.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package alert
import (
"context"
"fmt"
"os"
"sort"
"strings"
"github.com/AlecAivazis/survey/v2"
"mmesh.dev/m-api-go/grpc/resources/events"
"mmesh.dev/m-api-go/grpc/resources/resource"
tenant_pb "mmesh.dev/m-api-go/grpc/resources/tenant"
"mmesh.dev/m-cli/pkg/client/tenant"
"mmesh.dev/m-cli/pkg/grpc"
"mmesh.dev/m-cli/pkg/input"
"mmesh.dev/m-cli/pkg/output"
"mmesh.dev/m-cli/pkg/status"
"mmesh.dev/m-cli/pkg/vars"
"mmesh.dev/m-lib/pkg/utils/msg"
)
func getAlert() *events.Alert {
al := alerts()
if len(al) == 0 {
msg.Info("No objects found")
os.Exit(1)
}
var alertOptID string
alertsOpts := make([]string, 0)
alerts := make(map[string]*events.Alert)
for _, a := range al {
tm := output.DatetimeMilli(a.LastUpdated)
nodeName := output.Fit(a.NodeName, 32)
// component := output.Fit(a.Component, 32)
component := strings.ToLower(a.Component)
l1 := fmt.Sprintf("%s %s [%s]", tm, nodeName, a.Status.String())
// l2 := fmt.Sprintf("Component: %s", component)
l2 := fmt.Sprintf("Component: %s | Group: %s | Class: %s", component, a.Group, a.Class)
// l3 := fmt.Sprintf("Group: %s | Class: %s", a.Group, a.Class)
// alertOptID = fmt.Sprintf("%s\n %s\n %s\n", l1, l2, l3)
alertOptID = fmt.Sprintf("%s\n %s\n", l1, l2)
alertsOpts = append(alertsOpts, alertOptID)
alerts[alertOptID] = a
}
sort.Strings(alertsOpts)
alertOptID = input.GetSelect("Alert:", "", alertsOpts, survey.Required)
vars.AlertID = alerts[alertOptID].AlertID
return alerts[alertOptID]
}
func alerts() map[string]*events.Alert {
t := tenant.GetTenant()
s := output.Spinner()
// defer s.Stop()
nxc, grpcConn := grpc.GetMonitoringAPIClient()
defer grpcConn.Close()
lr := &events.ListAlertsRequest{
Meta: &resource.ListRequest{},
Tenant: &tenant_pb.TenantReq{
AccountID: t.AccountID,
TenantID: t.TenantID,
},
}
alerts := make(map[string]*events.Alert)
for {
al, err := nxc.ListAlerts(context.TODO(), lr)
if err != nil {
s.Stop()
status.Error(err, "Unable to list alerts")
}
for _, a := range al.Alerts {
alerts[a.AlertID] = a
}
if len(al.Meta.NextPageToken) > 0 {
lr.Meta.PageToken = al.Meta.NextPageToken
} else {
break
}
}
s.Stop()
return alerts
}