mirror of
				https://github.com/TeaOSLab/EdgeAdmin.git
				synced 2025-11-04 05:00:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package clusters
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
 | 
						|
	"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
 | 
						|
	"github.com/iwind/TeaGo/maps"
 | 
						|
	"time"
 | 
						|
)
 | 
						|
 | 
						|
// 检查变更的集群列表
 | 
						|
type CheckChangeAction struct {
 | 
						|
	actionutils.ParentAction
 | 
						|
}
 | 
						|
 | 
						|
func (this *CheckChangeAction) Init() {
 | 
						|
	this.Nav("", "", "")
 | 
						|
}
 | 
						|
 | 
						|
func (this *CheckChangeAction) RunPost(params struct {
 | 
						|
	IsNotifying bool
 | 
						|
}) {
 | 
						|
	timeout := time.NewTimer(55 * time.Second) // 比客户端提前结束,避免在客户端产生一个请求错误
 | 
						|
 | 
						|
	this.Data["clusters"] = []interface{}{}
 | 
						|
 | 
						|
Loop:
 | 
						|
	for {
 | 
						|
		select {
 | 
						|
		case <-this.Request.Context().Done():
 | 
						|
			break Loop
 | 
						|
		case <-timeout.C:
 | 
						|
			break Loop
 | 
						|
		default:
 | 
						|
			// 继续
 | 
						|
		}
 | 
						|
 | 
						|
		resp, err := this.RPC().NodeClusterRPC().FindAllChangedNodeClusters(this.AdminContext(), &pb.FindAllChangedNodeClustersRequest{})
 | 
						|
		if err != nil {
 | 
						|
			this.ErrorPage(err)
 | 
						|
			return
 | 
						|
		}
 | 
						|
 | 
						|
		result := []maps.Map{}
 | 
						|
		for _, cluster := range resp.Clusters {
 | 
						|
			result = append(result, maps.Map{
 | 
						|
				"id":   cluster.Id,
 | 
						|
				"name": cluster.Name,
 | 
						|
			})
 | 
						|
		}
 | 
						|
 | 
						|
		// 从提醒到提醒消失
 | 
						|
		if len(result) == 0 && params.IsNotifying {
 | 
						|
			break
 | 
						|
		}
 | 
						|
 | 
						|
		this.Data["clusters"] = result
 | 
						|
		if len(result) > 0 {
 | 
						|
			break
 | 
						|
		}
 | 
						|
 | 
						|
		time.Sleep(1 * time.Second)
 | 
						|
	}
 | 
						|
 | 
						|
	this.Success()
 | 
						|
}
 |