mirror of
https://github.com/TeaOSLab/EdgeAPI.git
synced 2025-11-03 23:20:26 +08:00
69 lines
1.8 KiB
Go
69 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)
|
|
}
|