Skip to content

Commit efad106

Browse files
authored
fix: agent version different issue (#4633)
Signed-off-by: YuTang Song <2313186065@qq.com>
1 parent 402f34b commit efad106

File tree

4 files changed

+28
-1
lines changed

4 files changed

+28
-1
lines changed

pkg/cli/zadig-agent/internal/network/connect.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ type HeartbeatParameters struct {
142142
DiskSpace uint64 `json:"disk_space"`
143143
FreeDiskSpace uint64 `json:"free_disk_space"`
144144
Hostname string `json:"hostname"`
145+
AgentVersion string `json:"agent_version"`
145146
}
146147

147148
type HeartbeatServerRequest struct {

pkg/cli/zadig-agent/pkg/monitor/heart_beat.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ func Heartbeat(agentCtl *agent.AgentController, errChan chan error, successChan
116116
if err != nil {
117117
panic(fmt.Errorf("failed to convert platform parameters to register agent parameters: %v", err))
118118
}
119+
params.AgentVersion = agentconfig.GetAgentVersion()
119120

120121
config := &network.AgentConfig{
121122
Token: agentconfig.GetAgentToken(),

pkg/microservice/aslan/core/vm/service/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ type HeartbeatParameters struct {
114114
DiskSpace uint64 `json:"disk_space"`
115115
FreeDiskSpace uint64 `json:"free_disk_space"`
116116
VMname string `json:"vm_name"`
117+
AgentVersion string `json:"agent_version"`
117118
}
118119

119120
type HeartbeatRequest struct {

pkg/microservice/aslan/core/vm/service/vm.go

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -408,6 +408,7 @@ func RegisterAgent(args *RegisterAgentRequest, logger *zap.SugaredLogger) (*Regi
408408
return nil, fmt.Errorf("zadig server vm %s agent is nil in db", args.Token)
409409
}
410410
vm.Agent.AgentVersion = args.Parameters.AgentVersion
411+
updateAgentVersionStatus(vm.Agent, logger)
411412
}
412413
err = commonrepo.NewPrivateKeyColl().Update(vm.ID.Hex(), vm)
413414
if err != nil {
@@ -483,6 +484,10 @@ func Heartbeat(args *HeartbeatRequest, logger *zap.SugaredLogger) (*HeartbeatRes
483484
return nil, fmt.Errorf("zadig server vm %s agent is nil in db", args.Token)
484485
}
485486
vm.Agent.LastHeartbeatTime = time.Now().Unix()
487+
if args.Parameters != nil && args.Parameters.AgentVersion != "" {
488+
vm.Agent.AgentVersion = args.Parameters.AgentVersion
489+
}
490+
updateAgentVersionStatus(vm.Agent, logger)
486491

487492
err = commonrepo.NewPrivateKeyColl().Update(vm.ID.Hex(), vm)
488493
if err != nil {
@@ -492,8 +497,9 @@ func Heartbeat(args *HeartbeatRequest, logger *zap.SugaredLogger) (*HeartbeatRes
492497

493498
if vm.Agent.NeedUpdate {
494499
resp.NeedUpdateAgentVersion = true
495-
resp.AgentVersion = vm.Agent.AgentVersion
500+
resp.AgentVersion = vm.Agent.ZadigVersion
496501
}
502+
resp.ZadigVersion = vm.Agent.ZadigVersion
497503

498504
resp.ScheduleWorkflow = vm.ScheduleWorkflow
499505
if vm.ScheduleWorkflow && vm.Agent.Workspace != "" {
@@ -506,6 +512,24 @@ func Heartbeat(args *HeartbeatRequest, logger *zap.SugaredLogger) (*HeartbeatRes
506512
return resp, nil
507513
}
508514

515+
func updateAgentVersionStatus(agent *commonmodels.VMAgent, logger *zap.SugaredLogger) {
516+
latestVersion, err := config.GetZadigAgentVersion()
517+
if err != nil {
518+
logger.Warnf("failed to get zadig-agent version while handling heartbeat: %v", err)
519+
return
520+
}
521+
agent.ZadigVersion = latestVersion
522+
523+
normalizedLatestVersion := strings.TrimPrefix(latestVersion, "v")
524+
if normalizedLatestVersion == "" {
525+
agent.NeedUpdate = false
526+
return
527+
}
528+
529+
normalizedCurrentVersion := strings.TrimPrefix(agent.AgentVersion, "v")
530+
agent.NeedUpdate = normalizedCurrentVersion != normalizedLatestVersion
531+
}
532+
509533
type VMJobGetterMap struct {
510534
M sync.Mutex
511535
GetterMap map[string]struct{}

0 commit comments

Comments
 (0)