Commit 3523fcea authored by brent's avatar brent

add explorer api

parent 186813b2
......@@ -24,10 +24,10 @@ type ClientController struct {
}
func (server *ClientController) GlobalStatistics() {
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest)
//body := server.Ctx.Input.RequestBody
//appRequest := models.AppRequest{}
//err := json.Unmarshal(body, &appRequest) //解析body中数据
//logs.Debug("appRequest", appRequest)
//if err != nil {
// server.respond(models.NoRequestBody, err.Error())
// return
......
......@@ -10,6 +10,8 @@ import (
"fmt"
"github.com/beego/beego/orm"
"github.com/beego/beego/v2/core/logs"
"github.com/odysseus/service-registry/query"
registor "github.com/odysseus/service-registry/registry"
"net/http"
"strconv"
"time"
......@@ -20,14 +22,14 @@ type ExplorerController struct {
}
func (server *ExplorerController) Statistics() {
body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest)
if err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
//body := server.Ctx.Input.RequestBody
//appRequest := models.AppRequest{}
//err := json.Unmarshal(body, &appRequest) //解析body中数据
//logs.Debug("appRequest", appRequest)
//if err != nil {
// server.respond(models.NoRequestBody, err.Error())
// return
//}
//if appRequest.WorkerAcc == "" {
// server.respond(models.MissingParameter, "Missing worker_acc parameter")
// return
......@@ -51,18 +53,52 @@ func (server *ExplorerController) Statistics() {
workload = task.Workload
}
_, total, _ := registry.NodeManagersByPage(0, 10)
//_, total, _ := registry.NodeManagersByPage(0, 10)
total := 0
totalCPU := 0
totalGPU := 0
totalRAM := int64(0)
nodesString, err := registry.Workers()
if err == nil {
total = len(nodesString)
//var nodes []models.Worker
for _, node := range nodesString {
registryInfo := registor.RegistryInfo{}
if err = json.Unmarshal([]byte(node), &registryInfo); err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
worker := query.WorkerInfo{}
if err = json.Unmarshal([]byte(registryInfo.Detail), &worker); err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
totalCPU = totalCPU + worker.CpuCore
totalRAM = totalRAM + worker.RamTotal
//worker.Timestamp = registryInfo.Timestamp
//worker.Instance = registryInfo.Instance
//worker.Status = registryInfo.Status
//nodes = append(nodes, worker)
}
}
responseData := struct {
TotalWorkload int64 `json:"total_workload"`
TotalTask int64 `json:"total_task"`
TotalCalls int64 `json:"total_calls"`
NodeNums int `json:"node_nums"`
TotalGPU int `json:"total_GPU"`
TotalCPU int `json:"total_CPU"`
TotalRAM int64 `json:"total_RAM"`
}{
TotalWorkload: workload,
TotalTask: count,
TotalCalls: count,
NodeNums: total,
TotalGPU: totalGPU,
TotalRAM: totalRAM,
TotalCPU: totalCPU,
}
server.respond(http.StatusOK, "", responseData)
}
......@@ -113,17 +149,34 @@ func (server *ExplorerController) NodeByPage() {
if appRequest.Size == 0 {
appRequest.Size = 10
}
data, total, err := registry.NodeManagersByPage(int(appRequest.Size), int(appRequest.Page))
data, total, err := registry.WorkersByPage(int(appRequest.Size), int(appRequest.Page))
if err != nil {
server.respond(models.BusinessFailed, err.Error())
return
}
var nodes []models.Worker
for _, node := range data {
registryInfo := registor.RegistryInfo{}
if err = json.Unmarshal([]byte(node), &registryInfo); err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
worker := models.Worker{}
if err = json.Unmarshal([]byte(registryInfo.Detail), &worker); err != nil {
server.respond(models.NoRequestBody, err.Error())
return
}
worker.UpdateTime = registryInfo.Timestamp
worker.TaskList = nil
nodes = append(nodes, worker)
}
responseData := struct {
Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"`
}{
Total: int64(total),
Data: data,
Data: nodes,
}
server.respond(http.StatusOK, "", responseData)
}
......@@ -167,6 +220,7 @@ func (server *ExplorerController) Tasks() {
Id string `json:"id,omitempty"`
Type string `json:"type,omitempty"`
ProfitAcc string `json:"profit_acc,omitempty"`
WorkerAcc string `json:"worker_acc,omitempty"`
Result string `json:"result,omitempty"`
Workload int64 `json:"workload,omitempty"`
Time time.Time `json:"time,omitempty"`
......@@ -232,6 +286,10 @@ func (server *ExplorerController) Tasks() {
BaseModel: baseModel,
Workload: task.Workload,
ProfitAcc: task.ProfitAcc,
WorkerAcc: task.WorkerAcc,
}
if taskId == 998 {
reTask.Type = "base task"
}
responseTasks = append(responseTasks, reTask)
}
......
package models
import "github.com/odysseus/service-registry/query"
type Worker struct {
// worker specific info
query.WorkerInfo
UpdateTime int64 `json:"update_time"`
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment