From 4edc4832098c7914d60f04cada0dc2fc2d471ed2 Mon Sep 17 00:00:00 2001 From: wanyaoqi <18528551+wanyaoqi@users.noreply.github.com> Date: Wed, 26 Mar 2025 15:07:13 +0800 Subject: [PATCH] fix(region): guestdisk list add auto reset column (#22346) --- pkg/apis/compute/disk.go | 2 ++ pkg/apis/compute/guest_disk.go | 2 ++ pkg/apis/compute/guests.go | 1 + pkg/compute/models/disks.go | 6 ++++++ pkg/compute/models/guest_queries.go | 1 + pkg/compute/models/guestdisks.go | 1 + 6 files changed, 13 insertions(+) diff --git a/pkg/apis/compute/disk.go b/pkg/apis/compute/disk.go index 8999f4d82b..e44494fef7 100644 --- a/pkg/apis/compute/disk.go +++ b/pkg/apis/compute/disk.go @@ -261,6 +261,8 @@ type DiskUpdateInput struct { // 磁盘类型 DiskType string `json:"disk_type"` + // 关机自动重置 + AutoReset *bool `json:"auto_reset"` } type DiskSaveInput struct { diff --git a/pkg/apis/compute/guest_disk.go b/pkg/apis/compute/guest_disk.go index e1ec726bcd..afc63ad4ee 100644 --- a/pkg/apis/compute/guest_disk.go +++ b/pkg/apis/compute/guest_disk.go @@ -34,6 +34,8 @@ type GuestDiskDetails struct { // 磁盘类型 // example: data DiskType string `json:"disk_type"` + // 关机自动重置 + AutoReset bool `json:"auto_reset"` // 介质类型 // example: ssd MediumType string `json:"medium_type"` diff --git a/pkg/apis/compute/guests.go b/pkg/apis/compute/guests.go index 0929290c06..bbdb2ffeb6 100644 --- a/pkg/apis/compute/guests.go +++ b/pkg/apis/compute/guests.go @@ -359,6 +359,7 @@ type GuestDiskInfo struct { Driver string `json:"driver"` CacheMode string `json:"cache_mode"` AioMode string `json:"aio_mode"` + AutoReset bool `json:"auto_reset"` MediumType string `json:"medium_type"` StorageType string `json:"storage_type"` Iops int `json:"iops"` diff --git a/pkg/compute/models/disks.go b/pkg/compute/models/disks.go index 6274a8cf87..4fcd5c545d 100644 --- a/pkg/compute/models/disks.go +++ b/pkg/compute/models/disks.go @@ -432,6 +432,12 @@ func (self *SDisk) ValidateUpdateData(ctx context.Context, userCred mcclient.Tok } } + if input.AutoReset != nil && *input.AutoReset != self.AutoReset { + if guest := self.GetGuest(); guest != nil && guest.Status != api.VM_READY { + return input, httperrors.NewBadRequestError("Can't set disk auto_reset on guest status %s", guest.Status) + } + } + storage, _ := self.GetStorage() if storage == nil { return input, httperrors.NewNotFoundError("failed to find storage for disk %s", self.Name) diff --git a/pkg/compute/models/guest_queries.go b/pkg/compute/models/guest_queries.go index a78d7d8657..9f371ff683 100644 --- a/pkg/compute/models/guest_queries.go +++ b/pkg/compute/models/guest_queries.go @@ -379,6 +379,7 @@ func fetchGuestDisksInfo(guestIds []string) map[string][]api.GuestDiskInfo { guestdisks.Field("driver"), guestdisks.Field("cache_mode"), guestdisks.Field("aio_mode"), + disks.Field("auto_reset"), storages.Field("medium_type"), storages.Field("storage_type"), guestdisks.Field("iops"), diff --git a/pkg/compute/models/guestdisks.go b/pkg/compute/models/guestdisks.go index a5b91a9dc5..67f58c26ff 100644 --- a/pkg/compute/models/guestdisks.go +++ b/pkg/compute/models/guestdisks.go @@ -147,6 +147,7 @@ func (manager *SGuestdiskManager) FetchCustomizeColumns( rows[i].Status = disk.Status rows[i].DiskSize = disk.DiskSize rows[i].DiskType = disk.DiskType + rows[i].AutoReset = disk.AutoReset storage, _ := disk.GetStorage() if storage != nil { rows[i].StorageType = storage.StorageType