support custom node name

This commit is contained in:
hantmac
2020-04-28 20:41:42 +08:00
parent ef82c8aab8
commit 872dc6660f
4 changed files with 70 additions and 5 deletions

View File

@@ -23,8 +23,9 @@ server:
master: "Y"
secret: "crawlab"
register:
# mac地址/ip地址/hostname, 如果是ip则需要手动指定IP
# type mac/ip/customName, 如果是ip则需要手动指定IP, 如果是 customName, 需填写你的 customNodeName
type: "mac"
customNodeName: "" # 自定义节点名称, default node1,只有在type = customName 时生效
ip: ""
lang: # 安装语言环境, Y 为安装N 为不安装
python: "Y"

View File

@@ -4,4 +4,5 @@ const (
RegisterTypeMac = "mac"
RegisterTypeIp = "ip"
RegisterTypeHostname = "hostname"
RegisterTypeCustomName = "customName"
)

View File

@@ -80,7 +80,7 @@ func GetCurrentNode() (Node, error) {
Key: key,
Id: bson.NewObjectId(),
Ip: ip,
Name: ip,
Name: key,
Mac: mac,
Hostname: hostname,
IsMaster: true,

View File

@@ -25,6 +25,7 @@ type Register interface {
GetMac() (string, error)
// 注册节点的Hostname
GetHostname() (string, error)
GetCustomName() (string, error)
}
// ===================== mac 地址注册 =====================
@@ -50,11 +51,50 @@ func (mac *MacRegister) GetHostname() (string, error) {
return getHostname()
}
func (mac *MacRegister) GetCustomName() (string, error) {
return getMac()
}
// ===================== ip 地址注册 =====================
type IpRegister struct {
Ip string
}
func (ip *IpRegister) GetCustomName() (string, error) {
return ip.Ip, nil
}
// ============= 自定义节点名称注册 ==============
type CustomNameRegister struct {
CustomName string
}
func (c *CustomNameRegister) GetType() string {
return "customName"
}
func (c *CustomNameRegister) GetIp() (string, error) {
return getIp()
}
func (c *CustomNameRegister) GetMac() (string, error) {
return getMac()
}
func (c *CustomNameRegister) GetKey() (string, error) {
return c.CustomName, nil
}
func (c *CustomNameRegister) GetHostname() (string, error) {
return getHostname()
}
func (c *CustomNameRegister) GetCustomName() (string, error) {
return c.CustomName, nil
}
// ============================================================
func (ip *IpRegister) GetType() string {
return "ip"
}
@@ -98,6 +138,10 @@ func (h *HostnameRegister) GetHostname() (string, error) {
return getHostname()
}
func (h *HostnameRegister) GetCustomName() (string, error) {
return getHostname()
}
// ===================== 公共方法 =====================
// 获取本机的IP地址
// TODO: 考虑多个IP地址的情况
@@ -158,9 +202,14 @@ var once sync.Once
func GetRegister() Register {
once.Do(func() {
registerType := viper.GetString("server.register.type")
if registerType == constants.RegisterTypeMac {
switch registerType {
case constants.RegisterTypeMac:
register = &MacRegister{}
} else if registerType == constants.RegisterTypeIp {
case constants.RegisterTypeIp:
ip := viper.GetString("server.register.ip")
if ip == "" {
log.Error("server.register.ip is empty")
@@ -170,8 +219,22 @@ func GetRegister() Register {
register = &IpRegister{
Ip: ip,
}
} else if registerType == constants.RegisterTypeHostname {
case constants.RegisterTypeHostname:
register = &HostnameRegister{}
case constants.RegisterTypeCustomName:
customNodeName := viper.GetString("server.register.customNodeName")
if customNodeName == "" {
log.Error("server.register.customNodeName is empty")
debug.PrintStack()
register = nil
}
register = &CustomNameRegister{
CustomName: customNodeName,
}
}
log.Info("register type is :" + reflect.TypeOf(register).String())