fix: disk backup filter by server_id (#25346)

Co-authored-by: Qiu Jian <qiujian@yunionyun.com>
This commit is contained in:
Jian Qiu
2026-08-15 09:38:15 +08:00
committed by GitHub
parent d50f3d8e7f
commit 21ec4f7f5c
2 changed files with 13 additions and 0 deletions
+2
View File
@@ -106,6 +106,8 @@ type DiskBackupListInput struct {
IsInstanceBackup *bool `json:"is_instance_backup"`
// 按硬盘名称排序
OrderByDiskName string `json:"order_by_disk_name"`
// description: 主机ID
ServerId string `json:"server_id"`
}
type DiskBackupDetails struct {
+11
View File
@@ -139,6 +139,17 @@ func (dm *SDiskBackupManager) ListItemFilter(ctx context.Context, q *sqlchemy.SQ
q = q.Join(insjsq, sqlchemy.Equals(q.Field("id"), insjsq.Field("disk_backup_id")))
}
}
if len(input.ServerId) > 0 {
iG, err := GuestManager.FetchByIdOrName(ctx, userCred, input.ServerId)
if err != nil && err == sql.ErrNoRows {
return nil, httperrors.NewNotFoundError("guest %s not found", input.ServerId)
} else if err != nil {
return nil, errors.Wrap(err, "fetch guest")
}
guest := iG.(*SGuest)
gdq := GuestdiskManager.Query("disk_id").Equals("guest_id", guest.Id).SubQuery()
q = q.In("disk_id", gdq)
}
return q, nil
}