集群中自动设置CNAME记录如果已经存在,则跳过

This commit is contained in:
GoEdgeLab
2022-10-28 15:27:52 +08:00
parent 0ffb372f05
commit d46420797c
3 changed files with 26 additions and 23 deletions

View File

@@ -13,17 +13,9 @@ import (
func (this *NodeCluster) DecodeDNSConfig() (*dnsconfigs.ClusterDNSConfig, error) {
if len(this.Dns) == 0 {
// 一定要返回一个默认的值防止产生nil
return &dnsconfigs.ClusterDNSConfig{
NodesAutoSync: false,
ServersAutoSync: false,
CNAMEAsDomain: true,
IncludingLnNodes: true,
}, nil
}
var dnsConfig = &dnsconfigs.ClusterDNSConfig{
CNAMEAsDomain: true,
IncludingLnNodes: true,
return dnsconfigs.DefaultClusterDNSConfig(), nil
}
var dnsConfig = dnsconfigs.DefaultClusterDNSConfig()
err := json.Unmarshal(this.Dns, &dnsConfig)
if err != nil {
return nil, err

View File

@@ -12,6 +12,7 @@ import (
"github.com/TeaOSLab/EdgeAPI/internal/goman"
"github.com/TeaOSLab/EdgeAPI/internal/utils"
"github.com/TeaOSLab/EdgeAPI/internal/utils/numberutils"
"github.com/TeaOSLab/EdgeCommon/pkg/dnsconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/nodeconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/dbs"
@@ -436,22 +437,22 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
var clusterId = int64(cluster.Id)
var clusterDnsName = cluster.DnsName
var clusterDomain = clusterDnsName + "." + domainName
var dnsConfig, _ = cluster.DecodeDNSConfig()
dnsConfig, err := cluster.DecodeDNSConfig()
if err != nil {
return nil, nil, nil, 0, 0, false, false, err
}
if dnsConfig == nil {
dnsConfig = dnsconfigs.DefaultClusterDNSConfig()
}
var tx = this.NullTx()
// 自动设置的cname记录
var cnameRecords = []string{}
var ttl int32
if len(cluster.Dns) > 0 {
dnsConfig, _ := cluster.DecodeDNSConfig()
if dnsConfig != nil {
cnameRecords = dnsConfig.CNAMERecords
var cnameRecords = dnsConfig.CNAMERecords
if dnsConfig.TTL > 0 {
ttl = dnsConfig.TTL
}
}
}
// 节点域名
nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes)
@@ -556,7 +557,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
// 新增的域名
var serverDNSNames = []string{}
for _, server := range servers {
dnsName := server.DnsName
var dnsName = server.DnsName
if len(dnsName) == 0 {
return nil, nil, nil, 0, 0, false, false, errors.New("server '" + numberutils.FormatInt64(int64(server.Id)) + "' 'dnsName' should not empty")
}
@@ -582,6 +583,11 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster,
// 自动设置的CNAME
for _, cnameRecord := range cnameRecords {
// 如果记录已存在,则跳过
if lists.ContainsString(serverDNSNames, cnameRecord) {
continue
}
serverDNSNames = append(serverDNSNames, cnameRecord)
record, ok := serverRecordsMap[cnameRecord]
if !ok {

View File

@@ -441,9 +441,9 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
}
// 新增的域名
serverDNSNames := []string{}
var serverDNSNames = []string{}
for _, server := range servers {
dnsName := server.DnsName
var dnsName = server.DnsName
if len(dnsName) == 0 {
continue
}
@@ -471,6 +471,11 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error {
cnameRecords = dnsConfig.CNAMERecords
}
for _, cnameRecord := range cnameRecords {
// 如果记录已存在,则跳过
if lists.ContainsString(serverDNSNames, cnameRecord) {
continue
}
serverDNSNames = append(serverDNSNames, cnameRecord)
_, ok := serverRecordsMap[cnameRecord]
if !ok {