Merge pull request #150 in YUNIONIO/onecloud from feature/rex-logclient-20180822-1018 to release/2.1.0

* commit '4249e2486a04bd080218b59fc12ffe1f416ad6fa':
  阿里云服务器同步、全量同步操作日志。
  阿里云解绑
  rm log
  日志接口重构;阿里云修改密码、变更配置加日志
  阿里云变更配置增加日志
  更改项目
  接口重构,与OpsLog.LogEvent 保持一致
  阿里云重装系统、开机关机、同步状态日志
  阿里云虚机删除日志
  阿里云创建虚机失败时记录 actionlog
  增加logclient; aliyun server crud 操作
  增加logclient
This commit is contained in:
邱剑
2018-09-03 21:13:41 +08:00
15 changed files with 263 additions and 32 deletions
+18 -3
View File
@@ -21,6 +21,7 @@ import (
"yunion.io/x/onecloud/pkg/mcclient/auth"
"yunion.io/x/onecloud/pkg/mcclient/modules"
"yunion.io/x/onecloud/pkg/util/httputils"
"yunion.io/x/onecloud/pkg/util/logclient"
)
type DBModelDispatcher struct {
@@ -768,6 +769,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(model, logclient.ACT_CREATE, "", userCred, true)
dispatcher.modelManager.OnCreateComplete(ctx, []IModel{model}, userCred, query, data)
return getItemDetails(dispatcher.modelManager, model, ctx, userCred, query)
}
@@ -986,11 +988,13 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre
if err != nil {
log.Errorf("validate update condition error: %s", err)
logclient.AddActionLog(item, logclient.ACT_UPDATE, err.Error(), userCred, false)
return nil, httperrors.NewGeneralError(err)
}
dataDict, ok := data.(*jsonutils.JSONDict)
if !ok {
logclient.AddActionLog(item, logclient.ACT_UPDATE, "Invalid data JSONObject", userCred, false)
return nil, httperrors.NewInternalServerError("Invalid data JSONObject")
}
@@ -998,13 +1002,16 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre
if len(name) > 0 {
err = alterNameValidator(item, name)
if err != nil {
logclient.AddActionLog(item, logclient.ACT_UPDATE, err.Error(), userCred, false)
return nil, err
}
}
dataDict, err = item.ValidateUpdateData(ctx, userCred, query, dataDict)
if err != nil {
log.Errorf("validate update data error: %s", err)
errMsg := fmt.Sprintf("validate update data error: %s", err)
log.Errorf(errMsg)
logclient.AddActionLog(item, logclient.ACT_UPDATE, errMsg, userCred, false)
return nil, httperrors.NewGeneralError(err)
}
item.PreUpdate(ctx, userCred, query, dataDict)
@@ -1012,7 +1019,9 @@ func updateItem(manager IModelManager, item IModel, ctx context.Context, userCre
filterData := dataDict.CopyIncludes(updateFields(manager, userCred)...)
err = filterData.Unmarshal(item)
if err != nil {
log.Errorf("unmarshal fail: %s", err)
errMsg := fmt.Sprintf("unmarshal fail: %s", err)
logclient.AddActionLog(item, logclient.ACT_UPDATE, errMsg, userCred, false)
log.Errorf(errMsg)
return httperrors.NewGeneralError(err)
}
return nil
@@ -1026,7 +1035,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(item, logclient.ACT_UPDATE, diffStr, userCred, true)
}
} else {
logclient.AddActionLog(item, logclient.ACT_UPDATE, "", userCred, true)
}
return getItemDetails(manager, item, ctx, userCred, query)
}
@@ -1054,10 +1066,13 @@ func DeleteModel(ctx context.Context, userCred mcclient.TokenCredential, item IM
return item.MarkDelete()
})
if err != nil {
log.Errorf("save update error %s", err)
msg := fmt.Sprintf("save update error %s", err)
log.Errorf(msg)
logclient.AddActionLog(item, logclient.ACT_DELETE, msg, userCred, false)
return httperrors.NewGeneralError(err)
}
OpsLog.LogEvent(item, ACT_DELETE, item.GetShortDesc(), userCred)
logclient.AddActionLog(item, logclient.ACT_DELETE, item.GetShortDesc(), userCred, true)
return nil
}
+2
View File
@@ -10,6 +10,7 @@ import (
"yunion.io/x/jsonutils"
"yunion.io/x/log"
"yunion.io/x/onecloud/pkg/mcclient"
"yunion.io/x/onecloud/pkg/util/logclient"
"yunion.io/x/pkg/util/stringutils"
"yunion.io/x/sqlchemy"
)
@@ -305,6 +306,7 @@ func (manager *SOpsLogManager) SyncOwner(m IModel, former *STenant, userCred mcc
notes.Add(jsonutils.NewString(former.GetId()), "former_project_id")
notes.Add(jsonutils.NewString(former.GetName()), "form_project")
manager.LogEvent(m, ACT_CHANGE_OWNER, notes, userCred)
logclient.AddActionLog(m, logclient.ACT_CHANGE_OWNER, nil, userCred, true)
}
func (manager *SOpsLogManager) AllowListItems(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject) bool {
+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(model, logclient.ACT_VM_SYNC_STATUS, notes, userCred, false)
}
}
return nil
}