mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
feat(cloudcommon): add ExtraHook steps to joint model (#23741)
This commit is contained in:
@@ -1852,6 +1852,10 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre
|
||||
|
||||
item.PostUpdate(ctx, userCred, query, data)
|
||||
|
||||
if err := manager.GetExtraHook().AfterPostUpdate(ctx, userCred, item, query, data); err != nil {
|
||||
logclient.AddActionLogWithContext(ctx, item, logclient.ACT_POST_UPDATE_HOOK, err, userCred, false)
|
||||
}
|
||||
|
||||
return getItemDetails(manager, item, ctx, userCred, query)
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ import (
|
||||
"yunion.io/x/onecloud/pkg/cloudcommon/policy"
|
||||
"yunion.io/x/onecloud/pkg/httperrors"
|
||||
"yunion.io/x/onecloud/pkg/mcclient"
|
||||
"yunion.io/x/onecloud/pkg/util/logclient"
|
||||
)
|
||||
|
||||
type DBJointModelDispatcher struct {
|
||||
@@ -210,6 +211,9 @@ func attachItems(
|
||||
return nil, httperrors.NewGeneralError(err)
|
||||
}
|
||||
item.PostCreate(ctx, userCred, nil, query, data)
|
||||
if err := dispatcher.JointModelManager().GetExtraHook().AfterPostCreate(ctx, userCred, item.GetOwnerId(), item, query, data); err != nil {
|
||||
logclient.AddActionLogWithContext(ctx, item, logclient.ACT_POST_CREATE_HOOK, err, userCred, false)
|
||||
}
|
||||
OpsLog.LogAttachEvent(ctx, master, slave, userCred, jsonutils.Marshal(item))
|
||||
dispatcher.manager.OnCreateComplete(ctx, []IModel{item}, userCred, nil, query, []jsonutils.JSONObject{data})
|
||||
|
||||
@@ -322,5 +326,8 @@ func DetachJoint(ctx context.Context, userCred mcclient.TokenCredential, item IJ
|
||||
if err == nil {
|
||||
OpsLog.LogDetachEvent(ctx, JointMaster(item), JointSlave(item), userCred, item.GetShortDesc(ctx))
|
||||
}
|
||||
if err := item.GetModelManager().GetExtraHook().AfterPostDelete(ctx, userCred, item, nil); err != nil {
|
||||
logclient.AddActionLogWithContext(ctx, item, logclient.ACT_POST_DELETE_HOOK, err, userCred, false)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -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
|
||||
AfterPostUpdate(ctx context.Context, userCred mcclient.TokenCredential, model IModel, query jsonutils.JSONObject, data jsonutils.JSONObject) error
|
||||
AfterPostDelete(ctx context.Context, userCred mcclient.TokenCredential, model IModel, query jsonutils.JSONObject) error
|
||||
}
|
||||
|
||||
|
||||
@@ -880,3 +880,7 @@ func (e SEmptyExtraHook) AfterPostCreate(ctx context.Context, userCred mcclient.
|
||||
func (e SEmptyExtraHook) AfterPostDelete(ctx context.Context, userCred mcclient.TokenCredential, model IModel, query jsonutils.JSONObject) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e SEmptyExtraHook) AfterPostUpdate(ctx context.Context, userCred mcclient.TokenCredential, model IModel, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -493,14 +493,14 @@ func (self *SMonitorResource) UpdateAttachJoint(ctx context.Context, userCred mc
|
||||
log.Errorf("attach alert error: %s", err)
|
||||
}
|
||||
log.Infof("Attach Alert joint: %#v, match: %s", newJoint, jsonutils.Marshal(match))
|
||||
if err := newJoint.UpdateAlertRecordData(input, &match); err != nil {
|
||||
if err := newJoint.UpdateAlertRecordData(ctx, userCred, input, &match); err != nil {
|
||||
errs = append(errs, errors.Wrapf(err, "new joint %s:%s %s:%s UpdateAlertRecordData err",
|
||||
MonitorResourceAlertManager.GetMasterFieldName(), self.ResId,
|
||||
MonitorResourceAlertManager.GetSlaveFieldName(), input.AlertId))
|
||||
}
|
||||
} else {
|
||||
for _, joint := range updateJoints {
|
||||
err := joint.UpdateAlertRecordData(input, &match)
|
||||
err := joint.UpdateAlertRecordData(ctx, userCred, input, &match)
|
||||
if err != nil {
|
||||
errs = append(errs, errors.Wrapf(err, "joint %s:%s %s:%s UpdateAlertRecordData err",
|
||||
MonitorResourceAlertManager.GetMasterFieldName(), self.ResId,
|
||||
|
||||
@@ -141,7 +141,7 @@ func (manager *SMonitorResourceAlertManager) GetJoinsByListInput(input monitor.M
|
||||
return joints, nil
|
||||
}
|
||||
|
||||
func (obj *SMonitorResourceAlert) UpdateAlertRecordData(input *UpdateMonitorResourceAlertInput, match *monitor.EvalMatch) error {
|
||||
func (obj *SMonitorResourceAlert) UpdateAlertRecordData(ctx context.Context, userCred mcclient.TokenCredential, input *UpdateMonitorResourceAlertInput, match *monitor.EvalMatch) error {
|
||||
sendState := input.SendState
|
||||
if _, ok := match.Tags[monitor.ALERT_RESOURCE_RECORD_SHIELD_KEY]; ok {
|
||||
sendState = monitor.SEND_STATE_SHIELD
|
||||
@@ -160,6 +160,9 @@ func (obj *SMonitorResourceAlert) UpdateAlertRecordData(input *UpdateMonitorReso
|
||||
}); err != nil {
|
||||
return errors.Wrap(err, "db.Update")
|
||||
}
|
||||
if err := obj.GetModelManager().GetExtraHook().AfterPostUpdate(ctx, userCred, obj, jsonutils.NewDict(), jsonutils.NewDict()); err != nil {
|
||||
log.Warningf("UpdateAlertRecordData after post update hook error: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,7 @@ const (
|
||||
ACT_CREATE = "create"
|
||||
ACT_POST_CREATE_HOOK = "post_create_hook"
|
||||
ACT_POST_DELETE_HOOK = "post_delete_hook"
|
||||
ACT_POST_UPDATE_HOOK = "post_update_hook"
|
||||
ACT_DELETE = "delete"
|
||||
ACT_PENDING_DELETE = "pending_delete"
|
||||
ACT_DISABLE = "disable"
|
||||
|
||||
Reference in New Issue
Block a user