From 33f7ca168143b892d379185f1463dced0cd26e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Wed, 19 Mar 2025 10:13:48 +0800 Subject: [PATCH] fix(region): add post delete hook (#22302) --- pkg/cloudcommon/db/db_dispatcher.go | 3 +++ pkg/cloudcommon/db/interface.go | 1 + pkg/cloudcommon/db/modelbase.go | 4 ++++ pkg/mcclient/options/compute/servers.go | 1 + pkg/util/logclient/consts.go | 1 + 5 files changed, 10 insertions(+) diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index 8191d09e67..284a2eab93 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -1980,6 +1980,9 @@ func deleteItem(manager IModelManager, model IModel, ctx context.Context, userCr // 删除后钩子 model.PostDelete(ctx, userCred) + if err := model.GetModelManager().GetExtraHook().AfterPostDelete(ctx, userCred, model, query); err != nil { + logclient.AddActionLogWithContext(ctx, model, logclient.ACT_POST_DELETE_HOOK, err, userCred, false) + } // 避免设置删除状态没有正常返回 jsonutils.Update(details, model) diff --git a/pkg/cloudcommon/db/interface.go b/pkg/cloudcommon/db/interface.go index 9791e8839b..e7643f3ee6 100644 --- a/pkg/cloudcommon/db/interface.go +++ b/pkg/cloudcommon/db/interface.go @@ -152,6 +152,7 @@ type IModelManager interface { type IModelManagerExtraHook interface { AfterPostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, model IModel, query jsonutils.JSONObject, data jsonutils.JSONObject) error + AfterPostDelete(ctx context.Context, userCred mcclient.TokenCredential, model IModel, query jsonutils.JSONObject) error } type IModel interface { diff --git a/pkg/cloudcommon/db/modelbase.go b/pkg/cloudcommon/db/modelbase.go index 7215f7d9cb..925fe3dc48 100644 --- a/pkg/cloudcommon/db/modelbase.go +++ b/pkg/cloudcommon/db/modelbase.go @@ -876,3 +876,7 @@ func NewEmptyExtraHook() *SEmptyExtraHook { func (e SEmptyExtraHook) AfterPostCreate(ctx context.Context, userCred mcclient.TokenCredential, ownerId mcclient.IIdentityProvider, model IModel, query jsonutils.JSONObject, data jsonutils.JSONObject) error { return nil } + +func (e SEmptyExtraHook) AfterPostDelete(ctx context.Context, userCred mcclient.TokenCredential, model IModel, query jsonutils.JSONObject) error { + return nil +} diff --git a/pkg/mcclient/options/compute/servers.go b/pkg/mcclient/options/compute/servers.go index 3827d61fc3..60cb0789a3 100644 --- a/pkg/mcclient/options/compute/servers.go +++ b/pkg/mcclient/options/compute/servers.go @@ -723,6 +723,7 @@ type ServerDeleteOptions struct { DeleteSnapshots *bool `help:"Delete server snapshots"` DeleteDisks *bool `help:"Delete server disks"` DeleteEip *bool `help:"Delete eip"` + DeleteBastionServer *bool `help:"Remove from bastion host"` } func (o *ServerDeleteOptions) QueryParams() (jsonutils.JSONObject, error) { diff --git a/pkg/util/logclient/consts.go b/pkg/util/logclient/consts.go index 69377438a0..e322837a7a 100644 --- a/pkg/util/logclient/consts.go +++ b/pkg/util/logclient/consts.go @@ -29,6 +29,7 @@ const ( ACT_CLOUD_SYNC = "cloud_sync" ACT_CREATE = "create" ACT_POST_CREATE_HOOK = "post_create_hook" + ACT_POST_DELETE_HOOK = "post_delete_hook" ACT_DELETE = "delete" ACT_PENDING_DELETE = "pending_delete" ACT_DISABLE = "disable"