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
+1
View File
@@ -0,0 +1 @@
package logclient // import "yunion.io/x/onecloud/pkg/util/logclient"
+97
View File
@@ -0,0 +1,97 @@
package logclient
import (
"fmt"
"yunion.io/x/jsonutils"
"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 (
ACT_ADDTAG = "添加标签"
ACT_ALLOCATE = "分配"
ACT_BM_CONVERT_HYPER = "转换为宿主机"
ACT_BM_MAINTENANCE = "进入离线状态"
ACT_BM_UNCONVERT_HYPER = "转换为受管物理机"
ACT_BM_UNMAINTENANCE = "退出离线状态"
ACT_CANCEL_DELETE = "恢复"
ACT_CHANGE_OWNER = "更改项目"
ACT_CLOUD_FULLSYNC = "全量同步"
ACT_CLOUD_SYNC = "同步"
ACT_CREATE = "创建"
ACT_DELETE = "删除"
ACT_DISABLE = "禁用"
ACT_ENABLE = "启用"
ACT_GUEST_ATTACH_ISOLATED_DEVICE = "挂载透传设备"
ACT_GUEST_DETACH_ISOLATED_DEVICE = "卸载透传设备"
ACT_MERGE = "合并"
ACT_OFFLINE = "下线"
ACT_ONLINE = "上线"
ACT_PRIVATE = "设为私有"
ACT_PUBLIC = "设为共享"
ACT_RELEASE_IP = "释放IP"
ACT_RESERVE_IP = "预留IP"
ACT_RESIZE = "扩容"
ACT_RMTAG = "删除标签"
ACT_SPLIT = "分割"
ACT_UNCACHED_IMAGE = "清除缓存"
ACT_UPDATE = "更新"
ACT_VM_ATTACH_DISK = "挂载磁盘"
ACT_VM_BIND_KEYPAIR = "绑定密钥"
ACT_VM_CHANGE_FLAVOR = "调整配置"
ACT_VM_DEPLOY = "部署"
ACT_VM_DETACH_DISK = "卸载磁盘"
ACT_VM_PURGE = "清除"
ACT_VM_REBUILD = "重装系统"
ACT_VM_RESET_PSWD = "重置密码"
ACT_VM_START = "开机"
ACT_VM_STOP = "关机"
ACT_VM_SYNC_CONF = "同步配置"
ACT_VM_SYNC_STATUS = "同步状态"
ACT_VM_UNBIND_KEYPAIR = "解绑密钥"
)
type IObject interface {
GetId() string
GetName() string
Keyword() string
}
func AddActionLog(model IObject, action string, iNotes interface{}, userCred mcclient.TokenCredential, success bool) {
token := userCred
notes := stringutils.Interface2String(iNotes)
s := auth.GetSession(userCred, "", "")
logentry := jsonutils.NewDict()
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")
if !success {
// 失败日志
logentry.Add(jsonutils.JSONFalse, "success")
} else {
// 成功日志
logentry.Add(jsonutils.JSONTrue, "success")
}
// 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 {
fmt.Printf("create action log failed %s", err)
} else {
fmt.Println("create action log success")
}
}