阿里云创建虚机失败时记录 actionlog

This commit is contained in:
Zhang Dongliang
2018-08-25 07:53:54 +08:00
parent 4e3ff7da7d
commit 58edf9daf4
3 changed files with 19 additions and 10 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(ctx, userCred, logclient.ACT_CREATE, "", model, "")
logclient.AddActionLog(userCred, logclient.ACT_CREATE, "", model, "")
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(ctx, userCred, logclient.ACT_UPDATE, "", item, err.Error())
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, err.Error())
return nil, httperrors.NewGeneralError(err)
}
dataDict, ok := data.(*jsonutils.JSONDict)
if !ok {
logclient.AddActionLog(ctx, userCred, logclient.ACT_UPDATE, "", item, "Invalid data JSONObject")
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, "Invalid data JSONObject")
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(ctx, userCred, logclient.ACT_UPDATE, "", item, err.Error())
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, err.Error())
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(ctx, userCred, logclient.ACT_UPDATE, "", item, errMsg)
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, errMsg)
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(ctx, userCred, logclient.ACT_UPDATE, "", item, errMsg)
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, errMsg)
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(ctx, userCred, logclient.ACT_UPDATE, "", item, diffStr)
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, "", item, diffStr)
}
}
logclient.AddActionLog(ctx, userCred, logclient.ACT_UPDATE, dataDict.String(), item, "")
logclient.AddActionLog(userCred, logclient.ACT_UPDATE, dataDict.String(), item, "")
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(ctx, userCred, logclient.ACT_DELETE, "", item, msg)
logclient.AddActionLog(userCred, logclient.ACT_DELETE, "", item, msg)
return httperrors.NewGeneralError(err)
}
OpsLog.LogEvent(item, ACT_DELETE, item.GetShortDesc(), userCred)
logclient.AddActionLog(ctx, userCred, logclient.ACT_DELETE, "", item, "")
logclient.AddActionLog(userCred, logclient.ACT_DELETE, "", item, "")
return nil
}
+5
View File
@@ -3,9 +3,11 @@ package db
import (
"context"
"fmt"
"strings"
"yunion.io/x/jsonutils"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/util/logclient"
)
type SStatusStandaloneResourceBase struct {
@@ -40,6 +42,9 @@ func (model *SStatusStandaloneResourceBase) SetStatus(userCred mcclient.TokenCre
notes = fmt.Sprintf("%s: %s", notes, reason)
}
OpsLog.LogEvent(model, ACT_UPDATE_STATUS, notes, userCred)
if strings.Contains(notes, "fail") {
logclient.AddActionLog(userCred, logclient.ACT_VM_SYNC_STATUS, "", model, notes)
}
}
return nil
}
+4
View File
@@ -11,6 +11,7 @@ import (
"yunion.io/x/onecloud/pkg/cloudcommon/db/taskman"
"yunion.io/x/onecloud/pkg/cloudcommon/notifyclient"
"yunion.io/x/onecloud/pkg/compute/models"
"yunion.io/x/onecloud/pkg/util/logclient"
)
type GuestCreateTask struct {
@@ -49,6 +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())
notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DISK_FAILED, data.String())
}
@@ -76,6 +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())
notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DISK_FAILED, fmt.Sprintf("cdrom_failed %s", data))
}
@@ -102,6 +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())
notifyclient.NotifySystemError(guest.Id, guest.Name, models.VM_DEPLOY_FAILED, data.String())
}