Files
waf-platform/EdgeAdmin/internal/web/actions/default/settings/upgrade/status.go

81 lines
2.3 KiB
Go

package upgrade
import (
"encoding/json"
"github.com/TeaOSLab/EdgeAdmin/internal/web/actions/actionutils"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/iwind/TeaGo/maps"
)
type StatusAction struct {
actionutils.ParentAction
}
func (this *StatusAction) RunPost(params struct {
NodeIdsJSON []byte // JSON: {"node": [1,2], "dns": [3], "httpdns": [4,5]}
}) {
var nodeIdsMap map[string][]int64
if len(params.NodeIdsJSON) > 0 {
_ = json.Unmarshal(params.NodeIdsJSON, &nodeIdsMap)
}
result := maps.Map{}
// EdgeNode 状态
if nodeIds, ok := nodeIdsMap["node"]; ok && len(nodeIds) > 0 {
var nodeStatuses []maps.Map
for _, nodeId := range nodeIds {
resp, err := this.RPC().NodeRPC().FindEnabledNode(this.AdminContext(), &pb.FindEnabledNodeRequest{NodeId: nodeId})
if err != nil || resp.Node == nil {
continue
}
var installStatusMap maps.Map
if resp.Node.InstallStatus != nil {
installStatusMap = maps.Map{
"isRunning": resp.Node.InstallStatus.IsRunning,
"isFinished": resp.Node.InstallStatus.IsFinished,
"isOk": resp.Node.InstallStatus.IsOk,
"error": resp.Node.InstallStatus.Error,
"errorCode": resp.Node.InstallStatus.ErrorCode,
"updatedAt": resp.Node.InstallStatus.UpdatedAt,
}
}
nodeStatuses = append(nodeStatuses, maps.Map{
"id": nodeId,
"installStatus": installStatusMap,
})
}
result["node"] = nodeStatuses
}
// DNS 状态
if nodeIds, ok := nodeIdsMap["dns"]; ok && len(nodeIds) > 0 {
result["dns"] = loadDNSNodeStatus(&this.ParentAction, nodeIds)
}
// HTTPDNS 状态
if nodeIds, ok := nodeIdsMap["httpdns"]; ok && len(nodeIds) > 0 {
var nodeStatuses []maps.Map
for _, nodeId := range nodeIds {
resp, err := this.RPC().HTTPDNSNodeRPC().FindHTTPDNSNode(this.AdminContext(), &pb.FindHTTPDNSNodeRequest{NodeId: nodeId})
if err != nil || resp.Node == nil {
continue
}
var installStatusMap maps.Map
if len(resp.Node.InstallStatusJSON) > 0 {
installStatusMap = maps.Map{}
_ = json.Unmarshal(resp.Node.InstallStatusJSON, &installStatusMap)
}
nodeStatuses = append(nodeStatuses, maps.Map{
"id": nodeId,
"installStatus": installStatusMap,
})
}
result["httpdns"] = nodeStatuses
}
this.Data["statuses"] = result
this.Success()
}