diff --git a/backend/conf/config.yml b/backend/conf/config.yml index 686865f9..72e6e4ec 100644 --- a/backend/conf/config.yml +++ b/backend/conf/config.yml @@ -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" diff --git a/backend/constants/register.go b/backend/constants/register.go index ad38e7a3..4ed1e396 100644 --- a/backend/constants/register.go +++ b/backend/constants/register.go @@ -4,4 +4,5 @@ const ( RegisterTypeMac = "mac" RegisterTypeIp = "ip" RegisterTypeHostname = "hostname" + RegisterTypeCustomName = "customName" ) diff --git a/backend/model/node.go b/backend/model/node.go index 4d299f51..715be30f 100644 --- a/backend/model/node.go +++ b/backend/model/node.go @@ -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, diff --git a/backend/services/register/register.go b/backend/services/register/register.go index 98e70707..9eedf0e7 100644 --- a/backend/services/register/register.go +++ b/backend/services/register/register.go @@ -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())