Commit 024fdef8 authored by vicotor's avatar vicotor

add more msg handler

parent f3f5c792
...@@ -28,7 +28,7 @@ func (wm *WorkerManager) taskResult(worker *Worker, task *odysseus.TaskContent, ...@@ -28,7 +28,7 @@ func (wm *WorkerManager) taskResult(worker *Worker, task *odysseus.TaskContent,
} }
func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskContent, result *omanager.SubmitTaskResult) (*odysseus.TaskProof, error) { func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskContent, result *omanager.SubmitTaskResult) (*odysseus.TaskProof, error) {
if worker.info.nodeInfo == nil { if worker.info == nil {
return nil, errors.New("unknown worker node info") return nil, errors.New("unknown worker node info")
} }
//log.WithFields(log.Fields{ //log.WithFields(log.Fields{
...@@ -89,7 +89,7 @@ func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskCo ...@@ -89,7 +89,7 @@ func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskCo
// verify miner_signature // verify miner_signature
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result))) // miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
verified := utils.VerifySignature(utils.CombineBytes([]byte(result.TaskId), paramHash[:], resultHash[:]), verified := utils.VerifySignature(utils.CombineBytes([]byte(result.TaskId), paramHash[:], resultHash[:]),
result.MinerSignature, utils.FromHex(worker.info.nodeInfo.Info.MinerPubkey)) result.MinerSignature, utils.FromHex(worker.info.Info.MinerPubkey))
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"task-id": task.TaskId, "task-id": task.TaskId,
"minerSignatureVerify": verified, "minerSignatureVerify": verified,
...@@ -131,7 +131,7 @@ func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskCo ...@@ -131,7 +131,7 @@ func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskCo
} }
func (wm *WorkerManager) standardTaskResult(worker *Worker, task *odysseus.TaskContent, result *omanager.SubmitTaskResult) (*odysseus.TaskProof, error) { func (wm *WorkerManager) standardTaskResult(worker *Worker, task *odysseus.TaskContent, result *omanager.SubmitTaskResult) (*odysseus.TaskProof, error) {
if worker.info.nodeInfo == nil { if worker.info == nil {
return nil, errors.New("unknown worker node info") return nil, errors.New("unknown worker node info")
} }
//log.WithFields(log.Fields{ //log.WithFields(log.Fields{
...@@ -181,7 +181,7 @@ func (wm *WorkerManager) standardTaskResult(worker *Worker, task *odysseus.TaskC ...@@ -181,7 +181,7 @@ func (wm *WorkerManager) standardTaskResult(worker *Worker, task *odysseus.TaskC
// verify miner_signature // verify miner_signature
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result))) // miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
verified := utils.VerifySignature(utils.CombineBytes([]byte(result.TaskId), paramHash[:], resultHash[:]), verified := utils.VerifySignature(utils.CombineBytes([]byte(result.TaskId), paramHash[:], resultHash[:]),
result.MinerSignature, utils.FromHex(worker.info.nodeInfo.Info.MinerPubkey)) result.MinerSignature, utils.FromHex(worker.info.Info.MinerPubkey))
log.WithFields(log.Fields{ log.WithFields(log.Fields{
"task-id": task.TaskId, "task-id": task.TaskId,
"minerSignatureVerify": verified, "minerSignatureVerify": verified,
......
This diff is collapsed.
This diff is collapsed.
...@@ -30,26 +30,6 @@ func (w workerRegistry) Instance() string { ...@@ -30,26 +30,6 @@ func (w workerRegistry) Instance() string {
func (w workerRegistry) Status() string { func (w workerRegistry) Status() string {
return fmt.Sprintf("%s", w.worker.status) return fmt.Sprintf("%s", w.worker.status)
} }
func generateAGpuRam() int {
return 1024 * 1024 * 1024 * (rand.Intn(3)*8 + 8) // 8, 16, 24
}
func generateARam() (int64, int64) {
return 32 * 1024 * 1024 * 1024, int64(rand.Intn(10)) * 1024 * 1024 * 1024
}
func generateAGpuModel() string {
m := rand.Intn(4)*10 + 3060 // 3060 ~ 3090
return fmt.Sprintf("Nvidia GTX %d", m)
}
func generateMac() string {
return fmt.Sprintf("%02x:%02x:%02x:%02x:%02x:%02x",
rand.Intn(256), rand.Intn(256), rand.Intn(256),
rand.Intn(256), rand.Intn(256), rand.Intn(256))
}
func (w workerRegistry) DetailInfo() (json.RawMessage, error) { func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
if w.worker == nil { if w.worker == nil {
return nil, fmt.Errorf("worker is nil") return nil, fmt.Errorf("worker is nil")
...@@ -73,9 +53,9 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) { ...@@ -73,9 +53,9 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
ActiveNM: make([]string, 0), ActiveNM: make([]string, 0),
TaskList: taskList, TaskList: taskList,
} }
if w.worker.info.nodeInfo != nil { if w.worker.info != nil {
info.BenefitAddress = w.worker.info.nodeInfo.Info.BenefitAddress info.BenefitAddress = w.worker.info.Info.BenefitAddress
info.IP = w.worker.info.nodeInfo.Hardware.NET.Ip info.IP = w.worker.info.Hardware.NET.Ip
} }
nmList, _ := w.wm.WorkerNmList(w.worker) nmList, _ := w.wm.WorkerNmList(w.worker)
...@@ -85,27 +65,24 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) { ...@@ -85,27 +65,24 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
info.ActiveNM = append(info.ActiveNM, endpoint) info.ActiveNM = append(info.ActiveNM, endpoint)
} }
} }
info.HearBeat = w.wm.GetHeartBeat(w.worker.uuid) * 1000 // to ms info.HearBeat = w.worker.heartBeat * 1000 // to ms
info.MinerAddress = w.worker.workerAddr info.MinerAddress = w.worker.workerAddr
info.Nonce = 0 info.Nonce = 0
if w.worker.info.nodeInfo != nil { if w.worker.info != nil {
info.CpuModel = w.worker.info.nodeInfo.Hardware.CPU.Model info.CpuModel = w.worker.info.Hardware.CPU.Model
info.CpuCore = int(w.worker.info.nodeInfo.Hardware.CPU.Cores) info.CpuCore = int(w.worker.info.Hardware.CPU.Cores)
if info.CpuCore == 0 { info.GPUModel = w.worker.info.Hardware.GPU[0].Model
info.CpuModel = "Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz" info.GPURam = int(w.worker.info.Hardware.GPU[0].MemTotal)
info.CpuCore = 8
} info.RamTotal = w.worker.info.Hardware.RAM.Total
info.GPUModel = generateAGpuModel() info.RamUsed = info.RamTotal - w.worker.info.Hardware.RAM.Free
info.GPURam = generateAGpuRam()
ramTotal, ramUsed := generateARam()
info.RamTotal = ramTotal
info.RamUsed = ramUsed
} }
info.MacAddress = w.worker.info.Hardware.NET.Mac
// todo: record the create time and bootup time
info.CreateTime = time.Now().Add(time.Hour * 24 * 4).Unix() info.CreateTime = time.Now().Add(time.Hour * 24 * 4).Unix()
info.BootupTime = time.Now().Add(time.Hour * 12).Unix() info.BootupTime = time.Now().Add(time.Hour * 12).Unix()
info.Workload = rand.Intn(500) + 1000 info.Workload = rand.Intn(500) + 1000
info.MacAddress = generateMac()
return json.Marshal(info) return json.Marshal(info)
} }
...@@ -9,7 +9,6 @@ import ( ...@@ -9,7 +9,6 @@ import (
"github.com/odysseus/mogo/operator" "github.com/odysseus/mogo/operator"
"github.com/odysseus/mogo/types" "github.com/odysseus/mogo/types"
"github.com/odysseus/nodemanager/config" "github.com/odysseus/nodemanager/config"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
log "github.com/sirupsen/logrus" log "github.com/sirupsen/logrus"
"go.mongodb.org/mongo-driver/mongo" "go.mongodb.org/mongo-driver/mongo"
"strconv" "strconv"
...@@ -17,24 +16,10 @@ import ( ...@@ -17,24 +16,10 @@ import (
"time" "time"
) )
func (wm *WorkerManager) UpdateWorkerUsageInfo(worker *Worker, usageInfo *omanager.DeviceUsageResponse) {
// todo: update usage info to mogo.
wm.rdb.Set(context.Background(), workerUsageInfoKey(worker), usageInfo.String(), 0)
}
func (wm *WorkerManager) UpdateWorkerDeviceInfo(worker *Worker, deviceInfos *omanager.DeviceInfoMessage) {
// todo: update device info to mogo.
wm.rdb.Set(context.Background(), workerDeviceInfoKey(worker), deviceInfos.String(), 0)
}
func (wm *WorkerManager) GetWorkerNonce(worker *Worker) (int, error) {
return 0, nil
}
func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.WorkerInfo) error { func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.WorkerInfo) error {
// 2. update worker running info. // 2. update worker running info.
wm.workerRunningOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String()) wm.workerRunningOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String())
for _, running := range worker.info.nodeInfo.Models.RunningModels { for _, running := range worker.info.Models.RunningModels {
id, _ := strconv.Atoi(running.ModelId) id, _ := strconv.Atoi(running.ModelId)
iInfo := &operator.WorkerRunningInfo{ iInfo := &operator.WorkerRunningInfo{
WorkerId: worker.WorkerAccount().String(), WorkerId: worker.WorkerAccount().String(),
...@@ -52,14 +37,14 @@ func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.Worker ...@@ -52,14 +37,14 @@ func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.Worker
} }
// 3. update worker installed info. // 3. update worker installed info.
wm.workerInstalledOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String()) wm.workerInstalledOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String())
for _, installed := range worker.info.nodeInfo.Models.InstalledModels { for _, installed := range worker.info.Models.InstalledModels {
id, _ := strconv.Atoi(installed.ModelId) id, _ := strconv.Atoi(installed.ModelId)
iInfo := &operator.WorkerInstalledInfo{ iInfo := &operator.WorkerInstalledInfo{
WorkerId: worker.WorkerAccount().String(), WorkerId: worker.WorkerAccount().String(),
ModelId: id, ModelId: id,
} }
if len(worker.info.nodeInfo.Hardware.GPU) > 0 { if len(worker.info.Hardware.GPU) > 0 {
iInfo.GpuFree = worker.info.nodeInfo.Hardware.GPU[0].MemFree iInfo.GpuFree = worker.info.Hardware.GPU[0].MemFree
} }
_, err := wm.workerInstalledOperator.Insert(context.Background(), iInfo) _, err := wm.workerInstalledOperator.Insert(context.Background(), iInfo)
if err != nil { if err != nil {
...@@ -72,9 +57,9 @@ func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.Worker ...@@ -72,9 +57,9 @@ func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.Worker
} }
// 1. update worker info. // 1. update worker info.
winfo.Hardware = types.PbToHardwareInfo(worker.info.nodeInfo.Hardware) winfo.Hardware = types.PbToHardwareInfo(worker.info.Hardware)
winfo.Models = types.PbToModelInfo(worker.info.nodeInfo.Models) winfo.Models = types.PbToModelInfo(worker.info.Models)
winfo.NodeInfo = types.PbToNodeInfo(worker.info.nodeInfo.Info) winfo.NodeInfo = types.PbToNodeInfo(worker.info.Info)
err := wm.workerInfoOperator.UpdateWorker(context.Background(), winfo) err := wm.workerInfoOperator.UpdateWorker(context.Background(), winfo)
if err != nil { if err != nil {
return err return err
...@@ -87,9 +72,9 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error { ...@@ -87,9 +72,9 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error {
// 1. add worker info. // 1. add worker info.
_, err := wm.workerInfoOperator.InsertWorker(context.Background(), &operator.WorkerInfo{ _, err := wm.workerInfoOperator.InsertWorker(context.Background(), &operator.WorkerInfo{
WorkerId: worker.WorkerAccount().String(), WorkerId: worker.WorkerAccount().String(),
NodeInfo: types.PbToNodeInfo(worker.info.nodeInfo.Info), NodeInfo: types.PbToNodeInfo(worker.info.Info),
Models: types.PbToModelInfo(worker.info.nodeInfo.Models), Models: types.PbToModelInfo(worker.info.Models),
Hardware: types.PbToHardwareInfo(worker.info.nodeInfo.Hardware), Hardware: types.PbToHardwareInfo(worker.info.Hardware),
}) })
if err != nil { if err != nil {
return err return err
...@@ -97,7 +82,7 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error { ...@@ -97,7 +82,7 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error {
// 2. add worker running info. // 2. add worker running info.
for _, running := range worker.info.nodeInfo.Models.RunningModels { for _, running := range worker.info.Models.RunningModels {
id, _ := strconv.Atoi(running.ModelId) id, _ := strconv.Atoi(running.ModelId)
iInfo := &operator.WorkerRunningInfo{ iInfo := &operator.WorkerRunningInfo{
WorkerId: worker.WorkerAccount().String(), WorkerId: worker.WorkerAccount().String(),
...@@ -115,14 +100,14 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error { ...@@ -115,14 +100,14 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error {
} }
// 3. add worker installed info. // 3. add worker installed info.
for _, installed := range worker.info.nodeInfo.Models.InstalledModels { for _, installed := range worker.info.Models.InstalledModels {
id, _ := strconv.Atoi(installed.ModelId) id, _ := strconv.Atoi(installed.ModelId)
iInfo := &operator.WorkerInstalledInfo{ iInfo := &operator.WorkerInstalledInfo{
WorkerId: worker.WorkerAccount().String(), WorkerId: worker.WorkerAccount().String(),
ModelId: id, ModelId: id,
} }
if len(worker.info.nodeInfo.Hardware.GPU) > 0 { if len(worker.info.Hardware.GPU) > 0 {
iInfo.GpuFree = worker.info.nodeInfo.Hardware.GPU[0].MemFree iInfo.GpuFree = worker.info.Hardware.GPU[0].MemFree
} }
_, err := wm.workerInstalledOperator.Insert(context.Background(), iInfo) _, err := wm.workerInstalledOperator.Insert(context.Background(), iInfo)
if err != nil { if err != nil {
...@@ -196,8 +181,8 @@ func (wm *WorkerManager) InActiveWorker(worker *Worker) { ...@@ -196,8 +181,8 @@ func (wm *WorkerManager) InActiveWorker(worker *Worker) {
if list, err := wm.rdb.SMembers(context.Background(), workerStatusKey(worker)).Result(); err == nil && len(list) == 0 { if list, err := wm.rdb.SMembers(context.Background(), workerStatusKey(worker)).Result(); err == nil && len(list) == 0 {
wm.rdb.Del(context.Background(), workerStatusKey(worker)) wm.rdb.Del(context.Background(), workerStatusKey(worker))
if worker.info.nodeInfo != nil { if worker.info != nil {
wm.delWorkerFromWhiteListSet(worker, worker.info.nodeInfo.Info.BenefitAddress) wm.delWorkerFromWhiteListSet(worker, worker.info.Info.BenefitAddress)
// delete worker info from mogo. // delete worker info from mogo.
n, err := wm.workerInfoOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String()) n, err := wm.workerInfoOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String())
if err != nil { if err != nil {
...@@ -260,26 +245,6 @@ func (wm *WorkerManager) checkWhiteList(worker *Worker, benefit string) error { ...@@ -260,26 +245,6 @@ func (wm *WorkerManager) checkWhiteList(worker *Worker, benefit string) error {
} }
} }
func workerResourceInfoKey(w *Worker) string {
return config.WORKER_RESOURCE_INFO_PREFIX + w.workerAddr
}
func workerBootedResourceInfoKey(w *Worker) string {
return config.WORKER_BOOTED_RESOURCE_INFO_PREFIX + w.workerAddr
}
func workerDeviceInfoKey(w *Worker) string {
return config.WORKER_DEVICE_INFO_PREFIX + w.workerAddr
}
func workerUsageInfoKey(w *Worker) string {
return config.WORKER_USAGE_INFO_PREFIX + w.workerAddr
}
func workerDeviceStatusInfoKey(w *Worker) string {
return config.WORKER_DEVICE_STATUS_PREFIX + w.workerAddr
}
func workerSetsKey(benefit string) string { func workerSetsKey(benefit string) string {
return config.WORKER_SETS_PREFIX + benefit return config.WORKER_SETS_PREFIX + benefit
} }
......
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