mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-09-24 16:03:43 +08:00
fix code
This commit is contained in:
@@ -11,6 +11,6 @@ import (
|
||||
type SBaseHostDriver struct {
|
||||
}
|
||||
|
||||
func (self *SBaseHostDriver) RequestDeleteSnapshotWithStorage(ctx context.Context, host *models.SHost, snapshot *models.SSnapshot, task taskman.ITask) error {
|
||||
func (self *SBaseHostDriver) RequestDeleteSnapshotsWithStorage(ctx context.Context, host *models.SHost, snapshot *models.SSnapshot, task taskman.ITask) error {
|
||||
return fmt.Errorf("Not Implement")
|
||||
}
|
||||
|
||||
@@ -149,7 +149,7 @@ func (self *SKVMHostDriver) RequestSaveUploadImageOnHost(ctx context.Context, ho
|
||||
return err
|
||||
}
|
||||
|
||||
func (self *SKVMHostDriver) RequestDeleteSnapshotWithStorage(ctx context.Context, host *models.SHost, snapshot *models.SSnapshot, task taskman.ITask) error {
|
||||
func (self *SKVMHostDriver) RequestDeleteSnapshotsWithStorage(ctx context.Context, host *models.SHost, snapshot *models.SSnapshot, task taskman.ITask) error {
|
||||
url := fmt.Sprintf("/storages/%s/delete-snapshots", snapshot.StorageId)
|
||||
body := jsonutils.NewDict()
|
||||
body.Set("disk_id", jsonutils.NewString(snapshot.DiskId))
|
||||
|
||||
@@ -18,7 +18,7 @@ type IHostDriver interface {
|
||||
RequestDeallocateDiskOnHost(host *SHost, storage *SStorage, disk *SDisk, task taskman.ITask) error
|
||||
RequestResizeDiskOnHostOnline(host *SHost, storage *SStorage, disk *SDisk, size int64, task taskman.ITask) error
|
||||
RequestResizeDiskOnHost(host *SHost, storage *SStorage, disk *SDisk, size int64, task taskman.ITask) error
|
||||
RequestDeleteSnapshotWithStorage(ctx context.Context, host *SHost, snapshot *SSnapshot, task taskman.ITask) error
|
||||
RequestDeleteSnapshotsWithStorage(ctx context.Context, host *SHost, snapshot *SSnapshot, task taskman.ITask) error
|
||||
}
|
||||
|
||||
var hostDrivers map[string]IHostDriver
|
||||
|
||||
@@ -2,6 +2,7 @@ package models
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"fmt"
|
||||
|
||||
"yunion.io/x/jsonutils"
|
||||
@@ -92,10 +93,19 @@ func (self *SSnapshot) GetGuest() (*SGuest, error) {
|
||||
} else if len(guests) == 1 {
|
||||
return &guests[0], nil
|
||||
} else {
|
||||
return nil, nil
|
||||
return nil, sql.ErrNoRows
|
||||
}
|
||||
}
|
||||
|
||||
func (self *SSnapshot) GetDisk() (*SDisk, error) {
|
||||
iDisk, err := DiskManager.FetchById(self.DiskId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
disk := iDisk.(*SDisk)
|
||||
return disk, nil
|
||||
}
|
||||
|
||||
func (self *SSnapshot) GetHost() *SHost {
|
||||
iStorage, err := StorageManager.FetchById(self.StorageId)
|
||||
if err != nil {
|
||||
@@ -204,6 +214,10 @@ func (self *SSnapshot) CustomizeDelete(ctx context.Context, userCred mcclient.To
|
||||
if !self.FakeDeleted {
|
||||
return self.FakeDelete()
|
||||
} else {
|
||||
_, err := SnapshotManager.GetConvertSnapshot(self)
|
||||
if err != nil {
|
||||
httperrors.NewBadRequestError("Snapshot dosen't have convert snapshot, use disk-delete-snapshots")
|
||||
}
|
||||
return self.StartSnapshotDeleteTask(ctx, userCred, false, "")
|
||||
}
|
||||
} else {
|
||||
@@ -280,7 +294,7 @@ func (self *SSnapshotManager) PerformDeleteDiskSnapshots(ctx context.Context, us
|
||||
}
|
||||
|
||||
func (self *SSnapshot) StartSnapshotsDeleteTask(ctx context.Context, userCred mcclient.TokenCredential, parentTaskId string) error {
|
||||
task, err := taskman.TaskManager.NewTask(ctx, "BatchSnapshostDeleteTask", self, userCred, nil, parentTaskId, "", nil)
|
||||
task, err := taskman.TaskManager.NewTask(ctx, "BatchSnapshotsDeleteTask", self, userCred, nil, parentTaskId, "", nil)
|
||||
if err != nil {
|
||||
log.Errorf(err.Error())
|
||||
return err
|
||||
|
||||
@@ -19,7 +19,7 @@ type GuestDiskSnapshotTask struct {
|
||||
func init() {
|
||||
taskman.RegisterTask(GuestDiskSnapshotTask{})
|
||||
taskman.RegisterTask(SnapshotDeleteTask{})
|
||||
taskman.RegisterTask(BatchSnapshostDeleteTask{})
|
||||
taskman.RegisterTask(BatchSnapshotsDeleteTask{})
|
||||
}
|
||||
|
||||
func (self *GuestDiskSnapshotTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
|
||||
@@ -114,6 +114,7 @@ func (self *SnapshotDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneMo
|
||||
self.SetStageFailed(ctx, err.Error())
|
||||
return
|
||||
} else {
|
||||
// if snapshot is not used
|
||||
self.DeleteStaticSnapshot(ctx, snapshot)
|
||||
return
|
||||
}
|
||||
@@ -169,14 +170,6 @@ func (self *SnapshotDeleteTask) StartDeleteSnapshot(ctx context.Context, snapsho
|
||||
}
|
||||
|
||||
func (self *SnapshotDeleteTask) DeleteStaticSnapshot(ctx context.Context, snapshot *models.SSnapshot) {
|
||||
// convertSnapshot, err := models.SnapshotManager.GetConvertSnapshot(snapshot)
|
||||
// if err != nil {
|
||||
// self.TaskFailed(ctx, snapshot, err.Error())
|
||||
// return
|
||||
// }
|
||||
// if convertSnapshot == nil {
|
||||
// self.TaskFailed(ctx, snapshot, "Snapshot dose not have convert snapshot")
|
||||
// }
|
||||
err := snapshot.FakeDelete()
|
||||
if err != nil {
|
||||
self.TaskFailed(ctx, snapshot, err.Error())
|
||||
@@ -258,29 +251,29 @@ func (self *SnapshotDeleteTask) TaskFailed(ctx context.Context, snapshot *models
|
||||
guest.StartSyncstatus(ctx, self.UserCred, "")
|
||||
}
|
||||
|
||||
type BatchSnapshostDeleteTask struct {
|
||||
type BatchSnapshotsDeleteTask struct {
|
||||
taskman.STask
|
||||
}
|
||||
|
||||
func (self *BatchSnapshostDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
|
||||
func (self *BatchSnapshotsDeleteTask) OnInit(ctx context.Context, obj db.IStandaloneModel, data jsonutils.JSONObject) {
|
||||
snapshot := obj.(*models.SSnapshot)
|
||||
self.StartStorageDeleteSnapshot(ctx, snapshot)
|
||||
}
|
||||
|
||||
func (self *BatchSnapshostDeleteTask) StartStorageDeleteSnapshot(ctx context.Context, snapshot *models.SSnapshot) {
|
||||
func (self *BatchSnapshotsDeleteTask) StartStorageDeleteSnapshot(ctx context.Context, snapshot *models.SSnapshot) {
|
||||
host := snapshot.GetHost()
|
||||
if host == nil {
|
||||
self.SetStageFailed(ctx, "Cannot found snapshot host")
|
||||
return
|
||||
}
|
||||
self.SetStage("OnStorageDeleteSnapshot", nil)
|
||||
err := host.GetHostDriver().RequestDeleteSnapshotWithStorage(ctx, host, snapshot, self)
|
||||
err := host.GetHostDriver().RequestDeleteSnapshotsWithStorage(ctx, host, snapshot, self)
|
||||
if err != nil {
|
||||
self.SetStageFailed(ctx, err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
func (self *BatchSnapshostDeleteTask) OnStorageDeleteSnapshot(ctx context.Context, snapshot *models.SSnapshot, data jsonutils.JSONObject) {
|
||||
func (self *BatchSnapshotsDeleteTask) OnStorageDeleteSnapshot(ctx context.Context, snapshot *models.SSnapshot, data jsonutils.JSONObject) {
|
||||
snapshots := models.SnapshotManager.GetDiskSnapshots(snapshot.DiskId)
|
||||
for i := 0; i < len(snapshots); i++ {
|
||||
snapshots[i].RealDelete(ctx, self.UserCred)
|
||||
|
||||
Reference in New Issue
Block a user