|
|
|
@ -8,6 +8,7 @@ import (
|
|
|
|
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
|
|
"github.com/toolkits/pkg/cache"
|
|
|
|
|
"github.com/toolkits/pkg/logger"
|
|
|
|
|
|
|
|
|
|
"github.com/didi/nightingale/src/models"
|
|
|
|
|
)
|
|
|
|
@ -251,6 +252,11 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
bind(c, &f)
|
|
|
|
|
f.Validate()
|
|
|
|
|
|
|
|
|
|
oldFields := make(map[string]interface{}, len(f.Fields))
|
|
|
|
|
for k, v := range f.Fields {
|
|
|
|
|
oldFields[k] = v
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
uniqValue := f.SN
|
|
|
|
|
if f.UniqKey == "ip" {
|
|
|
|
|
uniqValue = f.IP
|
|
|
|
@ -282,10 +288,31 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
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{}{},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
for k := range f.Fields {
|
|
|
|
|
if _, ok := hFixed[k]; !ok {
|
|
|
|
|
delete(f.Fields, k)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if host == nil {
|
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
renderMessage(c, err)
|
|
|
|
|
return
|
|
|
|
@ -318,6 +345,39 @@ func v1HostRegister(c *gin.Context) {
|
|
|
|
|
err = host.Update(f.Fields)
|
|
|
|
|
if err == nil {
|
|
|
|
|
cache.Set(cacheKey, f.Digest, cache.DEFAULT)
|
|
|
|
|
} else {
|
|
|
|
|
logger.Warning(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var objs []models.HostFieldValue
|
|
|
|
|
for k, v := range oldFields {
|
|
|
|
|
if k == "tenant" {
|
|
|
|
|
vStr := v.(string)
|
|
|
|
|
if vStr != "" {
|
|
|
|
|
err = models.HostUpdateTenant([]int64{host.Id}, vStr)
|
|
|
|
|
if err != nil {
|
|
|
|
|
logger.Warning(err)
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = models.ResourceRegister([]models.Host{*host}, vStr)
|
|
|
|
|
if err != nil {
|
|
|
|
|
logger.Warning(err)
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if _, ok := hFixed[k]; !ok {
|
|
|
|
|
tmp := models.HostFieldValue{HostId: host.Id, FieldIdent: k, FieldValue: v.(string)}
|
|
|
|
|
objs = append(objs, tmp)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if len(objs) > 0 {
|
|
|
|
|
err = models.HostFieldValuePuts(host.Id, objs)
|
|
|
|
|
dangerous(err)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
renderMessage(c, err)
|
|
|
|
|