...
1 package utils
2
3 import (
4 "context"
5 "fmt"
6 "sync"
7 "time"
8
9 "golang.yacloud.eu/apis/faultindicator"
10 "google.golang.org/grpc"
11 )
12
13 var (
14 fault_lock sync.Mutex
15
16 Client_connector ClientConnector
17 faultcc faultindicator.FaultIndicatorClient
18 )
19
20 type ClientConnector interface {
21 Connect(string) *grpc.ClientConn
22 }
23
24
25 func GetFaultIndicatorClient() faultindicator.FaultIndicatorClient {
26 fault_lock.Lock()
27 defer fault_lock.Unlock()
28 if faultcc != nil {
29 return faultcc
30 }
31 cc := Client_connector
32 if cc == nil {
33 fmt.Printf("No fault indicator client!\n")
34 time.Sleep(time.Duration(3) * time.Second)
35 return nil
36 }
37 con := cc.Connect("faultindicator.FaultIndicator")
38 faultcc = faultindicator.NewFaultIndicatorClient(con)
39 return faultcc
40 }
41
42
43 func LogFault(ctx context.Context, name, desc string) {
44
45 _, err := GetFaultIndicatorClient().LogFault(ctx, &faultindicator.LogFaultRequest{
46 Name: name,
47 Description: desc,
48 })
49 if err != nil {
50 fmt.Printf("[go-easyops] --- failed to log fault: %s\n", ErrorString(err))
51 }
52 }
53
View as plain text