From e343ae3b5eb5a8bf71f33cd946fbeaa5b69b0201 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Fri, 24 Nov 2023 11:51:52 +0800 Subject: [PATCH] fix(region): distinct os dist field (#18767) --- pkg/compute/models/guests.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 53121cad9a..f13b7a2e48 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -780,6 +780,13 @@ func (manager *SGuestManager) QueryDistinctExtraField(q *sqlchemy.SQuery, field if err == nil { return q, nil } + if field == "os_dist" { + metaQuery := db.Metadata.Query("obj_id", "value").Equals("key", "os_distribution").SubQuery() + q = q.AppendField(metaQuery.Field("value", field)).Distinct() + q = q.Join(metaQuery, sqlchemy.Equals(q.Field("id"), metaQuery.Field("obj_id"))) + q.GroupBy(metaQuery.Field("value")) + return q, nil + } guestnets := GuestnetworkManager.Query("guest_id", "network_id").SubQuery() q = q.LeftJoin(guestnets, sqlchemy.Equals(q.Field("id"), guestnets.Field("guest_id"))) q, err = manager.SNetworkResourceBaseManager.QueryDistinctExtraField(q, field)