From e61f8b7691e4d66701742546dda37e57797ed455 Mon Sep 17 00:00:00 2001 From: TangBin Date: Thu, 19 Dec 2019 16:56:53 +0800 Subject: [PATCH] add zone service filter --- pkg/compute/models/zones.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkg/compute/models/zones.go b/pkg/compute/models/zones.go index af24bb4ce1..6b6629be94 100644 --- a/pkg/compute/models/zones.go +++ b/pkg/compute/models/zones.go @@ -577,6 +577,17 @@ func (manager *SZoneManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu iconditions := NetworkUsableZoneQueries(q.Field("id"), usableNet, usableVpc) q = q.Filter(sqlchemy.OR(iconditions...)) q = q.Equals("status", api.ZONE_ENABLE) + + service, _ := query.GetString("service") + switch service { + case ElasticcacheManager.KeywordPlural(): + q2 := ElasticcacheSkuManager.Query("zone_id").Distinct() + statusFilter := sqlchemy.OR(sqlchemy.Equals(q2.Field("prepaid_status"), api.SkuStatusAvailable), sqlchemy.Equals(q2.Field("postpaid_status"), api.SkuStatusAvailable)) + skusSQ := q2.Filter(statusFilter).SubQuery() + q = q.In("id", skusSQ) + default: + break + } } managerStr, _ := query.GetString("manager")