snapshot log event for billing

This commit is contained in:
wanyaoqi
2018-10-31 17:42:28 +08:00
parent a60a66e542
commit 3bfc2951fe
3 changed files with 31 additions and 9 deletions
+5 -1
View File
@@ -488,7 +488,11 @@ func (self *SAliyunGuestDriver) RequestDiskSnapshot(ctx context.Context, guest *
res := jsonutils.NewDict()
res.Set("snapshot_id", jsonutils.NewString(cloudSnapshot.GetId()))
res.Set("manager_id", jsonutils.NewString(cloudSnapshot.GetManagerId()))
res.Set("cloudregion_id", jsonutils.NewString(cloudSnapshot.GetRegionId()))
cloudRegion, err := models.CloudregionManager.FetchByExternalId("Aliyun/" + cloudSnapshot.GetRegionId())
if err != nil {
return nil, fmt.Errorf("Cloud region not found? %s", err)
}
res.Set("cloudregion_id", jsonutils.NewString(cloudRegion.GetId()))
return res, nil
})
return nil
+19 -1
View File
@@ -171,6 +171,21 @@ func (self *SSnapshot) getMoreDetails(extra *jsonutils.JSONDict) *jsonutils.JSON
return extra
}
func (self *SSnapshot) GetShortDesc() *jsonutils.JSONDict {
res := self.SVirtualResourceBase.GetShortDesc()
res.Add(jsonutils.NewInt(int64(self.Size)), "size")
if cloudprovider := self.GetCloudprovider(); cloudprovider != nil {
res.Add(jsonutils.NewString(cloudprovider.Provider), "hypervisor")
}
if len(self.CloudregionId) > 0 {
cloudRegion := CloudregionManager.FetchRegionById(self.CloudregionId)
if cloudRegion != nil {
res.Add(jsonutils.NewString(cloudRegion.ExternalId), "region")
}
}
return res
}
func (self *SSnapshot) AllowCreateItem(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) bool {
return false
}
@@ -282,7 +297,9 @@ func (self *SSnapshotManager) CreateSnapshot(ctx context.Context, userCred mccli
snapshot.SetModelManager(self)
snapshot.ProjectId = userCred.GetProjectId()
snapshot.DiskId = disk.Id
snapshot.StorageId = disk.StorageId
if len(disk.ExternalId) == 0 {
snapshot.StorageId = disk.StorageId
}
snapshot.Size = disk.DiskSize
snapshot.DiskType = disk.DiskType
snapshot.Location = location
@@ -488,6 +505,7 @@ func (manager *SSnapshotManager) newFromCloudSnapshot(userCred mcclient.TokenCre
log.Errorf("newFromCloudEip fail %s", err)
return nil, err
}
db.OpsLog.LogEvent(&snapshot, db.ACT_SNAPSHOT_DONE, snapshot.GetShortDesc(), userCred)
return &snapshot, nil
}
@@ -99,15 +99,15 @@ func (self *GuestDiskSnapshotTask) OnAutoDeleteSnapshotFailed(ctx context.Contex
}
func (self *GuestDiskSnapshotTask) TaskComplete(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) {
snapshotId, _ := self.Params.GetString("snapshot_id")
iSnapshot, _ := models.SnapshotManager.FetchById(snapshotId)
db.OpsLog.LogEvent(iSnapshot, db.ACT_SNAPSHOT_DONE, iSnapshot.GetShortDesc(), self.UserCred)
logclient.AddActionLog(iSnapshot, logclient.ACT_CREATE, nil, self.UserCred, true)
guest.StartSyncstatus(ctx, self.UserCred, self.GetTaskId())
self.SetStage("OnSyncStatus", nil)
}
func (self *GuestDiskSnapshotTask) OnSyncStatus(ctx context.Context, guest *models.SGuest, data jsonutils.JSONObject) {
snapshotId, _ := self.Params.GetString("snapshot_id")
iSnapshot, _ := models.SnapshotManager.FetchById(snapshotId)
db.OpsLog.LogEvent(iSnapshot, db.ACT_SNAPSHOT_DONE, nil, self.UserCred)
logclient.AddActionLog(iSnapshot, logclient.ACT_CREATE, nil, self.UserCred, true)
self.SetStageComplete(ctx, nil)
}
@@ -139,7 +139,7 @@ func (self *SnapshotDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneMo
self.SetStageFailed(ctx, err.Error())
} else {
snapshot.RealDelete(ctx, self.GetUserCred())
self.SetStageComplete(ctx, nil)
self.TaskComplete(ctx, snapshot, nil)
}
return
}
@@ -227,7 +227,7 @@ func (self *SnapshotDeleteTask) DeleteStaticSnapshot(ctx context.Context, snapsh
self.TaskFailed(ctx, snapshot, err.Error())
return
}
self.SetStageComplete(ctx, nil)
self.TaskComplete(ctx, snapshot, nil)
}
func (self *SnapshotDeleteTask) OnDeleteSnapshot(ctx context.Context, snapshot *models.SSnapshot, data jsonutils.JSONObject) {
@@ -296,7 +296,7 @@ func (self *SnapshotDeleteTask) OnReloadDiskSnapshot(ctx context.Context, snapsh
}
func (self *SnapshotDeleteTask) TaskComplete(ctx context.Context, snapshot *models.SSnapshot, data jsonutils.JSONObject) {
db.OpsLog.LogEvent(snapshot, db.ACT_SNAPSHOT_DELETE, nil, self.UserCred)
db.OpsLog.LogEvent(snapshot, db.ACT_SNAPSHOT_DELETE, snapshot.GetShortDesc(), self.UserCred)
logclient.AddActionLog(snapshot, logclient.ACT_DELETE, nil, self.UserCred, true)
self.SetStageComplete(ctx, nil)
}