未验证 提交 7a185b50 编写于 作者: qd_lm's avatar qd_lm 提交者: GitHub

ams 扩展字段bugfix (#429)

* rdb资源增加volume

* rdb用户增加创建时间

* rdb用户添加时间

* rdb新增添加用户时间代码调整

* test

* 1.agent上报扩展字段 2.rdb标签批量修改

* 代码调整

* 代码调整

* ams扩展代码调整

* test

* test

* 测试

* 错误调整
Co-authored-by: Nalickliming <alickliming@didi.global.com>
上级 0bd9b5b0
...@@ -29,7 +29,7 @@ func (h *Host) Save() error { ...@@ -29,7 +29,7 @@ func (h *Host) Save() error {
return err return err
} }
func HostNew(sn, ip, ident, name, cate string, fields map[string]interface{}) error { func HostNew(sn, ip, ident, name, cate string, fields map[string]interface{}) (*Host, error) {
host := new(Host) host := new(Host)
host.SN = sn host.SN = sn
host.IP = ip host.IP = ip
...@@ -42,22 +42,24 @@ func HostNew(sn, ip, ident, name, cate string, fields map[string]interface{}) er ...@@ -42,22 +42,24 @@ func HostNew(sn, ip, ident, name, cate string, fields map[string]interface{}) er
defer session.Close() defer session.Close()
if err := session.Begin(); err != nil { if err := session.Begin(); err != nil {
return err return nil, err
} }
if _, err := session.Insert(host); err != nil { if _, err := session.Insert(host); err != nil {
session.Rollback() session.Rollback()
return err return nil, err
} }
if len(fields) > 0 { if len(fields) > 0 {
if _, err := session.Table(new(Host)).ID(host.Id).Update(fields); err != nil { if _, err := session.Table(new(Host)).ID(host.Id).Update(fields); err != nil {
session.Rollback() session.Rollback()
return err return nil, err
} }
} }
return session.Commit() err := session.Commit()
return host, err
} }
func (h *Host) Update(fields map[string]interface{}) error { func (h *Host) Update(fields map[string]interface{}) error {
......
...@@ -308,14 +308,41 @@ func v1HostRegister(c *gin.Context) { ...@@ -308,14 +308,41 @@ func v1HostRegister(c *gin.Context) {
} }
if host == nil { if host == nil {
err = models.HostNew(f.SN, f.IP, f.Ident, f.Name, f.Cate, f.Fields) var err error
host, err = models.HostNew(f.SN, f.IP, f.Ident, f.Name, f.Cate, f.Fields)
if err == nil { if err == nil {
cache.Set(cacheKey, f.Digest, cache.DEFAULT) cache.Set(cacheKey, f.Digest, cache.DEFAULT)
} else { } else {
logger.Warning(err) logger.Warning(err)
} }
renderMessage(c, err)
return if host == nil {
msg := "create host failed"
logger.Warningf("%s info:%v", msg, f)
renderMessage(c, msg)
return
}
}
if v, ok := oldFields["tenant"]; ok {
vStr := v.(string)
if vStr != "" {
err = models.HostUpdateTenant([]int64{host.Id}, vStr)
if err != nil {
logger.Error(err)
msg := "update host tenant err"
renderMessage(c, msg)
return
}
err = models.ResourceRegister([]models.Host{*host}, vStr)
if err != nil {
logger.Error(err)
msg := "register resource err"
renderMessage(c, msg)
return
}
}
} }
if host.Tenant != "" { if host.Tenant != "" {
...@@ -346,26 +373,15 @@ func v1HostRegister(c *gin.Context) { ...@@ -346,26 +373,15 @@ func v1HostRegister(c *gin.Context) {
if err == nil { if err == nil {
cache.Set(cacheKey, f.Digest, cache.DEFAULT) cache.Set(cacheKey, f.Digest, cache.DEFAULT)
} else { } else {
logger.Warning(err) logger.Error(err)
msg := "update host err"
renderMessage(c, msg)
return
} }
var objs []models.HostFieldValue var objs []models.HostFieldValue
for k, v := range oldFields { for k, v := range oldFields {
if k == "tenant" { 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 continue
} }
......
...@@ -85,6 +85,8 @@ func consume(queueName string) bool { ...@@ -85,6 +85,8 @@ func consume(queueName string) bool {
} }
size := 0 size := 0
isSleep := false
for d := range msgs { for d := range msgs {
size++ size++
logger.Infof("rabbitmq consume message: %s", d.Body) logger.Infof("rabbitmq consume message: %s", d.Body)
...@@ -93,10 +95,15 @@ func consume(queueName string) bool { ...@@ -93,10 +95,15 @@ func consume(queueName string) bool {
d.Ack(true) d.Ack(true)
} else { } else {
// 底层代码认为不应该ack,说明处理的过程出现问题,可能是DB有问题之类的,sleep一下 // 底层代码认为不应该ack,说明处理的过程出现问题,可能是DB有问题之类的,sleep一下
return true isSleep = true
continue
} }
} }
if isSleep {
return true
}
if size == 0 { if size == 0 {
// MQ里没有消息,就sleep一下,否则上层代码一直在死循环空转,浪费算力 // MQ里没有消息,就sleep一下,否则上层代码一直在死循环空转,浪费算力
return true return true
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册