diff --git a/internal/db/models/dns/dnsutils/dns_utils.go b/internal/db/models/dns/dnsutils/dns_utils.go index 26171147..87d86808 100644 --- a/internal/db/models/dns/dnsutils/dns_utils.go +++ b/internal/db/models/dns/dnsutils/dns_utils.go @@ -105,7 +105,7 @@ func CheckClusterDNS(tx *dbs.Tx, cluster *models.NodeCluster, checkNodeIssues bo // 检查节点 if checkNodeIssues { - nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, clusterDNSConfig != nil && clusterDNSConfig.IncludingLnNodes) + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, clusterDNSConfig != nil && clusterDNSConfig.IncludingLnNodes, true) if err != nil { return nil, err } diff --git a/internal/db/models/node_dao.go b/internal/db/models/node_dao.go index 60f0ab73..ba654a33 100644 --- a/internal/db/models/node_dao.go +++ b/internal/db/models/node_dao.go @@ -840,7 +840,24 @@ func (this *NodeDAO) UpdateNodeStatus(tx *dbs.Tx, nodeId int64, nodeStatus *node Set("isActive", true). Set("status", nodeStatusJSON). Update() - return err + if err != nil { + return err + } + + // 自动设置安装状态 + isInstalled, err := this.Query(tx). + Pk(nodeId). + Result("isInstalled"). + FindBoolCol() + if err != nil { + return err + } + + if !isInstalled { + return this.UpdateNodeIsInstalled(tx, nodeId, true) + } + + return nil } // FindNodeStatus 获取节点状态 @@ -885,7 +902,10 @@ func (this *NodeDAO) UpdateNodeIsInstalled(tx *dbs.Tx, nodeId int64, isInstalled Set("isInstalled", isInstalled). Set("installStatus", "null"). // 重置安装状态 Update() - return err + if err != nil { + return err + } + return this.NotifyDNSUpdate(tx, nodeId) } // FindNodeInstallStatus 查询节点的安装状态 @@ -1495,7 +1515,7 @@ func (this *NodeDAO) UpdateNodeRegionId(tx *dbs.Tx, nodeId int64, regionId int64 } // FindAllEnabledNodesDNSWithClusterId 获取一个集群的节点DNS信息 -func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(tx *dbs.Tx, clusterId int64, includeSecondaryNodes bool, includingLnNodes bool) (result []*Node, err error) { +func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(tx *dbs.Tx, clusterId int64, includeSecondaryNodes bool, includingLnNodes bool, isInstalled bool) (result []*Node, err error) { if clusterId <= 0 { return nil, nil } @@ -1514,6 +1534,7 @@ func (this *NodeDAO) FindAllEnabledNodesDNSWithClusterId(tx *dbs.Tx, clusterId i State(NodeStateEnabled). Attr("isOn", true). Attr("isUp", true). + Attr("isInstalled", isInstalled). Result("id", "name", "dnsRoutes", "isOn"). DescPk(). Slice(&result). diff --git a/internal/rpc/services/service_dns_domain.go b/internal/rpc/services/service_dns_domain.go index d6cb7f85..79627b45 100644 --- a/internal/rpc/services/service_dns_domain.go +++ b/internal/rpc/services/service_dns_domain.go @@ -454,7 +454,7 @@ func (this *DNSDomainService) findClusterDNSChanges(cluster *models.NodeCluster, } // 节点域名 - nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes) + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes, true) if err != nil { return nil, nil, nil, 0, 0, false, false, err } diff --git a/internal/rpc/services/service_node.go b/internal/rpc/services/service_node.go index f1e53288..9894d606 100644 --- a/internal/rpc/services/service_node.go +++ b/internal/rpc/services/service_node.go @@ -812,6 +812,7 @@ func (this *NodeService) UpdateNodeStatus(ctx context.Context, req *pb.UpdateNod if err != nil { return nil, err } + return this.Success() } @@ -1321,7 +1322,7 @@ func (this *NodeService) FindAllEnabledNodesDNSWithNodeClusterId(ctx context.Con return nil, err } - nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, req.NodeClusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes) + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, req.NodeClusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes, req.IsInstalled) if err != nil { return nil, err } diff --git a/internal/rpc/services/service_node_cluster.go b/internal/rpc/services/service_node_cluster.go index 88f66e5a..f9f20665 100644 --- a/internal/rpc/services/service_node_cluster.go +++ b/internal/rpc/services/service_node_cluster.go @@ -642,12 +642,28 @@ func (this *NodeClusterService) FindAllEnabledNodeClustersWithDNSDomainId(ctx co result := []*pb.NodeCluster{} for _, cluster := range clusters { + // 默认线路 + domainId := int64(cluster.DnsDomainId) + domain, err := dns.SharedDNSDomainDAO.FindEnabledDNSDomain(tx, domainId, nil) + if err != nil { + return nil, err + } + if domain == nil { + continue + } + + defaultRoute, err := dnsutils.FindDefaultDomainRoute(tx, domain) + if err != nil { + return nil, err + } + result = append(result, &pb.NodeCluster{ - Id: int64(cluster.Id), - Name: cluster.Name, - DnsName: cluster.DnsName, - DnsDomainId: int64(cluster.DnsDomainId), - IsOn: cluster.IsOn, + Id: int64(cluster.Id), + Name: cluster.Name, + DnsName: cluster.DnsName, + DnsDomainId: int64(cluster.DnsDomainId), + DnsDefaultRoute: defaultRoute, + IsOn: cluster.IsOn, }) } return &pb.FindAllEnabledNodeClustersWithDNSDomainIdResponse{NodeClusters: result}, nil diff --git a/internal/tasks/dns_task_executor.go b/internal/tasks/dns_task_executor.go index 2bd51ded..1ec69dc0 100644 --- a/internal/tasks/dns_task_executor.go +++ b/internal/tasks/dns_task_executor.go @@ -363,7 +363,7 @@ func (this *DNSTaskExecutor) doCluster(taskId int64, clusterId int64) error { // 当前的节点记录 var newRecordKeys = []string{} - nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes) + nodes, err := models.SharedNodeDAO.FindAllEnabledNodesDNSWithClusterId(tx, clusterId, true, dnsConfig != nil && dnsConfig.IncludingLnNodes, true) if err != nil { return err }