Commit 5083c77d authored by vicotor's avatar vicotor

update nm

parent 9b00464f
......@@ -3,7 +3,7 @@ package server
import (
"errors"
odysseus "github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
log "github.com/sirupsen/logrus"
"sync"
"time"
......
......@@ -11,7 +11,7 @@ import (
"github.com/odysseus/nodemanager/nmregister"
"github.com/odysseus/nodemanager/utils"
basev1 "github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
"github.com/odysseus/service-registry/query"
"github.com/odysseus/service-registry/registry"
"github.com/redis/go-redis/v9"
......@@ -139,18 +139,6 @@ func (n *Node) PostProof(proof *basev1.TaskProof) {
n.taskProofCh <- proof
}
func (n *Node) Start() error {
go n.registry.Start()
go n.register.Start()
go n.postLoop()
n.SetStatus("running")
if err := n.apiStart(); err != nil {
return err
}
return nil
}
func (n *Node) postLoop() {
for {
select {
......@@ -172,6 +160,22 @@ func (n *Node) postLoop() {
}
}
func (n *Node) SetStatus(status string) {
n.register.SetStatus(status)
}
func (n *Node) Start() error {
go n.registry.Start()
go n.register.Start()
go n.postLoop()
n.SetStatus("running")
if err := n.apiStart(); err != nil {
return err
}
return nil
}
func (n *Node) Stop() {
n.registry.Clear()
n.registry.Stop()
......@@ -181,6 +185,10 @@ func (n *Node) Stop() {
close(n.taskProofCh)
}
func (n *Node) SetStatus(status string) {
n.register.SetStatus(status)
func (n *Node) PayForFee(uid int64, fee int64) error {
return n.cache.PayforFee(uid, fee)
}
func (n *Node) Cache() *cachedata.CacheData {
return n.cache
}
......@@ -4,7 +4,7 @@ import (
"context"
"errors"
"github.com/odysseus/nodemanager/utils"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
log "github.com/sirupsen/logrus"
"strconv"
"strings"
......
......@@ -5,7 +5,7 @@ import (
"github.com/ethereum/go-ethereum/crypto"
"github.com/odysseus/nodemanager/utils"
odysseus "github.com/odysseus/odysseus-protocol/gen/proto/go/base/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
log "github.com/sirupsen/logrus"
"math/big"
"time"
......@@ -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.MinerPubkey))
result.MinerSignature, utils.FromHex(worker.info.nodeInfo.Info.MinerPubkey))
log.WithFields(log.Fields{
"task-id": task.TaskId,
"minerSignatureVerify": verified,
......@@ -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.MinerPubkey))
result.MinerSignature, utils.FromHex(worker.info.nodeInfo.Info.MinerPubkey))
log.WithFields(log.Fields{
"task-id": task.TaskId,
"minerSignatureVerify": verified,
......
......@@ -4,17 +4,17 @@ import (
"errors"
"github.com/ethereum/go-ethereum/common"
lru "github.com/hashicorp/golang-lru"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v2"
log "github.com/sirupsen/logrus"
"time"
)
type workerInfo struct {
nodeInfo *omanager.NodeInfoResponse
deviceUsageInfo []*omanager.DeviceUsage
deviceInfo *omanager.DeviceInfoMessage
deviceStatusInfo *omanager.StatusResponse
resourceInfo *omanager.SubmitResourceMap
}
type workerUsageInfo struct {
hwUsage *omanager.HardwareUsage
}
type sendMsgCallback struct {
......@@ -37,6 +37,7 @@ type Worker struct {
addFirstSucceed bool
info workerInfo
usage workerUsageInfo
workerAddr string // worker address from public-key
deviceInfoHash []byte
recentTask *lru.ARCCache
......@@ -48,7 +49,7 @@ type Worker struct {
func (w *Worker) ProfitAccount() common.Address {
if w.info.nodeInfo != nil {
return common.HexToAddress(w.info.nodeInfo.BenefitAddress)
return common.HexToAddress(w.info.nodeInfo.Info.BenefitAddress)
}
return common.Address{}
}
......@@ -121,3 +122,22 @@ func (w *Worker) RecvMessage() {
w.msgCh <- wmsg
}
}
func (w *Worker) ModelOperate(info interface{}, operate omanager.ModelOperateType) *omanager.ManagerMessage_ModelOperateRequest {
request := &omanager.ManagerMessage_ModelOperateRequest{
ModelOperateRequest: &omanager.ModelOperateRequest{
ModelOperates: []*omanager.ModelOperate{
{
ModelId: "",
ImageName: "",
Username: "",
Password: "",
Cmd: "",
Operate: operate,
},
},
},
}
return request
}
This diff is collapsed.
......@@ -7,7 +7,6 @@ import (
"github.com/odysseus/service-registry/query"
"github.com/odysseus/service-registry/registry"
"math/rand"
"strings"
"time"
)
......@@ -75,8 +74,8 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
TaskList: taskList,
}
if w.worker.info.nodeInfo != nil {
info.BenefitAddress = w.worker.info.nodeInfo.BenefitAddress
info.IP = w.worker.info.nodeInfo.DeviceIp
info.BenefitAddress = w.worker.info.nodeInfo.Info.BenefitAddress
info.IP = w.worker.info.nodeInfo.Hardware.NET.Ip
}
nmList, _ := w.wm.WorkerNmList(w.worker)
......@@ -89,15 +88,9 @@ func (w workerRegistry) DetailInfo() (json.RawMessage, error) {
info.HearBeat = w.wm.GetHeartBeat(w.worker.uuid) * 1000 // to ms
info.MinerAddress = w.worker.workerAddr
info.Nonce = int64(w.worker.nonce)
if w.worker.info.deviceInfo != nil {
for i := 0; i < len(w.worker.info.deviceInfo.Devices); i++ {
if strings.HasPrefix(w.worker.info.deviceInfo.Devices[i].DeviceType, "cpu") {
if info.CpuModel == "" {
info.CpuModel = w.worker.info.deviceInfo.Devices[i].DeviceModel
}
info.CpuCore++
}
}
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
......
......@@ -65,13 +65,10 @@ func (wm *WorkerManager) IncrWorkerNonce(worker *Worker) (int, error) {
func (wm *WorkerManager) AddWorkerFirst(worker *Worker) error {
log.WithField("worker", worker.workerAddr).Info("add worker first time.")
wm.UpdateWorkerActive(worker)
for _, device := range worker.info.deviceInfo.Devices {
if !strings.HasPrefix(device.DeviceType, "gpu") {
continue
}
for _, gpu := range worker.info.nodeInfo.Hardware.GPU {
// add device to redis
priority := 0
_ = device // todo: set priority with device info.
_ = gpu // todo: set priority with device info.
for m := 0; m < config.GetConfig().GetWorkerMultiple(); m++ {
// add worker to redis queue
if err := wm.rdb.RPush(context.Background(), config.WORKER_QUEUE_PREFIX+strconv.Itoa(priority), workerUid(worker)).Err(); err != nil {
......@@ -187,7 +184,7 @@ func (wm *WorkerManager) InActiveWorker(worker *Worker) {
wm.rdb.Del(context.Background(), workerResourceInfoKey(worker))
wm.rdb.Del(context.Background(), workerBootedResourceInfoKey(worker))
if worker.info.nodeInfo != nil {
wm.rmWorkerFromSets(worker, worker.info.nodeInfo.BenefitAddress)
wm.rmWorkerFromSets(worker, worker.info.nodeInfo.Info.BenefitAddress)
}
}
}
......@@ -217,7 +214,7 @@ func (wm *WorkerManager) setWorkerLastTaskTime(worker *Worker, tm int64) error {
}
func (wm *WorkerManager) checkWhiteList(worker *Worker, benefit string) error {
wh, err := wm.node.cache.GetWhWithAddr(benefit)
wh, err := wm.node.Cache().GetWhWithAddr(benefit)
if err != nil {
log.WithFields(log.Fields{
"worker": worker.uuid,
......
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