Commit 3523fcea authored by brent's avatar brent

add explorer api

parent 186813b2
...@@ -24,10 +24,10 @@ type ClientController struct { ...@@ -24,10 +24,10 @@ type ClientController struct {
} }
func (server *ClientController) GlobalStatistics() { func (server *ClientController) GlobalStatistics() {
body := server.Ctx.Input.RequestBody //body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{} //appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据 //err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) //logs.Debug("appRequest", appRequest)
//if err != nil { //if err != nil {
// server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
// return // return
......
...@@ -10,6 +10,8 @@ import ( ...@@ -10,6 +10,8 @@ import (
"fmt" "fmt"
"github.com/beego/beego/orm" "github.com/beego/beego/orm"
"github.com/beego/beego/v2/core/logs" "github.com/beego/beego/v2/core/logs"
"github.com/odysseus/service-registry/query"
registor "github.com/odysseus/service-registry/registry"
"net/http" "net/http"
"strconv" "strconv"
"time" "time"
...@@ -20,14 +22,14 @@ type ExplorerController struct { ...@@ -20,14 +22,14 @@ type ExplorerController struct {
} }
func (server *ExplorerController) Statistics() { func (server *ExplorerController) Statistics() {
body := server.Ctx.Input.RequestBody //body := server.Ctx.Input.RequestBody
appRequest := models.AppRequest{} //appRequest := models.AppRequest{}
err := json.Unmarshal(body, &appRequest) //解析body中数据 //err := json.Unmarshal(body, &appRequest) //解析body中数据
logs.Debug("appRequest", appRequest) //logs.Debug("appRequest", appRequest)
if err != nil { //if err != nil {
server.respond(models.NoRequestBody, err.Error()) // server.respond(models.NoRequestBody, err.Error())
return // return
} //}
//if appRequest.WorkerAcc == "" { //if appRequest.WorkerAcc == "" {
// server.respond(models.MissingParameter, "Missing worker_acc parameter") // server.respond(models.MissingParameter, "Missing worker_acc parameter")
// return // return
...@@ -51,18 +53,52 @@ func (server *ExplorerController) Statistics() { ...@@ -51,18 +53,52 @@ func (server *ExplorerController) Statistics() {
workload = task.Workload 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 { responseData := struct {
TotalWorkload int64 `json:"total_workload"` TotalWorkload int64 `json:"total_workload"`
TotalTask int64 `json:"total_task"` TotalTask int64 `json:"total_task"`
TotalCalls int64 `json:"total_calls"` TotalCalls int64 `json:"total_calls"`
NodeNums int `json:"node_nums"` NodeNums int `json:"node_nums"`
TotalGPU int `json:"total_GPU"`
TotalCPU int `json:"total_CPU"`
TotalRAM int64 `json:"total_RAM"`
}{ }{
TotalWorkload: workload, TotalWorkload: workload,
TotalTask: count, TotalTask: count,
TotalCalls: count, TotalCalls: count,
NodeNums: total, NodeNums: total,
TotalGPU: totalGPU,
TotalRAM: totalRAM,
TotalCPU: totalCPU,
} }
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
} }
...@@ -113,17 +149,34 @@ func (server *ExplorerController) NodeByPage() { ...@@ -113,17 +149,34 @@ func (server *ExplorerController) NodeByPage() {
if appRequest.Size == 0 { if appRequest.Size == 0 {
appRequest.Size = 10 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 { if err != nil {
server.respond(models.BusinessFailed, err.Error()) server.respond(models.BusinessFailed, err.Error())
return 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 { responseData := struct {
Total int64 `json:"total"` Total int64 `json:"total"`
Data interface{} `json:"data,omitempty"` Data interface{} `json:"data,omitempty"`
}{ }{
Total: int64(total), Total: int64(total),
Data: data, Data: nodes,
} }
server.respond(http.StatusOK, "", responseData) server.respond(http.StatusOK, "", responseData)
} }
...@@ -167,6 +220,7 @@ func (server *ExplorerController) Tasks() { ...@@ -167,6 +220,7 @@ func (server *ExplorerController) Tasks() {
Id string `json:"id,omitempty"` Id string `json:"id,omitempty"`
Type string `json:"type,omitempty"` Type string `json:"type,omitempty"`
ProfitAcc string `json:"profit_acc,omitempty"` ProfitAcc string `json:"profit_acc,omitempty"`
WorkerAcc string `json:"worker_acc,omitempty"`
Result string `json:"result,omitempty"` Result string `json:"result,omitempty"`
Workload int64 `json:"workload,omitempty"` Workload int64 `json:"workload,omitempty"`
Time time.Time `json:"time,omitempty"` Time time.Time `json:"time,omitempty"`
...@@ -232,6 +286,10 @@ func (server *ExplorerController) Tasks() { ...@@ -232,6 +286,10 @@ func (server *ExplorerController) Tasks() {
BaseModel: baseModel, BaseModel: baseModel,
Workload: task.Workload, Workload: task.Workload,
ProfitAcc: task.ProfitAcc, ProfitAcc: task.ProfitAcc,
WorkerAcc: task.WorkerAcc,
}
if taskId == 998 {
reTask.Type = "base task"
} }
responseTasks = append(responseTasks, reTask) 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