support filter attached disk

This commit is contained in:
wanyaoqi
2018-09-11 19:44:00 +08:00
parent e03a31a65d
commit 07ef04aae2
+7 -2
View File
@@ -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))