Initial commit (code only without large binaries)
This commit is contained in:
135
EdgeAPI/internal/rpc/services/service_dns_task.go
Normal file
135
EdgeAPI/internal/rpc/services/service_dns_task.go
Normal file
@@ -0,0 +1,135 @@
|
||||
package services
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models"
|
||||
"github.com/TeaOSLab/EdgeAPI/internal/db/models/dns"
|
||||
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
||||
)
|
||||
|
||||
// DNSTaskService DNS同步相关任务
|
||||
type DNSTaskService struct {
|
||||
BaseService
|
||||
}
|
||||
|
||||
// ExistsDNSTasks 检查是否有正在执行的任务
|
||||
func (this *DNSTaskService) ExistsDNSTasks(ctx context.Context, req *pb.ExistsDNSTasksRequest) (*pb.ExistsDNSTasksResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
existDoingTasks, err := dns.SharedDNSTaskDAO.ExistDoingTasks(tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
existErrorTasks, err := dns.SharedDNSTaskDAO.ExistErrorTasks(tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &pb.ExistsDNSTasksResponse{
|
||||
ExistTasks: existDoingTasks,
|
||||
ExistError: existErrorTasks,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// FindAllDoingDNSTasks 查找正在执行的所有任务
|
||||
func (this *DNSTaskService) FindAllDoingDNSTasks(ctx context.Context, req *pb.FindAllDoingDNSTasksRequest) (*pb.FindAllDoingDNSTasksResponse, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
tasks, err := dns.SharedDNSTaskDAO.FindAllDoingOrErrorTasks(tx, req.NodeClusterId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
pbTasks := []*pb.DNSTask{}
|
||||
for _, task := range tasks {
|
||||
pbTask := &pb.DNSTask{
|
||||
Id: int64(task.Id),
|
||||
Type: task.Type,
|
||||
IsDone: task.IsDone,
|
||||
IsOk: task.IsOk,
|
||||
Error: task.Error,
|
||||
UpdatedAt: int64(task.UpdatedAt),
|
||||
}
|
||||
|
||||
switch task.Type {
|
||||
case dns.DNSTaskTypeClusterChange, dns.DNSTaskTypeClusterNodesChange, dns.DNSTaskTypeClusterRemoveDomain:
|
||||
clusterName, err := models.SharedNodeClusterDAO.FindNodeClusterName(tx, int64(task.ClusterId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(clusterName) == 0 {
|
||||
clusterName = "集群[" + fmt.Sprintf("%d", task.ClusterId) + "]"
|
||||
}
|
||||
pbTask.NodeCluster = &pb.NodeCluster{Id: int64(task.ClusterId), Name: clusterName}
|
||||
case dns.DNSTaskTypeNodeChange:
|
||||
nodeName, err := models.SharedNodeDAO.FindNodeName(tx, int64(task.NodeId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(nodeName) == 0 {
|
||||
nodeName = "节点[" + fmt.Sprintf("%d", task.NodeId) + "]"
|
||||
}
|
||||
pbTask.Node = &pb.Node{Id: int64(task.NodeId), Name: nodeName}
|
||||
case dns.DNSTaskTypeServerChange:
|
||||
serverName, err := models.SharedServerDAO.FindEnabledServerName(tx, int64(task.ServerId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(serverName) == 0 {
|
||||
serverName = "服务[" + fmt.Sprintf("%d", task.ServerId) + "]"
|
||||
}
|
||||
pbTask.Server = &pb.Server{Id: int64(task.ServerId), Name: serverName}
|
||||
case dns.DNSTaskTypeDomainChange:
|
||||
domainName, err := dns.SharedDNSDomainDAO.FindDNSDomainName(tx, int64(task.DomainId))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if len(domainName) == 0 {
|
||||
domainName = "域名[" + fmt.Sprintf("%d", task.DomainId) + "]"
|
||||
}
|
||||
pbTask.DnsDomain = &pb.DNSDomain{Id: int64(task.DomainId), Name: domainName}
|
||||
}
|
||||
pbTasks = append(pbTasks, pbTask)
|
||||
}
|
||||
return &pb.FindAllDoingDNSTasksResponse{DnsTasks: pbTasks}, nil
|
||||
}
|
||||
|
||||
// DeleteDNSTask 删除任务
|
||||
func (this *DNSTaskService) DeleteDNSTask(ctx context.Context, req *pb.DeleteDNSTaskRequest) (*pb.RPCSuccess, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
err = dns.SharedDNSTaskDAO.DeleteDNSTask(this.NullTx(), req.DnsTaskId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return this.Success()
|
||||
}
|
||||
|
||||
// DeleteAllDNSTasks 删除所有同步任务
|
||||
func (this *DNSTaskService) DeleteAllDNSTasks(ctx context.Context, req *pb.DeleteAllDNSTasksRequest) (*pb.RPCSuccess, error) {
|
||||
_, err := this.ValidateAdmin(ctx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var tx = this.NullTx()
|
||||
err = dns.SharedDNSTaskDAO.DeleteAllDNSTasks(tx)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return this.Success()
|
||||
}
|
||||
Reference in New Issue
Block a user