Commit ec138100 authored by duanjinfei's avatar duanjinfei

add device info resp

parent 91d26269
...@@ -17,12 +17,13 @@ import ( ...@@ -17,12 +17,13 @@ import (
) )
var ( var (
rewardAddr, dockerServer string rewardAddr, dockerServer, externalIp string
) )
func init() { func init() {
RootCmd.PersistentFlags().StringVarP(&rewardAddr, "reward", "r", "", "please enter a reward address") RootCmd.PersistentFlags().StringVarP(&rewardAddr, "reward", "r", "", "please enter a reward address")
RootCmd.PersistentFlags().StringVarP(&dockerServer, "docker_server", "d", "", "please enter docker server address") RootCmd.PersistentFlags().StringVarP(&dockerServer, "docker_server", "d", "", "please enter docker server address")
RootCmd.PersistentFlags().StringVarP(&externalIp, "externalIp", "e", "", "please enter server external ip address")
cobra.OnInitialize(initConfig) cobra.OnInitialize(initConfig)
} }
...@@ -47,6 +48,7 @@ var RootCmd = &cobra.Command{ ...@@ -47,6 +48,7 @@ var RootCmd = &cobra.Command{
log.Error("Please set right reward address") log.Error("Please set right reward address")
return return
} }
conf.GetConfig().SetExternalIp(externalIp)
log.Info("Enter reward address:", rewardAddr) log.Info("Enter reward address:", rewardAddr)
log.InitLog(log.LogConfig{Path: "logs", Level: "debug", Save: 3}) log.InitLog(log.LogConfig{Path: "logs", Level: "debug", Save: 3})
go nm.StartMonitor() go nm.StartMonitor()
......
...@@ -14,6 +14,7 @@ type Config struct { ...@@ -14,6 +14,7 @@ type Config struct {
DockerServer string DockerServer string
BenefitAddress string BenefitAddress string
HeartRespTimeMillis int64 HeartRespTimeMillis int64
ExternalIp string
SignPublicAddress common.Address SignPublicAddress common.Address
SignPrivateKey *ecdsa.PrivateKey SignPrivateKey *ecdsa.PrivateKey
NmSeed string `json:"nm_seed"` NmSeed string `json:"nm_seed"`
...@@ -36,6 +37,15 @@ func GetConfig() *Config { ...@@ -36,6 +37,15 @@ func GetConfig() *Config {
return _cfg return _cfg
} }
func (c *Config) SetExternalIp(externalIp string) {
log.Info("Setting external ip to:", externalIp)
c.ExternalIp = externalIp
}
func (c *Config) GetExternalIp() string {
return c.ExternalIp
}
func (c *Config) SetRewardAddress(addr string) bool { func (c *Config) SetRewardAddress(addr string) bool {
isAddr := common.IsHexAddress(addr) isAddr := common.IsHexAddress(addr)
if isAddr { if isAddr {
......
...@@ -136,6 +136,7 @@ func DeviceInfoResp(params ...interface{}) *nodemanagerV1.WorkerMessage { ...@@ -136,6 +136,7 @@ func DeviceInfoResp(params ...interface{}) *nodemanagerV1.WorkerMessage {
BenefitAddress: conf.GetConfig().BenefitAddress, BenefitAddress: conf.GetConfig().BenefitAddress,
Devices: devices, Devices: devices,
DeviceSignature: []byte(""), DeviceSignature: []byte(""),
DeviceIps: []string{conf.GetConfig().GetExternalIp()},
}, },
}, },
} }
......
...@@ -66,35 +66,38 @@ func StartMonitor() { ...@@ -66,35 +66,38 @@ func StartMonitor() {
connectNodeManagerCount++ connectNodeManagerCount++
} }
} }
log.Info("Monitoring node manager client thread start......")
ticker := time.NewTicker(time.Second * 5) ticker := time.NewTicker(time.Second * 5)
for { for {
select { select {
case <-ticker.C: case <-ticker.C:
log.Info("Monitoring node manager client thread start......")
for _, managerClient := range usedNodeManagerClient { for _, managerClient := range usedNodeManagerClient {
if !managerClient.GetStatus() { if !managerClient.GetStatus() {
log.Warn("The Node manager client is failed:", managerClient.Endpoint)
manager := getNodeManager(managerClient.Endpoint) manager := getNodeManager(managerClient.Endpoint)
if manager == nil { if manager == nil {
log.Warn("The managerClient is not exist:", managerClient.Endpoint) log.Warn("The managerClient is not exist:", managerClient.Endpoint)
continue continue
} }
isSuccess := false
if !managerClient.IsDel { if !managerClient.IsDel {
// TODO: 重试连接三次 // TODO: 重试连接三次
isSuccess = inputNodeManagerChan(manager, managerClient) isSuccess := inputNodeManagerChan(manager, managerClient)
log.Warn("Try to connect node manager client:", manager.Info.Endpoint)
if isSuccess { if isSuccess {
log.Info("Connect node manager client success:", manager.Info.Endpoint)
continue continue
} }
} }
managerClient.IsDel = true managerClient.IsDel = true
unUsedNodeManagers := getUnUsedNodeManagers() unUsedNodeManagers := getUnUsedNodeManagers()
if unUsedNodeManagers == nil || len(unUsedNodeManagers) == 0 { if unUsedNodeManagers == nil || len(unUsedNodeManagers) == 0 {
log.Warn("There is no node manager available at this time")
break break
} }
randomNum := utils.GenerateRandomNumber(conf.GetConfig().SignPrivateKey, int64(len(nodeManagerArr)))
unUsedManager := unUsedNodeManagers[randomNum.Int64()]
for i := 0; i < len(unUsedNodeManagers); i++ { for i := 0; i < len(unUsedNodeManagers); i++ {
randomNum := utils.GenerateRandomNumber(conf.GetConfig().SignPrivateKey, int64(len(nodeManagerArr)))
unUsedManager := unUsedNodeManagers[randomNum.Int64()]
isSuccess := inputNodeManagerChan(unUsedManager, nil) isSuccess := inputNodeManagerChan(unUsedManager, nil)
if !isSuccess { if !isSuccess {
break break
...@@ -237,22 +240,22 @@ func handlerMsg(nodeManager *models.NodeManagerClient, ...@@ -237,22 +240,22 @@ func handlerMsg(nodeManager *models.NodeManagerClient,
nmSignMsg := rev.GetProofTaskResult() nmSignMsg := rev.GetProofTaskResult()
if nmSignMsg != nil { if nmSignMsg != nil {
containerSign, ok := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.ContainerSign) containerSign, _ := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.ContainerSign)
if !ok { //if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.ContainerSign)
} //}
minerSign, ok := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.MinerSign) minerSign, _ := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.MinerSign)
if !ok { //if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.MinerSign)
} //}
reqHash, ok := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.ReqHash) reqHash, _ := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.ReqHash)
if !ok { //if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.ReqHash)
} //}
respHash, ok := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.RespHash) respHash, _ := taskMsgWorker.LruCache.Get(nmSignMsg.TaskUuid + models.RespHash)
if !ok { //if !ok {
// log.Error("taskMsgWorker.LruCache.Get failed: ", nmSignMsg.TaskUuid+models.RespHash)
} //}
proofWorker.ProductProof(nmSignMsg.TaskUuid, nmSignMsg.Workload, reqHash.([]byte), respHash.([]byte), containerSign.([]byte), minerSign.([]byte), nmSignMsg.ManagerSignature) proofWorker.ProductProof(nmSignMsg.TaskUuid, nmSignMsg.Workload, reqHash.([]byte), respHash.([]byte), containerSign.([]byte), minerSign.([]byte), nmSignMsg.ManagerSignature)
log.Info(nmSignMsg) log.Info(nmSignMsg)
continue continue
......
...@@ -5,7 +5,7 @@ echo "Received REWARD_ADDRESS=$REWARD_ADDRESS" ...@@ -5,7 +5,7 @@ echo "Received REWARD_ADDRESS=$REWARD_ADDRESS"
echo "Received DOCKER_SERVER=$DOCKER_SERVER" echo "Received DOCKER_SERVER=$DOCKER_SERVER"
if [ "$DOCKER_SERVER" ]; then if [ "$DOCKER_SERVER" ]; then
/usr/bin/powerNode -r "$REWARD_ADDRESS" -d "$DOCKER_SERVER" /usr/bin/powerNode -r "$REWARD_ADDRESS" -d "$DOCKER_SERVER" -e $(curl -s ifconfig.me)
else else
/usr/bin/powerNode --reward "$REWARD_ADDRESS" /usr/bin/powerNode --reward "$REWARD_ADDRESS" -e $(curl -s ifconfig.me)
fi fi
\ No newline at end of file
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