fix(region): show status info with list api (#20944)

This commit is contained in:
屈轩
2024-08-07 11:54:05 +08:00
committed by GitHub
parent d79217059b
commit e02ce67cf6
2 changed files with 30 additions and 2 deletions
+22
View File
@@ -112,6 +112,28 @@ func (manager *SVirtualResourceBaseManager) GetPropertyStatistics(ctx context.Co
return result, nil
}
func (manager *SVirtualResourceBaseManager) CustomizedTotalCount(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, totalQ *sqlchemy.SQuery) (int, jsonutils.JSONObject, error) {
results := struct {
apis.TotalCountBase
StatusInfo []apis.StatusStatisticStatusInfo
}{}
var err error
results.Count, err = totalQ.CountWithError()
if err != nil {
return -1, nil, errors.Wrapf(err, "CountWithError")
}
totalSQ := totalQ.ResetFields().SubQuery()
statQ := totalSQ.Query(totalSQ.Field("status"), sqlchemy.COUNT("total_count", totalSQ.Field("id")), sqlchemy.SUM("pending_deleted_count", totalSQ.Field("pending_deleted")))
statQ = statQ.GroupBy(totalSQ.Field("status"))
err = statQ.All(&results.StatusInfo)
if err != nil {
return -1, nil, errors.Wrapf(err, "status query")
}
return results.Count, jsonutils.Marshal(results), nil
}
func (manager *SVirtualResourceBaseManager) GetPropertyProjectStatistics(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) ([]apis.ProjectStatistic, error) {
im, ok := manager.GetVirtualObject().(IModelManager)
if !ok {
+8 -2
View File
@@ -6849,9 +6849,15 @@ func (manager *SGuestManager) CustomizedTotalCount(ctx context.Context, userCred
return -1, nil, errors.Wrap(err, "SGuestManager query total_disk")
}
// log.Debugf("CustomizedTotalCount %s", jsonutils.Marshal(results))
_, statusInfo, err := manager.SVirtualResourceBaseManager.CustomizedTotalCount(ctx, userCred, query, totalQ)
if err != nil {
return -1, nil, errors.Wrapf(err, "virt.CustomizedTotalCount")
}
return results.Count, jsonutils.Marshal(results), nil
ret := jsonutils.Marshal(results).(*jsonutils.JSONDict)
ret.Update(statusInfo)
return results.Count, ret, nil
}
func (guest *SGuest) IsSriov() bool {