diff --git a/pkg/cloudcommon/db/db_dispatcher.go b/pkg/cloudcommon/db/db_dispatcher.go index fa4ae37536..bc1db0d727 100644 --- a/pkg/cloudcommon/db/db_dispatcher.go +++ b/pkg/cloudcommon/db/db_dispatcher.go @@ -741,7 +741,7 @@ func (dispatcher *DBModelDispatcher) Create(ctx context.Context, query jsonutils return nil, httperrors.NewGeneralError(err) } OpsLog.LogEvent(model, ACT_CREATE, model.GetShortDesc(), userCred) - logclient.AddActionLog(userCred, logclient.ACT_CREATE, "", model, "") + logclient.AddActionLog(model, logclient.ACT_CREATE, "", userCred) dispatcher.modelManager.OnCreateComplete(ctx, []IModel{model}, userCred, query, data) return getItemDetails(dispatcher.modelManager, model, ctx, userCred, query) } @@ -960,13 +960,13 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre if err != nil { log.Errorf("validate update condition error: %s", err) - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, err.Error()) + logclient.AddActionLog(item, logclient.ACT_UPDATE, err.Error(), userCred) return nil, httperrors.NewGeneralError(err) } dataDict, ok := data.(*jsonutils.JSONDict) if !ok { - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, "Invalid data JSONObject") + logclient.AddActionLog(item, logclient.ACT_UPDATE, "Invalid data JSONObject", userCred) return nil, httperrors.NewInternalServerError("Invalid data JSONObject") } @@ -974,7 +974,7 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre if len(name) > 0 { err = alterNameValidator(item, name) if err != nil { - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, err.Error()) + logclient.AddActionLog(item, logclient.ACT_UPDATE, err.Error(), userCred) return nil, err } } @@ -983,7 +983,7 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre if err != nil { errMsg := fmt.Sprintf("validate update data error: %s", err) log.Errorf(errMsg) - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, errMsg) + logclient.AddActionLog(item, logclient.ACT_UPDATE, errMsg, userCred) return nil, httperrors.NewGeneralError(err) } item.PreUpdate(ctx, userCred, query, dataDict) @@ -993,7 +993,7 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre err = filterData.Unmarshal(item) if err != nil { errMsg := fmt.Sprintf("unmarshal fail: %s", err) - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, errMsg) + logclient.AddActionLog(item, logclient.ACT_UPDATE, errMsg, userCred) log.Errorf(errMsg) return httperrors.NewGeneralError(err) } @@ -1008,10 +1008,10 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre diffStr := sqlchemy.UpdateDiffString(diff) if len(diffStr) > 0 { OpsLog.LogEvent(item, ACT_UPDATE, diffStr, userCred) - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, diffStr) + logclient.AddActionLog(item, logclient.ACT_UPDATE, diffStr, userCred) } } - logclient.AddActionLog(userCred, logclient.ACT_UPDATE, dataDict.String(), item, "") + logclient.AddActionLog(item, logclient.ACT_UPDATE, "", userCred) return getItemDetails(manager, item, ctx, userCred, query) } @@ -1040,11 +1040,11 @@ func DeleteModel(ctx context.Context, userCred mcclient.TokenCredential, item IM if err != nil { msg := fmt.Sprintf("save update error %s", err) log.Errorf(msg) - logclient.AddActionLog(userCred, logclient.ACT_DELETE, "", item, msg) + logclient.AddActionLog(item, logclient.ACT_DELETE, msg, userCred) return httperrors.NewGeneralError(err) } OpsLog.LogEvent(item, ACT_DELETE, item.GetShortDesc(), userCred) - logclient.AddActionLog(userCred, logclient.ACT_DELETE, "", item, "") + logclient.AddActionLog(item, logclient.ACT_DELETE, "", userCred) return nil } diff --git a/pkg/cloudcommon/db/statusstandalone.go b/pkg/cloudcommon/db/statusstandalone.go index 588bd88999..7c683e36f7 100644 --- a/pkg/cloudcommon/db/statusstandalone.go +++ b/pkg/cloudcommon/db/statusstandalone.go @@ -43,7 +43,7 @@ func (model *SStatusStandaloneResourceBase) SetStatus(userCred mcclient.TokenCre } OpsLog.LogEvent(model, ACT_UPDATE_STATUS, notes, userCred) if strings.Contains(notes, "fail") { - logclient.AddActionLog(userCred, logclient.ACT_VM_SYNC_STATUS, "", model, notes) + logclient.AddActionLog(model, logclient.ACT_VM_SYNC_STATUS, notes, userCred) } } return nil diff --git a/pkg/compute/tasks/guest_create_task.go b/pkg/compute/tasks/guest_create_task.go index 9f104a12ef..2f1bc713e0 100644 --- a/pkg/compute/tasks/guest_create_task.go +++ b/pkg/compute/tasks/guest_create_task.go @@ -50,7 +50,7 @@ func (self *GuestCreateTask) OnDiskPreparedFailed(ctx context.Context, obj db.IS guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DISK_FAILED, "allocation failed") db.OpsLog.LogEvent(guest, db.ACT_ALLOCATE_FAIL, data, self.UserCred) - logclient.AddActionLog(self.UserCred, logclient.ACT_ALLOCATE, "", guest, data.String()) + logclient.AddActionLog(guest, logclient.ACT_ALLOCATE, data, self.UserCred) notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DISK_FAILED, data.String()) } @@ -78,7 +78,7 @@ func (self *GuestCreateTask) OnCdromPreparedFailed(ctx context.Context, obj db.I guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DISK_FAILED, "") db.OpsLog.LogEvent(guest, db.ACT_ALLOCATE_FAIL, data, self.UserCred) - logclient.AddActionLog(self.UserCred, logclient.ACT_ALLOCATE, "", guest, data.String()) + logclient.AddActionLog(guest, logclient.ACT_ALLOCATE, data, self.UserCred) notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DISK_FAILED, fmt.Sprintf("cdrom_failed %s", data)) } @@ -105,7 +105,7 @@ func (self *GuestCreateTask) OnDeployGuestDescCompleteFailed(ctx context.Context guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DEPLOY_FAILED, "deploy_failed") db.OpsLog.LogEvent(guest, db.ACT_ALLOCATE_FAIL, data, self.UserCred) - logclient.AddActionLog(self.UserCred, logclient.ACT_ALLOCATE, "", guest, data.String()) + logclient.AddActionLog(guest, logclient.ACT_ALLOCATE, data, self.UserCred) notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DEPLOY_FAILED, data.String()) } diff --git a/pkg/compute/tasks/guest_delete_task.go b/pkg/compute/tasks/guest_delete_task.go index 1e502edce2..e663bf990d 100644 --- a/pkg/compute/tasks/guest_delete_task.go +++ b/pkg/compute/tasks/guest_delete_task.go @@ -89,7 +89,7 @@ func (self *GuestDeleteTask) OnGuestDeleteCompleteFailed(ctx context.Context, ob guest := obj.(*models.SGuest) guest.SetStatus(self.UserCred, models.VM_DELETE_FAIL, err.String()) db.OpsLog.LogEvent(guest, db.ACT_DELOCATE_FAIL, err, self.UserCred) - logclient.AddActionLog(self.UserCred, logclient.ACT_DELETE, "", guest, err.String()) + logclient.AddActionLog(guest, logclient.ACT_DELETE, err, self.UserCred) } func (self *GuestDeleteTask) OnGuestDeleteComplete(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) { @@ -105,7 +105,7 @@ func (self *GuestDeleteTask) DeleteGuest(ctx context.Context, guest *models.SGue guest.RealDelete(ctx, self.UserCred) guest.RemoveAllMetadata(ctx, self.UserCred) db.OpsLog.LogEvent(guest, db.ACT_DELOCATE, nil, self.UserCred) - logclient.AddActionLog(self.UserCred, logclient.ACT_DELETE, "", guest, "") + logclient.AddActionLog(guest, logclient.ACT_DELETE, "", self.UserCred) if !guest.IsSystem && !guest.PendingDeleted { self.NotifyServerDeleted(ctx, guest) } diff --git a/pkg/compute/tasks/guest_rebuild_root_task.go b/pkg/compute/tasks/guest_rebuild_root_task.go index 1bd7c81249..8f61dcaf4f 100644 --- a/pkg/compute/tasks/guest_rebuild_root_task.go +++ b/pkg/compute/tasks/guest_rebuild_root_task.go @@ -49,7 +49,7 @@ func (self *GuestRebuildRootTask) StartRebuildRootDisk(ctx context.Context, gues }) if err != nil { self.SetStageFailed(ctx, err.Error()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, err, self.UserCred) return } else { db.OpsLog.LogEvent(gds.Root, db.ACT_UPDATE_STATUS, @@ -66,19 +66,19 @@ func (self *GuestRebuildRootTask) OnRebuildRootDiskComplete(ctx context.Context, imginfo, err := models.CachedimageManager.GetImageById(ctx, self.UserCred, imgId, false) if err != nil { self.SetStageFailed(ctx, err.Error()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, err, self.UserCred) return } osprof, err := osprofile.GetOSProfileFromImageProperties(imginfo.Properties, guest.Hypervisor) if err != nil { self.SetStageFailed(ctx, err.Error()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, err, self.UserCred) return } err = guest.SetMetadata(ctx, "__os_profile__", osprof, self.UserCred) if err != nil { self.SetStageFailed(ctx, err.Error()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, err, self.UserCred) return } if guest.OsType != osprof.OSType { @@ -88,7 +88,7 @@ func (self *GuestRebuildRootTask) OnRebuildRootDiskComplete(ctx context.Context, }) if err != nil { self.SetStageFailed(ctx, err.Error()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, err, self.UserCred) return } } @@ -99,9 +99,9 @@ func (self *GuestRebuildRootTask) OnRebuildRootDiskComplete(ctx context.Context, } func (self *GuestRebuildRootTask) OnRebuildRootDiskCompleteFailed(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { - db.OpsLog.LogEvent(guest, db.ACT_REBUILD_ROOT_FAIL, data.String(), self.UserCred) + db.OpsLog.LogEvent(guest, db.ACT_REBUILD_ROOT_FAIL, data, self.UserCred) guest.SetStatus(self.UserCred, models.VM_REBUILD_ROOT_FAIL, "") - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, data.String()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, data, self.UserCred) } func (self *GuestRebuildRootTask) OnSyncStatusComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { @@ -111,7 +111,7 @@ func (self *GuestRebuildRootTask) OnSyncStatusComplete(ctx context.Context, gues } else { self.SetStageComplete(ctx, nil) } - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, "") + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, "", self.UserCred) } func (self *GuestRebuildRootTask) OnGuestStartComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { @@ -143,7 +143,7 @@ func (self *KVMGuestRebuildRootTask) OnRebuildRootDiskComplete(ctx context.Conte func (self *KVMGuestRebuildRootTask) OnRebuildRootDiskCompleteFailed(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { self.SetStageFailed(ctx, data.String()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_REBUILD, "", guest, data.String()) + logclient.AddActionLog(guest, logclient.ACT_VM_REBUILD, data, self.UserCred) } func (self *KVMGuestRebuildRootTask) OnGuestDeployComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) { diff --git a/pkg/compute/tasks/guest_start_task.go b/pkg/compute/tasks/guest_start_task.go index d5af7cadb3..71147afdac 100644 --- a/pkg/compute/tasks/guest_start_task.go +++ b/pkg/compute/tasks/guest_start_task.go @@ -59,7 +59,7 @@ func (self *GuestStartTask) OnStartComplete(ctx context.Context, obj db.IStandal db.OpsLog.LogEvent(guest, db.ACT_START, guest.GetShortDesc(), self.UserCred) self.SetStage("on_guest_syncstatus_after_start", nil) guest.StartSyncstatus(ctx, self.UserCred, self.GetTaskId()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_START, "", guest, "") + logclient.AddActionLog(guest, logclient.ACT_VM_START, "", self.UserCred) // self.taskComplete(ctx, guest) } @@ -76,7 +76,7 @@ func (self *GuestStartTask) OnStartCompleteFailed(ctx context.Context, obj db.IS func (self *GuestStartTask) onStartGuestFailed(ctx context.Context, guest *models.SGuest, err error) { self.SetStageFailed(ctx, err.Error()) self.OnStartCompleteFailed(ctx, guest, jsonutils.NewString(err.Error())) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_START, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_START, err, self.UserCred) } func (self *GuestStartTask) taskComplete(ctx context.Context, guest *models.SGuest) { diff --git a/pkg/compute/tasks/guest_stop_task.go b/pkg/compute/tasks/guest_stop_task.go index 303c48b2e0..f50838d64c 100644 --- a/pkg/compute/tasks/guest_stop_task.go +++ b/pkg/compute/tasks/guest_stop_task.go @@ -58,12 +58,12 @@ func (self *GuestStopTask) OnGuestStopTaskComplete(ctx context.Context, obj db.I if guest.Status == models.VM_READY && guest.DisableDelete.IsFalse() && guest.ShutdownBehavior == models.SHUTDOWN_TERMINATE { guest.StartAutoDeleteGuestTask(ctx, self.UserCred, "") } - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_STOP, "", guest, "") + logclient.AddActionLog(guest, logclient.ACT_VM_STOP, "", self.UserCred) } func (self *GuestStopTask) OnStopGuestFail(ctx context.Context, guest *models.SGuest, err error) { guest.SetStatus(self.UserCred, models.VM_STOP_FAILED, err.Error()) db.OpsLog.LogEvent(guest, db.ACT_STOP_FAIL, err.Error(), self.UserCred) self.SetStageFailed(ctx, err.Error()) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_STOP, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_STOP, err, self.UserCred) } diff --git a/pkg/compute/tasks/guest_syncstatus_task.go b/pkg/compute/tasks/guest_syncstatus_task.go index c315525baf..78dfd85a51 100644 --- a/pkg/compute/tasks/guest_syncstatus_task.go +++ b/pkg/compute/tasks/guest_syncstatus_task.go @@ -2,7 +2,6 @@ package tasks import ( "context" - "fmt" "yunion.io/x/jsonutils" "yunion.io/x/log" @@ -55,14 +54,11 @@ func (self *GuestSyncstatusTask) OnGetStatusSucc(ctx context.Context, guest *mod statusData.Add(jsonutils.NewString(statusStr), "status") guest.PerformStatus(ctx, self.UserCred, nil, statusData) self.SetStageComplete(ctx, nil) - fmt.Println(" \n*\n*\n*\n*\n*\n*\n*\n*\n*\n*\n*\\n*n* * * * * * * * * * * * * ") - fmt.Println("* * * * * * * * * * * * * server obj:", guest) - fmt.Println(" \n*\n*\n*\n*\n*\n*\n*\n*\n*\n*\n*\\n*n* * * * * * * * * * * * * ") - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_SYNC_STATUS, "", guest, "") + logclient.AddActionLog(guest, logclient.ACT_VM_SYNC_STATUS, "", self.UserCred) } func (self *GuestSyncstatusTask) OnGetStatusFail(ctx context.Context, guest *models.SGuest, err error) { guest.SetStatus(self.UserCred, models.VM_UNKNOWN, err.Error()) self.SetStageComplete(ctx, nil) - logclient.AddActionLog(self.UserCred, logclient.ACT_VM_SYNC_STATUS, "", guest, err.Error()) + logclient.AddActionLog(guest, logclient.ACT_VM_SYNC_STATUS, err, self.UserCred) } diff --git a/pkg/util/logclient/logclient.go b/pkg/util/logclient/logclient.go index 658bc2887f..aaf551b831 100644 --- a/pkg/util/logclient/logclient.go +++ b/pkg/util/logclient/logclient.go @@ -7,6 +7,7 @@ import ( "yunion.io/x/onecloud/pkg/mcclient" "yunion.io/x/onecloud/pkg/mcclient/auth" "yunion.io/x/onecloud/pkg/mcclient/modules" + "yunion.io/x/pkg/util/stringutils" ) const ( @@ -53,34 +54,35 @@ type IObject interface { Keyword() string } -func AddActionLog(userCred mcclient.TokenCredential, action, notes string, obj IObject, e string) { +func AddActionLog(model IObject, action string, iErr interface{}, userCred mcclient.TokenCredential) { + // (model IModel, action string, notes interface{}, userCred mcclient.TokenCredential + //func AddActionLog(userCred mcclient.TokenCredential, action, notes string, obj IObject, e string) { // originalk token := userCred + notes := stringutils.Interface2String(iErr) + + s := auth.GetSession(userCred, "", "") + logentry := jsonutils.NewDict() - logentry.Add(jsonutils.NewString(obj.GetName()), "obj_name") - logentry.Add(jsonutils.NewString(obj.Keyword()), "obj_type") - logentry.Add(jsonutils.NewString(obj.GetId()), "obj_id") + logentry.Add(jsonutils.NewString(model.GetName()), "obj_name") + logentry.Add(jsonutils.NewString(model.Keyword()), "obj_type") + logentry.Add(jsonutils.NewString(model.GetId()), "obj_id") logentry.Add(jsonutils.NewString(action), "action") logentry.Add(jsonutils.NewString(token.GetUserId()), "user_id") logentry.Add(jsonutils.NewString(token.GetUserName()), "user") logentry.Add(jsonutils.NewString(token.GetTenantId()), "tenant_id") logentry.Add(jsonutils.NewString(token.GetTenantName()), "tenant") - // TODO delete following line later - notes = "[a2]" + notes - - s := auth.GetSession(userCred, "", "") - - if len(e) > 0 { + if len(notes) > 0 { // 失败日志 logentry.Add(jsonutils.JSONFalse, "success") - notes = fmt.Sprintf("%s%s", notes, e) - logentry.Add(jsonutils.NewString(notes), "notes") } else { // 成功日志 logentry.Add(jsonutils.JSONTrue, "success") - logentry.Add(jsonutils.NewString(notes), "notes") } + // TODO delete tag when done. + notes = fmt.Sprintf("[a2]%s", notes) + logentry.Add(jsonutils.NewString(notes), "notes") _, err := modules.Actions.Create(s, logentry) if err != nil {