Files
EdgeAPI/internal/db/models/node_ip_address_model_ext.go
GoEdgeLab 5a17ae9d79 v1.4.1
2024-07-27 14:15:25 +08:00

70 lines
1.8 KiB
Go

package models
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAPI/internal/remotelogs"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/iwind/TeaGo/lists"
)
// DecodeConnectivity 解析联通数值
func (this *NodeIPAddress) DecodeConnectivity() *nodeconfigs.Connectivity {
var connectivity = &nodeconfigs.Connectivity{}
if len(this.Connectivity) > 0 {
err := json.Unmarshal(this.Connectivity, connectivity)
if err != nil {
remotelogs.Error("NodeIPAddress", "DecodeConnectivity(): decode failed: "+err.Error())
}
}
return connectivity
}
// DNSIP 获取当前DNS可以使用的IP
func (this *NodeIPAddress) DNSIP() string {
var backupIP = this.DecodeBackupIP()
if len(backupIP) > 0 {
return backupIP
}
return this.Ip
}
// DecodeBackupIP 获取备用IP
func (this *NodeIPAddress) DecodeBackupIP() string {
if this.BackupThresholdId > 0 && len(this.BackupIP) > 0 {
// 阈值是否存在
b, err := SharedNodeIPAddressThresholdDAO.ExistsEnabledThreshold(nil, int64(this.BackupThresholdId))
if err != nil {
remotelogs.Error("NodeIPAddress", "DecodeBackupIP(): check enabled threshold failed: "+err.Error())
} else {
if b {
return this.BackupIP
}
}
}
return ""
}
// DecodeClusterIds 解析集群ID
func (this *NodeIPAddress) DecodeClusterIds() []int64 {
if IsNull(this.ClusterIds) {
return nil
}
var clusterIds = []int64{}
err := json.Unmarshal(this.ClusterIds, &clusterIds)
if err != nil {
remotelogs.Error("NodeIPAddress", "DecodeClusterIds(): "+err.Error())
}
return clusterIds
}
// IsValidInCluster 检查在某个集群中是否有效
func (this *NodeIPAddress) IsValidInCluster(clusterId int64) bool {
var clusterIds = this.DecodeClusterIds()
if len(clusterIds) == 0 {
return true
}
return lists.ContainsInt64(clusterIds, clusterId)
}