From a9ea3839d025d9c46479fb282af9eb2a690e8cf7 Mon Sep 17 00:00:00 2001 From: Qu Xuan Date: Mon, 30 Nov 2020 21:15:37 +0800 Subject: [PATCH] feat(region): add server delete options --- pkg/apis/compute/guests.go | 22 ++++++++++++++++++++++ pkg/compute/models/guests.go | 15 +++------------ 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/pkg/apis/compute/guests.go b/pkg/apis/compute/guests.go index a1d97a9bbf..ba8a1c5434 100644 --- a/pkg/apis/compute/guests.go +++ b/pkg/apis/compute/guests.go @@ -482,3 +482,25 @@ type ServerSaveImageInput struct { // swagger: ignore ImageId string } + +type ServerDeleteInput struct { + // 是否越过回收站直接删除 + // default: false + OverridePendingDelete bool + + // 是否仅删除本地资源 + // default: false + Purge bool + + // 是否删除快照 + // default: false + DeleteSnapshots bool + + // 是否删除关联的EIP + // default: false + DeleteEip bool + + // 是否删除关联的数据盘 + // default: false + DeleteDisks bool +} diff --git a/pkg/compute/models/guests.go b/pkg/compute/models/guests.go index 0ee72caa28..dc56da0608 100644 --- a/pkg/compute/models/guests.go +++ b/pkg/compute/models/guests.go @@ -3823,18 +3823,9 @@ func (self *SGuest) AllowDeleteItem(ctx context.Context, userCred mcclient.Token return self.IsOwner(userCred) || db.IsAdminAllowDelete(userCred, self) } -func (self *SGuest) CustomizeDelete(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) error { - var ( - overridePendingDelete = false - purge = false - deleteSnapshots = false - ) - if query != nil { - overridePendingDelete = jsonutils.QueryBoolean(query, "override_pending_delete", false) - purge = jsonutils.QueryBoolean(query, "purge", false) - deleteSnapshots = jsonutils.QueryBoolean(query, "delete_snapshots", false) - } - return self.StartDeleteGuestTask(ctx, userCred, "", purge, overridePendingDelete, deleteSnapshots) +// 删除虚拟机 +func (self *SGuest) CustomizeDelete(ctx context.Context, userCred mcclient.TokenCredential, query api.ServerDeleteInput, data jsonutils.JSONObject) error { + return self.StartDeleteGuestTask(ctx, userCred, "", query.Purge, query.OverridePendingDelete, query.DeleteSnapshots) } func (self *SGuest) DeleteAllDisksInDB(ctx context.Context, userCred mcclient.TokenCredential) error {