修复域名解析--集群中单节点多IP时无法修改IP的Bug

This commit is contained in:
刘祥超
2022-10-24 16:34:07 +08:00
parent 967c9080fb
commit 3a88f23181

View File

@@ -1344,7 +1344,7 @@ func (this *NodeService) FindAllEnabledNodesDNSWithNodeClusterId(ctx context.Con
}
for _, ipAddress := range ipAddresses {
ip := ipAddress.DNSIP()
var ip = ipAddress.DNSIP()
if len(ip) == 0 {
continue
}
@@ -1352,11 +1352,12 @@ func (this *NodeService) FindAllEnabledNodesDNSWithNodeClusterId(ctx context.Con
continue
}
result = append(result, &pb.NodeDNSInfo{
Id: int64(node.Id),
Name: node.Name,
IpAddr: ip,
Routes: pbRoutes,
NodeClusterId: req.NodeClusterId,
Id: int64(node.Id),
Name: node.Name,
IpAddr: ip,
NodeIPAddressId: int64(ipAddress.Id),
Routes: pbRoutes,
NodeClusterId: req.NodeClusterId,
})
}
}
@@ -1382,9 +1383,24 @@ func (this *NodeService) FindEnabledNodeDNS(ctx context.Context, req *pb.FindEna
return &pb.FindEnabledNodeDNSResponse{Node: nil}, nil
}
ipAddr, _, err := models.SharedNodeIPAddressDAO.FindFirstNodeAccessIPAddress(tx, int64(node.Id), true, nodeconfigs.NodeRoleNode)
if err != nil {
return nil, err
// 查询节点IP地址
var ipAddr string
var ipAddrId int64 = 0
if req.NodeIPAddrId > 0 {
address, err := models.SharedNodeIPAddressDAO.FindEnabledAddress(tx, req.NodeIPAddrId)
if err != nil {
return nil, err
}
if address != nil {
ipAddr = address.Ip
ipAddrId = int64(address.Id)
}
}
if ipAddrId == 0 {
ipAddr, ipAddrId, err = models.SharedNodeIPAddressDAO.FindFirstNodeAccessIPAddress(tx, int64(node.Id), true, nodeconfigs.NodeRoleNode)
if err != nil {
return nil, err
}
}
var clusterId = int64(node.ClusterId)
@@ -1400,13 +1416,13 @@ func (this *NodeService) FindEnabledNodeDNS(ctx context.Context, req *pb.FindEna
return &pb.FindEnabledNodeDNSResponse{Node: nil}, nil
}
dnsDomainId := int64(clusterDNS.DnsDomainId)
var dnsDomainId = int64(clusterDNS.DnsDomainId)
dnsDomainName, err := dns.SharedDNSDomainDAO.FindDNSDomainName(tx, dnsDomainId)
if err != nil {
return nil, err
}
pbRoutes := []*pb.DNSRoute{}
var pbRoutes = []*pb.DNSRoute{}
if dnsDomainId > 0 {
routeCodes, err := node.DNSRouteCodesForDomainId(dnsDomainId)
if err != nil {
@@ -1430,6 +1446,7 @@ func (this *NodeService) FindEnabledNodeDNS(ctx context.Context, req *pb.FindEna
Id: int64(node.Id),
Name: node.Name,
IpAddr: ipAddr,
NodeIPAddressId: ipAddrId,
Routes: pbRoutes,
NodeClusterId: clusterId,
NodeClusterDNSName: clusterDNS.DnsName,
@@ -1458,7 +1475,7 @@ func (this *NodeService) UpdateNodeDNS(ctx context.Context, req *pb.UpdateNodeDN
return nil, errors.New("node not found")
}
routeCodeMap := node.DNSRouteCodes()
var routeCodeMap = node.DNSRouteCodes()
if req.DnsDomainId > 0 {
if len(req.Routes) > 0 {
var m = map[int64][]string{} // domainId => codes
@@ -1503,20 +1520,27 @@ func (this *NodeService) UpdateNodeDNS(ctx context.Context, req *pb.UpdateNodeDN
// 修改IP
if len(req.IpAddr) > 0 {
ipAddrId, err := models.SharedNodeIPAddressDAO.FindFirstNodeAccessIPAddressId(tx, req.NodeId, true, nodeconfigs.NodeRoleNode)
if err != nil {
return nil, err
}
if ipAddrId > 0 {
err = models.SharedNodeIPAddressDAO.UpdateAddressIP(tx, ipAddrId, req.IpAddr)
if req.NodeIPAddressId > 0 { // 指定了IP地址ID
err = models.SharedNodeIPAddressDAO.UpdateAddressIP(tx, req.NodeIPAddressId, req.IpAddr)
if err != nil {
return nil, err
}
} else {
_, err = models.SharedNodeIPAddressDAO.CreateAddress(tx, adminId, req.NodeId, nodeconfigs.NodeRoleNode, "DNS IP", req.IpAddr, true, true, 0)
} else { // 没有指定IP地址ID
ipAddrId, err := models.SharedNodeIPAddressDAO.FindFirstNodeAccessIPAddressId(tx, req.NodeId, true, nodeconfigs.NodeRoleNode)
if err != nil {
return nil, err
}
if ipAddrId > 0 {
err = models.SharedNodeIPAddressDAO.UpdateAddressIP(tx, ipAddrId, req.IpAddr)
if err != nil {
return nil, err
}
} else {
_, err = models.SharedNodeIPAddressDAO.CreateAddress(tx, adminId, req.NodeId, nodeconfigs.NodeRoleNode, "DNS IP", req.IpAddr, true, true, 0)
if err != nil {
return nil, err
}
}
}
}