81 lines
2.3 KiB
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()
|
|
}
|