mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +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)
 | 
						|
}
 |