Files
EdgeAdmin/internal/web/actions/default/settings/transfer/upgradeNodes.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()
}