Commit ec138100 authored by duanjinfei's avatar duanjinfei

add device info resp

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