|
|
|
@ -246,6 +246,20 @@ func (f hostRegisterForm) Validate() {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// mapKeyClear map key clear
|
|
|
|
|
func mapKeyClear(src map[string]interface{}, save map[string]struct{}) {
|
|
|
|
|
var dels []string
|
|
|
|
|
for k := range src {
|
|
|
|
|
if _, ok := save[k]; !ok {
|
|
|
|
|
dels = append(dels, k)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for i := 0; i < len(dels); i++ {
|
|
|
|
|
delete(src, dels[i])
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// agent主动上报注册信息
|
|
|
|
|
func v1HostRegister(c *gin.Context) {
|
|
|
|
|
var f hostRegisterForm
|
|
|
|
@ -283,47 +297,52 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
renderMessage(c, nil)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if err.Error() != cache.ErrCacheMiss.Error() {
|
|
|
|
|
msg := "get cache err"
|
|
|
|
|
logger.Error(err)
|
|
|
|
|
renderMessage(c, msg)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
host, err := models.HostGet(f.UniqKey+" = ?", uniqValue)
|
|
|
|
|
dangerous(err)
|
|
|
|
|
|
|
|
|
|
hFixed := map[string]struct{}{
|
|
|
|
|
"sn": struct{}{},
|
|
|
|
|
"ip": struct{}{},
|
|
|
|
|
"ident": struct{}{},
|
|
|
|
|
"name": struct{}{},
|
|
|
|
|
"note": struct{}{},
|
|
|
|
|
"cate": struct{}{},
|
|
|
|
|
"clock": struct{}{},
|
|
|
|
|
"cpu": struct{}{},
|
|
|
|
|
"mem": struct{}{},
|
|
|
|
|
"disk": struct{}{},
|
|
|
|
|
"cpu": struct{}{},
|
|
|
|
|
"mem": struct{}{},
|
|
|
|
|
"disk": struct{}{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var dels []string
|
|
|
|
|
for k := range f.Fields {
|
|
|
|
|
if _, ok := hFixed[k]; !ok {
|
|
|
|
|
dels = append(dels, k)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for i := 0; i < len(dels); i++ {
|
|
|
|
|
delete(f.Fields, dels[i])
|
|
|
|
|
}
|
|
|
|
|
mapKeyClear(f.Fields, hFixed)
|
|
|
|
|
|
|
|
|
|
if host == nil {
|
|
|
|
|
var err error
|
|
|
|
|
msg := "create host failed"
|
|
|
|
|
host, err = models.HostNew(f.SN, f.IP, f.Ident, f.Name, f.Cate, f.Fields)
|
|
|
|
|
if err == nil {
|
|
|
|
|
cache.Set(cacheKey, f.Digest, cache.DEFAULT)
|
|
|
|
|
} else {
|
|
|
|
|
logger.Warning(err)
|
|
|
|
|
if err != nil {
|
|
|
|
|
logger.Error(err)
|
|
|
|
|
renderMessage(c, msg)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if host == nil {
|
|
|
|
|
msg := "create host failed"
|
|
|
|
|
logger.Warningf("%s info:%v", msg, f)
|
|
|
|
|
logger.Errorf("%s, report info:%v", msg, f)
|
|
|
|
|
renderMessage(c, msg)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
f.Fields["sn"] = f.SN
|
|
|
|
|
f.Fields["ip"] = f.IP
|
|
|
|
|
f.Fields["ident"] = f.Ident
|
|
|
|
|
f.Fields["name"] = f.Name
|
|
|
|
|
f.Fields["cate"] = f.Cate
|
|
|
|
|
f.Fields["clock"] = time.Now().Unix()
|
|
|
|
|
|
|
|
|
|
err = host.Update(f.Fields)
|
|
|
|
|
if err != nil {
|
|
|
|
|
logger.Error(err)
|
|
|
|
|
msg := "update host err"
|
|
|
|
|
renderMessage(c, msg)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
@ -372,6 +391,8 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
res.Name = f.Name
|
|
|
|
|
res.Cate = f.Cate
|
|
|
|
|
|
|
|
|
|
mapKeyClear(f.Fields, hFixed)
|
|
|
|
|
|
|
|
|
|
js, err := json.Marshal(f.Fields)
|
|
|
|
|
dangerous(err)
|
|
|
|
|
|
|
|
|
@ -380,23 +401,6 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
dangerous(res.Update("ident", "name", "cate", "extend"))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
f.Fields["sn"] = f.SN
|
|
|
|
|
f.Fields["ip"] = f.IP
|
|
|
|
|
f.Fields["ident"] = f.Ident
|
|
|
|
|
f.Fields["name"] = f.Name
|
|
|
|
|
f.Fields["cate"] = f.Cate
|
|
|
|
|
f.Fields["clock"] = time.Now().Unix()
|
|
|
|
|
|
|
|
|
|
err = host.Update(f.Fields)
|
|
|
|
|
if err == nil {
|
|
|
|
|
cache.Set(cacheKey, f.Digest, cache.DEFAULT)
|
|
|
|
|
} else {
|
|
|
|
|
logger.Error(err)
|
|
|
|
|
msg := "update host err"
|
|
|
|
|
renderMessage(c, msg)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var objs []models.HostFieldValue
|
|
|
|
|
for k, v := range oldFields {
|
|
|
|
|
if k == "tenant" {
|
|
|
|
@ -414,5 +418,13 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
dangerous(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
renderMessage(c, err)
|
|
|
|
|
err = cache.Set(cacheKey, f.Digest, cache.DEFAULT)
|
|
|
|
|
if err != nil {
|
|
|
|
|
msg := "set cache err"
|
|
|
|
|
logger.Error(err)
|
|
|
|
|
renderMessage(c, msg)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
renderMessage(c, nil)
|
|
|
|
|
}
|
|
|
|
|