接口重构,与OpsLog.LogEvent 保持一致

This commit is contained in:
Zhang Dongliang
2018-08-27 18:00:13 +08:00
parent 0d1a33b495
commit eb135f71dc
9 changed files with 46 additions and 48 deletions
+10 -10
View File
@@ -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
}
+1 -1
View File
@@ -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
+3 -3
View File
@@ -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())
}
+2 -2
View File
@@ -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)
}
+9 -9
View File
@@ -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) {
+2 -2
View File
@@ -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) {
+2 -2
View File
@@ -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)
}
+2 -6
View File
@@ -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)
}
+15 -13
View File
@@ -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 {