Commit 52cd0159 authored by vicotor's avatar vicotor

update nodemanager

parent 802ac706
......@@ -2,7 +2,11 @@ package main
import (
"context"
"crypto/ecdsa"
"crypto/rand"
"flag"
"github.com/ethereum/go-ethereum/crypto"
"github.com/odysseus/nodemanager/utils"
omanager "github.com/odysseus/odysseus-protocol/gen/proto/go/nodemanager/v1"
log "github.com/sirupsen/logrus"
"google.golang.org/grpc"
......@@ -52,6 +56,7 @@ func main() {
log.WithField("endpoint", endpoint).Fatal("register worker failed", "err", err)
return
}
sk, _ := ecdsa.GenerateKey(crypto.S256(), rand.Reader)
for {
data, err := managerClient.Recv()
......@@ -84,7 +89,8 @@ func main() {
msg := &omanager.WorkerMessage{
Message: &omanager.WorkerMessage_DeviceInfo{
DeviceInfo: &omanager.DeviceInfoResponse{
Devices: []*omanager.DeviceInfo{deviceInfo},
MinerPubkey: utils.PubkeyToHex(&sk.PublicKey),
Devices: []*omanager.DeviceInfo{deviceInfo},
},
},
}
......
......@@ -43,7 +43,7 @@ services:
KAFKA_NUM_PARTITIONS: 3
KAFKA_DELETE_RETENTION_MS: 1000
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://192.168.1.108:9092 ## 这里填写服务器的公网ip
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://127.0.0.1:9092 ## 这里填写服务器的公网ip
KAFKA_BROKER_ID: 1
kafka-ui:
container_name: kafka-ui
......
package model
import (
"fmt"
"github.com/astaxie/beego/orm"
"github.com/odysseus/nodemanager/config"
log "github.com/sirupsen/logrus"
)
func DbInit() {
if config.GetConfig().EnablePay == false {
return
}
// Set up database
dbconf := config.GetConfig().DbConfig
datasource := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", dbconf.User, dbconf.Passwd, dbconf.Host, dbconf.Port, dbconf.DbName)
orm.RegisterDriver("mysql", orm.DRMySQL)
err := orm.RegisterDataBase("default", "mysql", datasource)
if err != nil {
log.WithError(err).Fatal("failed to connect to database")
}
orm.RegisterModel(new(User))
//if config.GetConfig().EnablePay == false {
// return
//}
//// Set up database
//dbconf := config.GetConfig().DbConfig
//datasource := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8", dbconf.User, dbconf.Passwd, dbconf.Host, dbconf.Port, dbconf.DbName)
//orm.RegisterDriver("mysql", orm.DRMySQL)
//err := orm.RegisterDataBase("default", "mysql", datasource)
//if err != nil {
// log.WithError(err).Fatal("failed to connect to database")
//}
//orm.RegisterModel(new(User))
}
package model
import (
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)
......@@ -28,42 +27,43 @@ func (User) TableName() string {
return "user"
}
type UserRepository interface {
Create(user *User) error
GetByUserId(uid int64) (*User, error)
Update(user *User) error
Delete(user *User) error
}
type UserRepositoryImpl struct {
o orm.Ormer
}
func NewUserRepository() UserRepository {
o := orm.NewOrm()
return &UserRepositoryImpl{o}
}
func (repo *UserRepositoryImpl) Create(user *User) error {
_, err := repo.o.Insert(user)
return err
}
func (repo *UserRepositoryImpl) GetByUserId(uid int64) (*User, error) {
user := User{ID: uid}
err := repo.o.Read(&user)
if err != nil {
return nil, err
}
return &user, nil
}
func (repo *UserRepositoryImpl) Update(user *User) error {
_, err := repo.o.Update(user)
return err
}
func (repo *UserRepositoryImpl) Delete(user *User) error {
_, err := repo.o.Delete(user)
return err
}
//
//type UserRepository interface {
// Create(user *User) error
// GetByUserId(uid int64) (*User, error)
// Update(user *User) error
// Delete(user *User) error
//}
//
//type UserRepositoryImpl struct {
// o orm.Ormer
//}
//
//func NewUserRepository() UserRepository {
// o := orm.NewOrm()
// return &UserRepositoryImpl{o}
//}
//
//func (repo *UserRepositoryImpl) Create(user *User) error {
// _, err := repo.o.Insert(user)
// return err
//}
//
//func (repo *UserRepositoryImpl) GetByUserId(uid int64) (*User, error) {
// user := User{ID: uid}
// err := repo.o.Read(&user)
// if err != nil {
// return nil, err
// }
// return &user, nil
//}
//
//func (repo *UserRepositoryImpl) Update(user *User) error {
// _, err := repo.o.Update(user)
// return err
//}
//
//func (repo *UserRepositoryImpl) Delete(user *User) error {
// _, err := repo.o.Delete(user)
// return err
//}
......@@ -6,7 +6,6 @@ import (
"github.com/golang/protobuf/proto"
lru "github.com/hashicorp/golang-lru"
"github.com/odysseus/nodemanager/config"
"github.com/odysseus/nodemanager/model"
"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"
......@@ -14,7 +13,6 @@ import (
log "github.com/sirupsen/logrus"
"golang.org/x/crypto/sha3"
"math/big"
"strconv"
"sync"
"time"
)
......@@ -53,8 +51,6 @@ type WorkerManager struct {
wkRwLock sync.RWMutex
quit chan struct{}
userRepo model.UserRepository
node *Node
}
......@@ -66,7 +62,6 @@ func NewWorkerManager(rdb *redis.Client, node *Node) *WorkerManager {
quit: make(chan struct{}),
rdb: rdb,
node: node,
userRepo: model.NewUserRepository(),
}
}
......@@ -404,40 +399,40 @@ func (wm *WorkerManager) handleWorkerMsg(worker *Worker) {
func (wm *WorkerManager) Payment(task *odysseus.TaskContent) error {
if config.GetConfig().EnablePay == true {
// pay for task.
uid, err := strconv.ParseInt(task.TaskUid, 10, 64)
if err != nil {
log.WithFields(log.Fields{
"taskid": task.TaskId,
"uid": task.TaskUid,
"error": err,
}).Error("parse task uid failed")
}
user, err := wm.userRepo.GetByUserId(uid)
if err != nil {
log.WithFields(log.Fields{
"taskid": task.TaskId,
"uid": task.TaskUid,
"error": err,
}).Error("get user by uid failed")
}
if user != nil {
fee, _ := strconv.ParseInt(task.TaskFee, 10, 64)
user.Balance = user.Balance - fee
err = wm.userRepo.Update(user)
if err != nil {
log.WithFields(log.Fields{
"taskid": task.TaskId,
"uid": task.TaskUid,
"error": err,
}).Error("update user failed")
} else {
log.WithFields(log.Fields{
"taskid": task.TaskId,
"uid": task.TaskUid,
"fee": fee,
}).Info("pay task fee finished")
}
}
//uid, err := strconv.ParseInt(task.TaskUid, 10, 64)
//if err != nil {
// log.WithFields(log.Fields{
// "taskid": task.TaskId,
// "uid": task.TaskUid,
// "error": err,
// }).Error("parse task uid failed")
//}
//user, err := wm.userRepo.GetByUserId(uid)
//if err != nil {
// log.WithFields(log.Fields{
// "taskid": task.TaskId,
// "uid": task.TaskUid,
// "error": err,
// }).Error("get user by uid failed")
//}
//if user != nil {
// fee, _ := strconv.ParseInt(task.TaskFee, 10, 64)
// user.Balance = user.Balance - fee
// err = wm.userRepo.Update(user)
// if err != nil {
// log.WithFields(log.Fields{
// "taskid": task.TaskId,
// "uid": task.TaskUid,
// "error": err,
// }).Error("update user failed")
// } else {
// log.WithFields(log.Fields{
// "taskid": task.TaskId,
// "uid": task.TaskUid,
// "fee": fee,
// }).Info("pay task fee finished")
// }
//}
}
return nil
......
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