Merge pull request #4119 from swordqiu/hotfix/qj-image-quota-list-not-found

fix: 1. image-quota-list 404 not found 2. usage nil pointer panic
This commit is contained in:
yunion-ci-robot
2019-12-12 18:01:00 +08:00
committed by GitHub
4 changed files with 48 additions and 5 deletions
+37 -1
View File
@@ -291,11 +291,47 @@ func init() {
}
R(&CleanPendingUsageOptions{}, "clean-pending-usage", "Clean pending usage for project or domain", func(s *mcclient.ClientSession, args *CleanPendingUsageOptions) error {
params := jsonutils.Marshal(args)
log.Debugf("%s", params)
_, err := modules.Quotas.DoCleanPendingUsage(s, params)
if err != nil {
return err
}
return nil
})
R(&CleanPendingUsageOptions{}, "clean-region-pending-usage", "Clean pending usage for project or domain", func(s *mcclient.ClientSession, args *CleanPendingUsageOptions) error {
params := jsonutils.Marshal(args)
_, err := modules.RegionQuotas.DoCleanPendingUsage(s, params)
if err != nil {
return err
}
return nil
})
R(&CleanPendingUsageOptions{}, "clean-zone-pending-usage", "Clean pending usage for project or domain", func(s *mcclient.ClientSession, args *CleanPendingUsageOptions) error {
params := jsonutils.Marshal(args)
_, err := modules.ZoneQuotas.DoCleanPendingUsage(s, params)
if err != nil {
return err
}
return nil
})
R(&CleanPendingUsageOptions{}, "clean-project-pending-usage", "Clean pending usage for project or domain", func(s *mcclient.ClientSession, args *CleanPendingUsageOptions) error {
params := jsonutils.Marshal(args)
_, err := modules.ProjectQuotas.DoCleanPendingUsage(s, params)
if err != nil {
return err
}
return nil
})
R(&CleanPendingUsageOptions{}, "clean-image-pending-usage", "Clean pending usage for project or domain", func(s *mcclient.ClientSession, args *CleanPendingUsageOptions) error {
params := jsonutils.Marshal(args)
_, err := modules.ImageQuotas.DoCleanPendingUsage(s, params)
if err != nil {
return err
}
return nil
})
}
+3
View File
@@ -30,6 +30,9 @@ func rangeObjectsFilter(q *sqlchemy.SQuery, rangeObjs []db.IStandaloneModel, reg
}
func rangeObjFilter(q *sqlchemy.SQuery, rangeObj db.IStandaloneModel, regionField sqlchemy.IQueryField, zoneField sqlchemy.IQueryField, managerField sqlchemy.IQueryField) *sqlchemy.SQuery {
if rangeObj == nil {
return q
}
kw := rangeObj.Keyword()
switch kw {
case "zone":
+5 -1
View File
@@ -116,7 +116,11 @@ func rangeObjHandler(
providers := json.GetQueryStringArray(query, "provider")
brands := json.GetQueryStringArray(query, "brand")
cloudEnv, _ := query.GetString("cloud_env")
usage, err := reporter(scope, ownerId, isOwner, []db.IStandaloneModel{obj}, hostTypes, providers, brands, cloudEnv)
var rangeObjs []db.IStandaloneModel
if obj != nil {
rangeObjs = []db.IStandaloneModel{obj}
}
usage, err := reporter(scope, ownerId, isOwner, rangeObjs, hostTypes, providers, brands, cloudEnv)
if err != nil {
httperrors.GeneralServerError(w, err)
return
+3 -3
View File
@@ -79,9 +79,9 @@ func (this *QuotaManager) GetQuotaList(s *mcclient.ClientSession, params jsonuti
var reqUrl string
domainId := jsonutils.GetAnyString(params, []string{"domain", "project_domain", "domain_id", "project_domain_id"})
if len(domainId) > 0 {
reqUrl = "/quotas/projects?project_domain=" + domainId
reqUrl = fmt.Sprintf("%s/projects?project_domain=%s", this.URLPath(), domainId)
} else {
reqUrl = "/quotas/domains"
reqUrl = fmt.Sprintf("%s/domains", this.URLPath())
}
computeQuotaList, err := modulebase.List(this.ResourceManager, s, reqUrl, this.KeywordPlural)
if err != nil {
@@ -148,7 +148,7 @@ func init() {
[]string{})}
registerCompute(&ZoneQuotas)
ImageQuotas = QuotaManager{NewImageManager("quota", "quotas",
ImageQuotas = QuotaManager{NewImageManager("image_quota", "image_quotas",
quotaColumns,
[]string{})}
// registerV2(&ImageQuotas)