diff --git a/src/model/collect.go b/src/model/collect.go index 61bb9f5c692cb989e15b01c55dfcc749c7e6d679..77e0bcb3c71523580df26e07e733e897fe45efc2 100644 --- a/src/model/collect.go +++ b/src/model/collect.go @@ -458,10 +458,42 @@ func GetCollectById(collectType string, cid int64) (interface{}, error) { } } -func GetCollectByName(collectType string, name string) (interface{}, error) { - var collect interface{} - _, err := DB["mon"].Table(collectType+"_collect").Where("name = ?", name).Get(&collect) - return collect, err +func GetCollectByNameAndNid(collectType string, name string, nid int64) (interface{}, error) { + switch collectType { + case "port": + collect := new(PortCollect) + has, err := DB["mon"].Where("name = ? and nid = ?", name, nid).Get(collect) + if !has { + return nil, err + } + return collect, err + case "proc": + collect := new(ProcCollect) + has, err := DB["mon"].Where("name = ? and nid = ?", name, nid).Get(collect) + if !has { + return nil, err + } + return collect, err + case "log": + collect := new(LogCollect) + has, err := DB["mon"].Where("name = ? and nid = ?", name, nid).Get(collect) + if !has { + return nil, err + } + collect.Decode() + return collect, err + case "plugin": + collect := new(PluginCollect) + has, err := DB["mon"].Where("name = ? and nid = ?", name, nid).Get(collect) + if !has { + return nil, err + } + return collect, err + + default: + return nil, fmt.Errorf("采集类型不合法") + } + return nil, nil } func DeleteCollectById(collectType, creator string, cid int64) error { diff --git a/src/modules/monapi/http/routes/collect.go b/src/modules/monapi/http/routes/collect.go index 7388920c955d9e75e145ced713050c02e55105c7..c129a90918d3ec55b5503e5e7efc0e424e2ec342 100644 --- a/src/modules/monapi/http/routes/collect.go +++ b/src/modules/monapi/http/routes/collect.go @@ -48,10 +48,12 @@ func collectPost(c *gin.Context) { nid := collect.Nid name := collect.Name - old, _ := model.GetCollectByName(obj.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid { + old, err := model.GetCollectByNameAndNid(obj.Type, name, nid) + errors.Dangerous(err) + if old != nil { errors.Bomb("同节点下策略名称 %s 已存在", name) } + errors.Dangerous(model.CreateCollect(obj.Type, creator, collect)) case "proc": @@ -73,8 +75,9 @@ func collectPost(c *gin.Context) { nid := collect.Nid name := collect.Name - old, _ := model.GetCollectByName(obj.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid { + old, err := model.GetCollectByNameAndNid(obj.Type, name, nid) + errors.Dangerous(err) + if old != nil { errors.Bomb("同节点下策略名称 %s 已存在", name) } errors.Dangerous(model.CreateCollect(obj.Type, creator, collect)) @@ -98,10 +101,12 @@ func collectPost(c *gin.Context) { nid := collect.Nid name := collect.Name - old, _ := model.GetCollectByName(obj.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid { + old, err := model.GetCollectByNameAndNid(obj.Type, name, nid) + errors.Dangerous(err) + if old != nil { errors.Bomb("同节点下策略名称 %s 已存在", name) } + errors.Dangerous(model.CreateCollect(obj.Type, creator, collect)) case "plugin": @@ -123,10 +128,12 @@ func collectPost(c *gin.Context) { nid := collect.Nid name := collect.Name - old, _ := model.GetCollectByName(obj.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid { + old, err := model.GetCollectByNameAndNid(obj.Type, name, nid) + errors.Dangerous(err) + if old != nil { errors.Bomb("同节点下策略名称 %s 已存在", name) } + errors.Dangerous(model.CreateCollect(obj.Type, creator, collect)) default: @@ -208,9 +215,9 @@ func collectPut(c *gin.Context) { collect.Creator = creator collect.LastUpdator = creator - old, _ := model.GetCollectByName(recv.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid && - tmpId != collect.Id { + old, err := model.GetCollectByNameAndNid(recv.Type, name, nid) + errors.Dangerous(err) + if old != nil && old.(*model.PortCollect).Id != tmpId { errors.Bomb("同节点下策略名称 %s 已存在", name) } @@ -247,9 +254,9 @@ func collectPut(c *gin.Context) { collect.Creator = creator collect.LastUpdator = creator - old, _ := model.GetCollectByName(recv.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid && - tmpId != collect.Id { + old, err := model.GetCollectByNameAndNid(recv.Type, name, nid) + errors.Dangerous(err) + if old != nil && old.(*model.ProcCollect).Id != tmpId { errors.Bomb("同节点下策略名称 %s 已存在", name) } @@ -287,9 +294,9 @@ func collectPut(c *gin.Context) { collect.Creator = creator collect.LastUpdator = creator - old, _ := model.GetCollectByName(recv.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid && - tmpId != collect.Id { + old, err := model.GetCollectByNameAndNid(recv.Type, name, nid) + errors.Dangerous(err) + if old != nil && old.(*model.LogCollect).Id != tmpId { errors.Bomb("同节点下策略名称 %s 已存在", name) } @@ -326,9 +333,9 @@ func collectPut(c *gin.Context) { collect.Creator = creator collect.LastUpdator = creator - old, _ := model.GetCollectByName(recv.Type, name) - if old != nil && int64(old.(map[string]interface{})["nid"].(float64)) == nid && - tmpId != collect.Id { + old, err := model.GetCollectByNameAndNid(recv.Type, name, nid) + errors.Dangerous(err) + if old != nil && old.(*model.PluginCollect).Id != tmpId { errors.Bomb("同节点下策略名称 %s 已存在", name) }