interprocess/configure/client/client.go (109 lines of code) (raw):

package client import ( "context" "errors" "time" grpc "google.golang.org/grpc" "github.com/aliyun/aliyun_assist_client/agent/log" pb "github.com/aliyun/aliyun_assist_client/interprocess/configure/agrpc" "github.com/aliyun/aliyun_assist_client/interprocess/messagebus/buses" messagebus_client "github.com/aliyun/aliyun_assist_client/interprocess/messagebus/client" ) type agentClient struct { Conn *grpc.ClientConn Client pb.AssistAgentClient Cancel context.CancelFunc Ctx context.Context } const ( grpcTimeout = 60 dialTimeout = 5 ) func newClient() (*agentClient, error) { conn, err := messagebus_client.ConnectWithTimeout(log.GetLogger(), buses.GetCentralEndpoint(false), time.Duration(dialTimeout)*time.Second) if err != nil { return nil, err } client := &agentClient{} client.Conn = conn client.Client = pb.NewAssistAgentClient(client.Conn) client.Ctx, client.Cancel = context.WithTimeout(context.Background(), grpcTimeout*time.Second) return client, nil } func GetConf(runtime bool) ([]*pb.ConfItem, error) { client, err := newClient() if err != nil { log.GetLogger().Error("Create client failed: ", err) return nil, err } defer func() { client.Conn.Close() client.Cancel() }() req := &pb.GetConfReq{ Runtime: runtime, } resp, err := client.Client.GetConf(client.Ctx, req) if err != nil { log.GetLogger().WithError(err).Error("Client request GetConf failed") return nil, err } if resp.Status.StatusCode != 0 { log.GetLogger().Error("GetConf failed, ", resp.Status.ErrMessage) return nil, errors.New(resp.Status.ErrMessage) } return resp.Items, nil } func SetConf(kvList []string, runtime, crossVer bool) error { client, err := newClient() if err != nil { log.GetLogger().Error("Create client failed: ", err) return err } defer func() { client.Conn.Close() client.Cancel() }() req := &pb.SetConfReq{ Runtime: runtime, CrossVersion: crossVer, } for i := 0; i < len(kvList); i += 2 { req.Items = append(req.Items, &pb.ConfItem{ Name: kvList[i], Value: kvList[i+1], }) } resp, err := client.Client.SetConf(client.Ctx, req) if err != nil { log.GetLogger().WithError(err).Error("Client request SetConf failed") return err } if resp.Status.StatusCode != 0 { log.GetLogger().Error("SetConf failed, ", resp.Status.ErrMessage) return errors.New(resp.Status.ErrMessage) } return nil } func ReloadConf() error { client, err := newClient() if err != nil { log.GetLogger().Error("Create client failed: ", err) return err } defer func() { client.Conn.Close() client.Cancel() }() req := &pb.ReloadConfReq{} resp, err := client.Client.ReloadConf(client.Ctx, req) if err != nil { log.GetLogger().WithError(err).Error("Client request ReloadConf failed") return err } if resp.Status.StatusCode != 0 { log.GetLogger().Error("ReloadConf failed, ", resp.Status.ErrMessage) return errors.New(resp.Status.ErrMessage) } return nil }