From 9e890a38fd1e9af2981acc8695a10aa2bc4a697a Mon Sep 17 00:00:00 2001 From: ioito Date: Tue, 20 Aug 2019 20:11:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E9=81=BF=E5=85=8Dprovider=E6=B1=A1?= =?UTF-8?q?=E6=9F=93sql,=E5=AF=BC=E8=87=B4=E6=9F=A5=E8=AF=A2=E7=BB=93?= =?UTF-8?q?=E6=9E=9C=E4=B8=BA=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/models/skus.go | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/pkg/compute/models/skus.go b/pkg/compute/models/skus.go index 371a7ceba3..0edbed7cb5 100644 --- a/pkg/compute/models/skus.go +++ b/pkg/compute/models/skus.go @@ -710,13 +710,7 @@ func (self *SServerSku) GetZoneExternalId() (string, error) { } func (manager *SServerSkuManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQuery, userCred mcclient.TokenCredential, query jsonutils.JSONObject) (*sqlchemy.SQuery, error) { - q, err := manager.SStatusStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, query) - if err != nil { - return nil, err - } - publicCloud := false - provider, _ := query.GetString("provider") cloudEnvStr, _ := query.GetString("cloud_env") if cloudEnvStr == api.CLOUD_ENV_PUBLIC_CLOUD || jsonutils.QueryBoolean(query, "public_cloud", false) || jsonutils.QueryBoolean(query, "is_public", false) { @@ -742,17 +736,25 @@ func (manager *SServerSkuManager) ListItemFilter(ctx context.Context, q *sqlchem ) } + data := query.(*jsonutils.JSONDict) providers := jsonutils.GetQueryStringArray(query, "provider") if len(providers) > 0 { q = q.Filter(sqlchemy.In(q.Field("provider"), providers)) + if len(providers) == 1 && utils.IsInStringArray(providers[0], cloudprovider.GetPublicProviders()) { + publicCloud = true + } + data.Remove("provider") } + brands := jsonutils.GetQueryStringArray(query, "brand") if len(brands) > 0 { q = q.Filter(sqlchemy.In(q.Field("brand"), brands)) + data.Remove("brand") } - if utils.IsInStringArray(provider, cloudprovider.GetPublicProviders()) { - publicCloud = true + q, err := manager.SStatusStandaloneResourceBaseManager.ListItemFilter(ctx, q, userCred, data) + if err != nil { + return nil, err } if usable, _ := query.Bool("usable"); usable { @@ -760,7 +762,6 @@ func (manager *SServerSkuManager) ListItemFilter(ctx context.Context, q *sqlchem q = q.IsTrue("enabled") } - data := query.(*jsonutils.JSONDict) if data.Contains("zone") { zoneStr, _ := data.GetString("zone") _zone, err := ZoneManager.FetchByIdOrName(userCred, zoneStr)