Files
EdgeAdmin/internal/web/actions/default/common/changedClusters.go

66 lines
1.3 KiB
Go
Raw Normal View History

2020-08-21 12:32:16 +08:00
package common
import (
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
2020-09-26 08:07:18 +08:00
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
2020-08-21 12:32:16 +08:00
"github.com/iwind/TeaGo/maps"
2020-09-26 08:07:18 +08:00
"time"
2020-08-21 12:32:16 +08:00
)
2020-09-26 08:07:18 +08:00
// 检查变更的集群列表
2020-08-21 12:32:16 +08:00
type ChangedClustersAction struct {
actionutils.ParentAction
}
func (this *ChangedClustersAction) Init() {
this.Nav("", "", "")
}
2020-09-26 08:07:18 +08:00
func (this *ChangedClustersAction) RunGet(params struct {
IsNotifying bool
}) {
timeout := time.NewTimer(55 * time.Second) // 比客户端提前结束,避免在客户端产生一个请求错误
2020-08-21 12:32:16 +08:00
2020-09-26 08:07:18 +08:00
this.Data["clusters"] = []interface{}{}
Loop:
for {
select {
case <-this.Request.Context().Done():
break Loop
case <-timeout.C:
break Loop
default:
// 继续
}
2020-08-21 12:32:16 +08:00
2020-09-26 08:07:18 +08:00
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)
}
2020-08-21 12:32:16 +08:00
this.Success()
}