rdb资源cate分类统计接口 (#380)

* rdb 资源cate分类统计接口

* 代码调节

Co-authored-by: alickliming <alickliming@didi.global.com>
This commit is contained in:
alick-liming 2020-11-05 14:06:57 +08:00 committed by GitHub
parent 79501b46fe
commit 633f224be6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 0 deletions

View File

@ -116,6 +116,7 @@ func Config(r *gin.Engine) {
userLogin.POST("/node/:id/roles", rolesUnderNodePost)
userLogin.DELETE("/node/:id/roles", rolesUnderNodeDel)
userLogin.GET("/node/:id/resources", resourceUnderNodeGet)
userLogin.GET("/node/:id/resources/cate-count", renderNodeResourcesCountByCate)
userLogin.POST("/node/:id/resources/bind", resourceBindNode)
userLogin.POST("/node/:id/resources/unbind", resourceUnbindNode)
userLogin.PUT("/node/:id/resources/note", resourceUnderNodeNotePut)

View File

@ -351,3 +351,54 @@ func v1ResourcesUnregisterPost(c *gin.Context) {
dangerous(models.ResourceUnregister(uuids))
renderMessage(c, nil)
}
type nodeResourcesCountResp struct {
Name string `json:"name"`
Count int `json:"count"`
}
func renderNodeResourcesCountByCate(c *gin.Context) {
needSourceList := []string{"physical", "virtual", "redis", "mongo", "mysql"}
nodeId := urlParamInt64(c, "id")
node := Node(nodeId)
leadIds, err := node.LeafIds()
dangerous(err)
limit := 10000
query := ""
batch := ""
field := "ident"
ress, err := models.ResourceUnderNodeGets(leadIds, query, batch, field, limit, 0)
dangerous(err)
aggDat := make(map[string]int, len(ress))
for _, res := range ress {
cate := res.Cate
if cate != "" {
if _, ok := aggDat[cate]; !ok {
aggDat[cate] = 0
}
aggDat[cate]++
}
}
for _, need := range needSourceList {
if _, ok := aggDat[need]; !ok {
aggDat[need] = 0
}
}
var list []*nodeResourcesCountResp
for n, c := range aggDat {
ns := new(nodeResourcesCountResp)
ns.Name = n
ns.Count = c
list = append(list, ns)
}
renderData(c, list, nil)
}