Files
waf-platform/EdgeAPI/internal/db/models/node_model_ext_plus.go
2026-02-04 20:27:13 +08:00

55 lines
1.4 KiB
Go

// Copyright 2023 Liuxiangchao iwind.liu@gmail.com. All rights reserved. Official site: https://goedge.cn .
//go:build plus
package models
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
)
// DecodeBackupIPs 解析备用IP
func (this *Node) DecodeBackupIPs() []string {
var result = []string{}
if IsNotNull(this.BackupIPs) {
err := json.Unmarshal(this.BackupIPs, &result)
if err != nil {
remotelogs.Error("Node", "DecodeBackupIPs(): "+err.Error())
}
}
return result
}
// DecodeActionStatus 解析动作状态
func (this *Node) DecodeActionStatus() *nodeconfigs.NodeActionStatus {
var status = &nodeconfigs.NodeActionStatus{}
if len(this.ActionStatus) > 0 {
err := json.Unmarshal(this.ActionStatus, status)
if err != nil {
remotelogs.Error("Node", "DecodeActionStatus(): "+err.Error())
}
}
return status
}
// HasScheduleSettings 检查是否设置了调度
func (this *Node) HasScheduleSettings() bool {
if len(this.OfflineDay) > 0 {
return true
}
if this.IsBackupForCluster || this.IsBackupForGroup {
return true
}
if len(this.DecodeBackupIPs()) > 0 {
return true
}
countActions, err := SharedNodeActionDAO.CountNodeActions(nil, nodeconfigs.NodeRoleNode, int64(this.Id))
if err != nil {
remotelogs.Error("Node", "HasScheduleSettings(): "+err.Error())
return false
}
return countActions > 0
}