mirror of
https://github.com/TeaOSLab/EdgeAdmin.git
synced 2025-11-10 17:30:29 +08:00
66 lines
1.6 KiB
Go
66 lines
1.6 KiB
Go
// Copyright 2021 Liuxiangchao iwind.liu@gmail.com. All rights reserved.
|
|
|
|
package transfer
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/configutils"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/messageconfigs"
|
|
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
|
|
"github.com/iwind/TeaGo/types"
|
|
)
|
|
|
|
type UpgradeNodesAction struct {
|
|
actionutils.ParentAction
|
|
}
|
|
|
|
func (this *UpgradeNodesAction) RunPost(params struct {
|
|
ApiNodeProtocol string
|
|
ApiNodeHost string
|
|
ApiNodePort int
|
|
}) {
|
|
nodesResp, err := this.RPC().NodeRPC().ListEnabledNodesMatch(this.AdminContext(), &pb.ListEnabledNodesMatchRequest{
|
|
ActiveState: 1,
|
|
Size: 100,
|
|
})
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
|
|
var nodes = nodesResp.Nodes
|
|
this.Data["hasNext"] = len(nodes) > 0
|
|
this.Data["count"] = len(nodes)
|
|
|
|
if len(nodes) > 0 {
|
|
var message = &messageconfigs.ChangeAPINodeMessage{
|
|
Addr: params.ApiNodeProtocol + "://" + configutils.QuoteIP(params.ApiNodeHost) + ":" + types.String(params.ApiNodePort),
|
|
}
|
|
messageJSON, err := json.Marshal(message)
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
|
|
for _, node := range nodesResp.Nodes {
|
|
resp, err := this.RPC().NodeRPC().SendCommandToNode(this.AdminContext(), &pb.NodeStreamMessage{
|
|
NodeId: node.Id,
|
|
TimeoutSeconds: 3,
|
|
Code: messageconfigs.MessageCodeChangeAPINode,
|
|
DataJSON: messageJSON,
|
|
})
|
|
if err != nil {
|
|
this.ErrorPage(err)
|
|
return
|
|
}
|
|
if !resp.IsOk {
|
|
this.Fail(resp.Message)
|
|
return
|
|
}
|
|
}
|
|
}
|
|
|
|
this.Success()
|
|
}
|