From 7eae39fe1cf7304f00d8fa7cf7cae4edbe800abf Mon Sep 17 00:00:00 2001 From: GoEdgeLab Date: Wed, 15 May 2024 10:53:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=8A=82=E7=82=B9=E5=81=9C?= =?UTF-8?q?=E7=94=A8=E6=97=B6=E5=8F=91=E9=80=81=E5=91=BD=E4=BB=A4=E7=9A=84?= =?UTF-8?q?=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../settings/ddos-protection/status.go | 2 +- .../cluster/settings/services/status.go | 2 +- .../actions/default/nodes/nodeutils/utils.go | 28 +++++++++++++++++-- .../default/nodes/nodeutils/utils_test.go | 2 +- .../default/servers/components/cache/clean.go | 5 ++-- .../default/servers/components/cache/stat.go | 5 ++-- .../servers/components/cache/testRead.go | 5 ++-- .../servers/components/cache/testWrite.go | 5 ++-- 8 files changed, 41 insertions(+), 13 deletions(-) diff --git a/internal/web/actions/default/clusters/cluster/settings/ddos-protection/status.go b/internal/web/actions/default/clusters/cluster/settings/ddos-protection/status.go index 194dad27..204c0852 100644 --- a/internal/web/actions/default/clusters/cluster/settings/ddos-protection/status.go +++ b/internal/web/actions/default/clusters/cluster/settings/ddos-protection/status.go @@ -34,7 +34,7 @@ func (this *StatusAction) RunPost(params struct { }) { results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeCheckLocalFirewall, &messageconfigs.CheckLocalFirewallMessage{ Name: "nftables", - }, 10) + }, 10, false) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/clusters/cluster/settings/services/status.go b/internal/web/actions/default/clusters/cluster/settings/services/status.go index bcc9c73d..d80f8ece 100644 --- a/internal/web/actions/default/clusters/cluster/settings/services/status.go +++ b/internal/web/actions/default/clusters/cluster/settings/services/status.go @@ -26,7 +26,7 @@ func (this *StatusAction) RunPost(params struct { Must *actions.Must }) { - results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeCheckSystemdService, &messageconfigs.CheckSystemdServiceMessage{}, 10) + results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeCheckSystemdService, &messageconfigs.CheckSystemdServiceMessage{}, 10, false) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/nodes/nodeutils/utils.go b/internal/web/actions/default/nodes/nodeutils/utils.go index c6b3a3aa..a6894fcb 100644 --- a/internal/web/actions/default/nodes/nodeutils/utils.go +++ b/internal/web/actions/default/nodes/nodeutils/utils.go @@ -20,7 +20,7 @@ type MessageResult struct { } // SendMessageToCluster 向集群发送命令消息 -func SendMessageToCluster(ctx context.Context, clusterId int64, code string, msg interface{}, timeoutSeconds int32) (results []*MessageResult, err error) { +func SendMessageToCluster(ctx context.Context, clusterId int64, code string, msg any, timeoutSeconds int32, availableNodesOnly bool) (results []*MessageResult, err error) { results = []*MessageResult{} msgJSON, err := json.Marshal(msg) @@ -41,11 +41,22 @@ func SendMessageToCluster(ctx context.Context, clusterId int64, code string, msg if err != nil { return results, err } - nodes := nodesResp.Nodes + var nodes = nodesResp.Nodes if len(nodes) == 0 { return results, nil } + if availableNodesOnly { + var newNodes []*pb.Node + for _, node := range nodes { + if !node.IsOn { + continue + } + newNodes = append(newNodes, node) + } + nodes = newNodes + } + var rpcMap = map[int64]*rpc.RPCClient{} // apiNodeId => RPCClient var locker = &sync.Mutex{} @@ -55,6 +66,19 @@ func SendMessageToCluster(ctx context.Context, clusterId int64, code string, msg for _, node := range nodes { // TODO 检查是否在线 + if !node.IsOn { + locker.Lock() + results = append(results, &MessageResult{ + NodeId: node.Id, + NodeName: node.Name, + IsOK: false, + Message: "节点尚未启用", + }) + locker.Unlock() + wg.Done() + continue + } + if len(node.ConnectedAPINodeIds) == 0 { locker.Lock() results = append(results, &MessageResult{ diff --git a/internal/web/actions/default/nodes/nodeutils/utils_test.go b/internal/web/actions/default/nodes/nodeutils/utils_test.go index 5cbf07b7..f4745ef8 100644 --- a/internal/web/actions/default/nodes/nodeutils/utils_test.go +++ b/internal/web/actions/default/nodes/nodeutils/utils_test.go @@ -14,7 +14,7 @@ func TestSendMessageToCluster(t *testing.T) { } ctx := rpcClient.Context(1) - results, err := SendMessageToCluster(ctx, 1, "test", nil, 30) + results, err := SendMessageToCluster(ctx, 1, "test", nil, 30, false) if err != nil { t.Fatal(err) } diff --git a/internal/web/actions/default/servers/components/cache/clean.go b/internal/web/actions/default/servers/components/cache/clean.go index aace21c9..824897c9 100644 --- a/internal/web/actions/default/servers/components/cache/clean.go +++ b/internal/web/actions/default/servers/components/cache/clean.go @@ -1,6 +1,7 @@ package cache -import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/nodeutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/messageconfigs" @@ -73,7 +74,7 @@ func (this *CleanAction) RunPost(params struct { msg := &messageconfigs.CleanCacheMessage{ CachePolicyJSON: cachePolicyJSON, } - results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeCleanCache, msg, 60) + results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeCleanCache, msg, 60, false) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/servers/components/cache/stat.go b/internal/web/actions/default/servers/components/cache/stat.go index 55bd35df..86efe671 100644 --- a/internal/web/actions/default/servers/components/cache/stat.go +++ b/internal/web/actions/default/servers/components/cache/stat.go @@ -1,6 +1,7 @@ package cache -import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/nodeutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/messageconfigs" @@ -73,7 +74,7 @@ func (this *StatAction) RunPost(params struct { msg := &messageconfigs.StatCacheMessage{ CachePolicyJSON: cachePolicyJSON, } - results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeStatCache, msg, 10) + results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeStatCache, msg, 10, false) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/servers/components/cache/testRead.go b/internal/web/actions/default/servers/components/cache/testRead.go index b630d487..d00d7b7b 100644 --- a/internal/web/actions/default/servers/components/cache/testRead.go +++ b/internal/web/actions/default/servers/components/cache/testRead.go @@ -1,6 +1,7 @@ package cache -import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/nodeutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/messageconfigs" @@ -39,7 +40,7 @@ func (this *TestReadAction) RunPost(params struct { CachePolicyJSON: cachePolicyJSON, Key: params.Key, } - results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeReadCache, msg, 10) + results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeReadCache, msg, 10, false) if err != nil { this.ErrorPage(err) return diff --git a/internal/web/actions/default/servers/components/cache/testWrite.go b/internal/web/actions/default/servers/components/cache/testWrite.go index 0726a40b..5b67c216 100644 --- a/internal/web/actions/default/servers/components/cache/testWrite.go +++ b/internal/web/actions/default/servers/components/cache/testWrite.go @@ -1,6 +1,7 @@ package cache -import ( "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" +import ( + "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils" "github.com/TeaOSLab/EdgeAdmin/internal/web/actions/default/nodes/nodeutils" "github.com/TeaOSLab/EdgeCommon/pkg/langs/codes" "github.com/TeaOSLab/EdgeCommon/pkg/messageconfigs" @@ -42,7 +43,7 @@ func (this *TestWriteAction) RunPost(params struct { Value: []byte(params.Value), LifeSeconds: 3600, } - results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeWriteCache, msg, 10) + results, err := nodeutils.SendMessageToCluster(this.AdminContext(), params.ClusterId, messageconfigs.MessageCodeWriteCache, msg, 10, false) if err != nil { this.ErrorPage(err) return