1.4.5.2
This commit is contained in:
70
EdgeReporter/internal/nodes/status_manager.go
Normal file
70
EdgeReporter/internal/nodes/status_manager.go
Normal file
@@ -0,0 +1,70 @@
|
||||
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
||||
|
||||
package nodes
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/reporterconfigs"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
teaconst "github.com/TeaOSLab/EdgeReporter/internal/const"
|
||||
"github.com/TeaOSLab/EdgeReporter/internal/remotelogs"
|
||||
"github.com/TeaOSLab/EdgeReporter/internal/rpc"
|
||||
"github.com/TeaOSLab/EdgeReporter/internal/utils"
|
||||
"os/user"
|
||||
"runtime"
|
||||
"time"
|
||||
)
|
||||
|
||||
var sharedNodeStatus = &reporterconfigs.Status{}
|
||||
|
||||
type StatusManager struct {
|
||||
}
|
||||
|
||||
func NewStatusManager() *StatusManager {
|
||||
return &StatusManager{}
|
||||
}
|
||||
|
||||
func (this *StatusManager) Start() {
|
||||
var ticker = time.NewTicker(30 * time.Second)
|
||||
|
||||
// 先执行一次
|
||||
err := this.Loop()
|
||||
if err != nil {
|
||||
remotelogs.Error("STATUS_MANAGER", err.Error())
|
||||
}
|
||||
|
||||
for range ticker.C {
|
||||
err := this.Loop()
|
||||
if err != nil {
|
||||
remotelogs.Error("STATUS_MANAGER", err.Error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (this *StatusManager) Loop() error {
|
||||
sharedNodeStatus.BuildVersion = teaconst.Version
|
||||
sharedNodeStatus.BuildVersionCode = utils.VersionToLong(teaconst.Version)
|
||||
sharedNodeStatus.OS = runtime.GOOS
|
||||
sharedNodeStatus.OSName = runtime.GOOS // TODO 需要实现
|
||||
|
||||
u, err := user.Current()
|
||||
if err == nil && u != nil {
|
||||
sharedNodeStatus.Username = u.Name
|
||||
}
|
||||
|
||||
rpcClient, err := rpc.SharedRPC()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
statusJSON, err := json.Marshal(sharedNodeStatus)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
_, err = rpcClient.ReportNodeRPC().UpdateReportNodeStatus(rpcClient.Context(), &pb.UpdateReportNodeStatusRequest{StatusJSON: statusJSON})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user