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,
}
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")
}
//log.WithFields(log.Fields{
......@@ -89,7 +89,7 @@ func (wm *WorkerManager) computeTaskResult(worker *Worker, task *odysseus.TaskCo
// verify miner_signature
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
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{
"task-id": task.TaskId,
"minerSignatureVerify": verified,
......@@ -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) {
if worker.info.nodeInfo == nil {
if worker.info == nil {
return nil, errors.New("unknown worker node info")
}
//log.WithFields(log.Fields{
......@@ -181,7 +181,7 @@ func (wm *WorkerManager) standardTaskResult(worker *Worker, task *odysseus.TaskC
// verify miner_signature
// miner_signature = sign(hash((task_id+hash(task_param)+hash(task_result)))
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{
"task-id": task.TaskId,
"minerSignatureVerify": verified,
......
This diff is collapsed.
This diff is collapsed.
......@@ -30,26 +30,6 @@ func (w workerRegistry) Instance() string {
func (w workerRegistry) Status() string {
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) {
if w.worker == nil {
return nil, fmt.Errorf("worker is nil")
......@@ -73,9 +53,9 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
ActiveNM: make([]string, 0),
TaskList: taskList,
}
if w.worker.info.nodeInfo != nil {
info.BenefitAddress = w.worker.info.nodeInfo.Info.BenefitAddress
info.IP = w.worker.info.nodeInfo.Hardware.NET.Ip
if w.worker.info != nil {
info.BenefitAddress = w.worker.info.Info.BenefitAddress
info.IP = w.worker.info.Hardware.NET.Ip
}
nmList, _ := w.wm.WorkerNmList(w.worker)
......@@ -85,27 +65,24 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
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.Nonce = 0
if w.worker.info.nodeInfo != nil {
info.CpuModel = w.worker.info.nodeInfo.Hardware.CPU.Model
info.CpuCore = int(w.worker.info.nodeInfo.Hardware.CPU.Cores)
if info.CpuCore == 0 {
info.CpuModel = "Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz"
info.CpuCore = 8
if w.worker.info != nil {
info.CpuModel = w.worker.info.Hardware.CPU.Model
info.CpuCore = int(w.worker.info.Hardware.CPU.Cores)
info.GPUModel = w.worker.info.Hardware.GPU[0].Model
info.GPURam = int(w.worker.info.Hardware.GPU[0].MemTotal)
info.RamTotal = w.worker.info.Hardware.RAM.Total
info.RamUsed = info.RamTotal - w.worker.info.Hardware.RAM.Free
}
info.GPUModel = generateAGpuModel()
info.GPURam = generateAGpuRam()
ramTotal, ramUsed := generateARam()
info.MacAddress = w.worker.info.Hardware.NET.Mac
info.RamTotal = ramTotal
info.RamUsed = ramUsed
}
// todo: record the create time and bootup time
info.CreateTime = time.Now().Add(time.Hour * 24 * 4).Unix()
info.BootupTime = time.Now().Add(time.Hour * 12).Unix()
info.Workload = rand.Intn(500) + 1000
info.MacAddress = generateMac()
return json.Marshal(info)
}
......@@ -9,7 +9,6 @@ import (
"github.com/odysseus/mogo/operator"
"github.com/odysseus/mogo/types"
"github.com/odysseus/nodemanager/config"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
log "github.com/sirupsen/logrus"
"go.mongodb.org/mongo-driver/mongo"
"strconv"
......@@ -17,24 +16,10 @@ import (
"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 {
// 2. update worker running info.
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)
iInfo := &operator.WorkerRunningInfo{
WorkerId: worker.WorkerAccount().String(),
......@@ -52,14 +37,14 @@ func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.Worker
}
// 3. update worker installed info.
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)
iInfo := &operator.WorkerInstalledInfo{
WorkerId: worker.WorkerAccount().String(),
ModelId: id,
}
if len(worker.info.nodeInfo.Hardware.GPU) > 0 {
iInfo.GpuFree = worker.info.nodeInfo.Hardware.GPU[0].MemFree
if len(worker.info.Hardware.GPU) > 0 {
iInfo.GpuFree = worker.info.Hardware.GPU[0].MemFree
}
_, err := wm.workerInstalledOperator.Insert(context.Background(), iInfo)
if err != nil {
......@@ -72,9 +57,9 @@ func (wm *WorkerManager) updateWorkerInfo(worker *Worker, winfo *operator.Worker
}
// 1. update worker info.
winfo.Hardware = types.PbToHardwareInfo(worker.info.nodeInfo.Hardware)
winfo.Models = types.PbToModelInfo(worker.info.nodeInfo.Models)
winfo.NodeInfo = types.PbToNodeInfo(worker.info.nodeInfo.Info)
winfo.Hardware = types.PbToHardwareInfo(worker.info.Hardware)
winfo.Models = types.PbToModelInfo(worker.info.Models)
winfo.NodeInfo = types.PbToNodeInfo(worker.info.Info)
err := wm.workerInfoOperator.UpdateWorker(context.Background(), winfo)
if err != nil {
return err
......@@ -87,9 +72,9 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error {
// 1. add worker info.
_, err := wm.workerInfoOperator.InsertWorker(context.Background(), &operator.WorkerInfo{
WorkerId: worker.WorkerAccount().String(),
NodeInfo: types.PbToNodeInfo(worker.info.nodeInfo.Info),
Models: types.PbToModelInfo(worker.info.nodeInfo.Models),
Hardware: types.PbToHardwareInfo(worker.info.nodeInfo.Hardware),
NodeInfo: types.PbToNodeInfo(worker.info.Info),
Models: types.PbToModelInfo(worker.info.Models),
Hardware: types.PbToHardwareInfo(worker.info.Hardware),
})
if err != nil {
return err
......@@ -97,7 +82,7 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error {
// 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)
iInfo := &operator.WorkerRunningInfo{
WorkerId: worker.WorkerAccount().String(),
......@@ -115,14 +100,14 @@ func (wm *WorkerManager) addWorkerInfo(worker *Worker) error {
}
// 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)
iInfo := &operator.WorkerInstalledInfo{
WorkerId: worker.WorkerAccount().String(),
ModelId: id,
}
if len(worker.info.nodeInfo.Hardware.GPU) > 0 {
iInfo.GpuFree = worker.info.nodeInfo.Hardware.GPU[0].MemFree
if len(worker.info.Hardware.GPU) > 0 {
iInfo.GpuFree = worker.info.Hardware.GPU[0].MemFree
}
_, err := wm.workerInstalledOperator.Insert(context.Background(), iInfo)
if err != nil {
......@@ -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 {
wm.rdb.Del(context.Background(), workerStatusKey(worker))
if worker.info.nodeInfo != nil {
wm.delWorkerFromWhiteListSet(worker, worker.info.nodeInfo.Info.BenefitAddress)
if worker.info != nil {
wm.delWorkerFromWhiteListSet(worker, worker.info.Info.BenefitAddress)
// delete worker info from mogo.
n, err := wm.workerInfoOperator.DeleteByWorkerId(context.Background(), worker.WorkerAccount().String())
if err != nil {
......@@ -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 {
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