Files
ppgo_job/agent/server/notify.go
2019-07-03 22:31:27 +08:00

105 lines
2.4 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/************************************************************
** @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
}