mirror of
https://gitee.com/rainbond/Rainbond.git
synced 2024-11-30 10:48:15 +08:00
[ADD] add interface for manage service ,get all tenants with alloc res and used res from region
This commit is contained in:
parent
478ac0dfca
commit
ee983c788d
@ -29,6 +29,7 @@ type TenantInterface interface {
|
||||
TenantResources(w http.ResponseWriter, r *http.Request)
|
||||
Tenant(w http.ResponseWriter, r *http.Request)
|
||||
ServicesInfo(w http.ResponseWriter, r *http.Request)
|
||||
TenantsWithResource(w http.ResponseWriter, r *http.Request)
|
||||
SumTenants(w http.ResponseWriter, r *http.Request)
|
||||
SingleTenantResources(w http.ResponseWriter, r *http.Request)
|
||||
}
|
||||
|
@ -185,6 +185,8 @@ func (v2 *V2) resourcesRouter() chi.Router {
|
||||
r := chi.NewRouter()
|
||||
r.Post("/tenants", controller.GetManager().TenantResources)
|
||||
r.Get("/tenants/sum", controller.GetManager().SumTenants)
|
||||
//tenants's resource
|
||||
r.Get("/tenants/res", controller.GetManager().TenantsWithResource)
|
||||
return r
|
||||
}
|
||||
|
||||
|
@ -132,6 +132,59 @@ func (t *TenantStruct) TenantResources(w http.ResponseWriter, r *http.Request) {
|
||||
return
|
||||
}
|
||||
|
||||
//TenantsWithResource TenantsWithResource
|
||||
func (t *TenantStruct) TenantsWithResource(w http.ResponseWriter, r *http.Request) {
|
||||
// swagger:operation GET /v2/tenants v2 tenants
|
||||
//
|
||||
// 租户带资源列表
|
||||
//
|
||||
// get tenant resources
|
||||
//
|
||||
// ---
|
||||
// produces:
|
||||
// - application/json
|
||||
// - application/xml
|
||||
//
|
||||
// responses:
|
||||
// default:
|
||||
// schema:
|
||||
// "$ref": "#/responses/commandResponse"
|
||||
// description: 统一返回格式
|
||||
var tr api_model.TenantResources
|
||||
ok := httputil.ValidatorRequestStructAndErrorResponse(r, w, &tr.Body, nil)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
rep, err := handler.GetTenantManager().GetTenants()
|
||||
if err != nil {
|
||||
httputil.ReturnError(r, w, 500, fmt.Sprintf("get tenants error, %v", err))
|
||||
return
|
||||
}
|
||||
var result []*api_model.TenantResource
|
||||
for _,v:=range rep{
|
||||
services, err := handler.GetServiceManager().GetService(v.UUID)
|
||||
if err != nil {
|
||||
httputil.ReturnError(r, w, 500, fmt.Sprintf("get services by tenantID %s error, %v",v.UUID, err))
|
||||
return
|
||||
}
|
||||
totalResInfo, _ := handler.GetTenantManager().TotalMemCPU(services)
|
||||
usedResInfo, _ := handler.GetTenantManager().StatsMemCPU(services)
|
||||
var res api_model.TenantResource
|
||||
res.UUID=v.UUID
|
||||
res.Name=v.Name
|
||||
res.EID=v.EID
|
||||
res.AllocatedCPU=totalResInfo.CPU
|
||||
res.AllocatedMEM=totalResInfo.MEM
|
||||
res.UsedCPU=usedResInfo.CPU
|
||||
res.UsedMEM=usedResInfo.MEM
|
||||
result=append(result,&res)
|
||||
}
|
||||
|
||||
httputil.ReturnSuccess(r, w, result)
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
//SumTenants 统计租户数量
|
||||
func (t *TenantStruct) SumTenants(w http.ResponseWriter, r *http.Request) {
|
||||
// swagger:operation GET /v2/resources/tenants/sum v2 sumTenants
|
||||
|
@ -29,6 +29,7 @@ import (
|
||||
type TenantHandler interface {
|
||||
GetTenants() ([]*dbmodel.Tenants, error)
|
||||
StatsMemCPU(services []*dbmodel.TenantServices) (*api_model.StatsInfo, error)
|
||||
TotalMemCPU(services []*dbmodel.TenantServices) (*api_model.StatsInfo, error)
|
||||
//QueryTsdb(md *api_model.MontiorData) (*tsdbClient.QueryResponse, error)
|
||||
HTTPTsdb(md *api_model.MontiorData) ([]byte, error)
|
||||
GetTenantsResources(tr *api_model.TenantResources) ([]*map[string]interface{}, error)
|
||||
|
@ -91,6 +91,24 @@ func (t *TenantAction) GetTenants() ([]*dbmodel.Tenants, error) {
|
||||
return tenants, err
|
||||
}
|
||||
|
||||
|
||||
//StatsMemCPU StatsMemCPU
|
||||
func (t *TenantAction) TotalMemCPU(services []*dbmodel.TenantServices) (*api_model.StatsInfo, error){
|
||||
cpus := 0
|
||||
mem := 0
|
||||
for _, service := range services {
|
||||
|
||||
logrus.Debugf("service is %s, cpus is %v, mem is %v", service.ID, service.ContainerCPU, service.ContainerMemory)
|
||||
cpus += service.ContainerCPU
|
||||
mem += service.ContainerMemory
|
||||
}
|
||||
si := &api_model.StatsInfo{
|
||||
CPU: cpus,
|
||||
MEM: mem,
|
||||
}
|
||||
return si, nil
|
||||
}
|
||||
|
||||
//StatsMemCPU StatsMemCPU
|
||||
func (t *TenantAction) StatsMemCPU(services []*dbmodel.TenantServices) (*api_model.StatsInfo, error) {
|
||||
cpus := 0
|
||||
|
@ -25,6 +25,21 @@ import (
|
||||
dbmodel "github.com/goodrain/rainbond/pkg/db/model"
|
||||
)
|
||||
|
||||
|
||||
//TenantResource path参数
|
||||
//swagger:parameters getVolumes getDepVolumes
|
||||
type TenantResource struct {
|
||||
AllocatedCPU int `json:"alloc_cpu"`
|
||||
AllocatedMEM int `json:"alloc_memory"`
|
||||
|
||||
UsedCPU int `json:"used_cpu"`
|
||||
UsedMEM int `json:"used_memory"`
|
||||
Name string `json:"name"`
|
||||
UUID string `json:"uuid"`
|
||||
EID string `json:"eid"`
|
||||
}
|
||||
|
||||
|
||||
//ServiceGetCommon path参数
|
||||
//swagger:parameters getVolumes getDepVolumes
|
||||
type ServiceGetCommon struct {
|
||||
|
Loading…
Reference in New Issue
Block a user