Files
ppgo_job/agent/server/notify.go

105 lines
2.4 KiB
Go
Raw Normal View History

2019-07-03 22:31:27 +08:00
/************************************************************
** @Description: notify
** @Author: george hao
** @Date: 2019-06-26 15:17
** @Last Modified by: george hao
** @Last Modified time: 2019-06-26 15:17
*************************************************************/
package server
import (
"encoding/json"
"fmt"
"github.com/george518/PPGo_Job/libs"
"strconv"
)
//启动时注册
func Register() error {
//获取本机ip以及端口 todo ip合法性判断
if C.TcpIp == "auto" {
tcpIp := libs.GetHostIp(C.IpType)
if tcpIp == "" {
return fmt.Errorf("无法获取本机IP请手工在配置文件里设置")
}
SaveConfig("TcpIp", tcpIp)
}
param := make(map[string]string, 0)
if C.ServerName == "auto" {
serverName := "agent-" + C.TcpIp + "-" + strconv.Itoa(C.TcpPort)
SaveConfig("ServerName", serverName)
}
param["server_ip"] = C.TcpIp
param["port"] = strconv.Itoa(C.TcpPort)
param["server_name"] = C.ServerName
param["detail"] = "自动注册执行器"
param["connection_type"] = "2"
param["group_id"] = C.GroupId
if C.RegisterUrl == "" {
return fmt.Errorf("自动注册地址配置错误")
}
body, err := libs.HttpGet(C.RegisterUrl, param)
if err != nil {
return err
}
m := make(map[string]interface{})
err = json.Unmarshal([]byte(body), &m)
if err != nil {
return err
}
if _, ok := m["status"]; ok {
if m["status"] == float64(0) {
//回写serverId
serverId := int(m["message"].(float64))
SaveConfig("ServerId", strconv.Itoa(serverId))
return nil
} else {
return fmt.Errorf("自动注册失败:%v", m["message"])
}
}
return fmt.Errorf("自动注册失败")
}
//程序异常退出的通知
func Close() error {
param := make(map[string]string, 0)
param["server_ip"] = C.TcpIp
param["port"] = strconv.Itoa(C.TcpPort)
param["status"] = "1"
if C.UpdateStatusUrl == "" {
return fmt.Errorf("执行器退出通知异常,请到系统中修改状态")
}
body, err := libs.HttpGet(C.UpdateStatusUrl, param)
if err != nil {
return err
}
m := make(map[string]interface{})
err = json.Unmarshal([]byte(body), &m)
if err != nil {
return err
}
if _, ok := m["status"]; ok {
if m["status"] == float64(0) {
return nil
} else {
return fmt.Errorf("执行器退出通知异常:%v", m["message"])
}
}
return fmt.Errorf("执行器退出通知异常:未知原因")
}
//心跳机制
func Heartbeat() error {
return nil
}