From 07ef04aae26c05f008ae8c30d5b696a686d5e29c Mon Sep 17 00:00:00 2001 From: wanyaoqi Date: Tue, 11 Sep 2018 19:44:00 +0800 Subject: [PATCH] support filter attached disk --- pkg/compute/models/disks.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index e68a969991..17f6cd786e 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -104,11 +104,16 @@ func (manager *SDiskManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQu if !ok { return nil, fmt.Errorf("Invalid querystring formst: %v", query) } - if jsonutils.QueryBoolean(query, "unused", false) { + if query.Contains("unused") { guestdisks := GuestdiskManager.Query().SubQuery() sq := guestdisks.Query(guestdisks.Field("disk_id")) - q = q.Filter(sqlchemy.NotIn(q.Field("id"), sq)) + if jsonutils.QueryBoolean(query, "unused", false) { + q = q.Filter(sqlchemy.NotIn(q.Field("id"), sq)) + } else { + q = q.Filter(sqlchemy.In(q.Field("id"), sq)) + } } + storages := StorageManager.Query().SubQuery() if jsonutils.QueryBoolean(query, "share", false) { sq := storages.Query(storages.Field("id")).Filter(sqlchemy.NotIn(storages.Field("storage_type"), STORAGE_LOCAL_TYPES))