Skip to content

Commit

Permalink
misc fix
Browse files Browse the repository at this point in the history
  • Loading branch information
wanyaoqi committed Jul 9, 2020
1 parent 3f39164 commit 5070775
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 18 deletions.
3 changes: 3 additions & 0 deletions pkg/apis/compute/instance_snapshot.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,9 @@ type InstanceSnapshotDetails struct {
// 快照列表
Snapshots []SimpleSnapshot `json:"snapshots"`
Properties map[string]string `json:"properties"`

// 主机快照大小
Size int `json:"size"`
}

type InstanceSnapshotListInput struct {
Expand Down
7 changes: 7 additions & 0 deletions pkg/compute/models/guests.go
Original file line number Diff line number Diff line change
Expand Up @@ -1013,10 +1013,17 @@ func (manager *SGuestManager) validateCreateData(
}

if len(input.InstanceSnapshotId) > 0 {
inputMem := input.VmemSize
inputCpu := input.VcpuCount
inputInstaceType := input.InstanceType
input, err = parseInstanceSnapshot(input)
if err != nil {
return nil, err
}
// keep input cpu mem flavor
input.VmemSize = inputMem
input.VcpuCount = inputCpu
input.InstanceType = inputInstaceType
}

resetPassword := true
Expand Down
1 change: 1 addition & 0 deletions pkg/compute/models/instance_snapshots.go
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ func (self *SInstanceSnapshot) getMoreDetails(userCred mcclient.TokenCredential,
Status: snapshots[i].Status,
StorageType: snapshots[i].GetStorageType(),
})
out.Size += snapshots[i].Size

if len(snapshots[i].StorageId) > 0 && out.StorageType == "" {
out.StorageType = snapshots[i].GetStorageType()
Expand Down
34 changes: 16 additions & 18 deletions pkg/compute/models/snapshots.go
Original file line number Diff line number Diff line change
Expand Up @@ -610,7 +610,11 @@ func (self *SSnapshot) ValidateDeleteCondition(ctx context.Context) error {
if count > 0 {
return httperrors.NewBadRequestError("snapshot referenced by instance snapshot")
}
return self.GetRegionDriver().ValidateSnapshotDelete(ctx, self)
driver := self.GetRegionDriver()
if driver != nil {
return driver.ValidateSnapshotDelete(ctx, self)
}
return nil
}

func (self *SSnapshot) GetStorage() *SStorage {
Expand All @@ -625,7 +629,11 @@ func (self *SSnapshot) GetStorageType() string {
}

func (self *SSnapshot) GetRegionDriver() IRegionDriver {
return self.GetRegion().GetDriver()
cloudRegion := self.GetRegion()
if cloudRegion != nil {
return cloudRegion.GetDriver()
}
return nil
}

func (self *SSnapshot) CustomizeDelete(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) error {
Expand All @@ -637,11 +645,14 @@ func (self *SSnapshot) AllowPerformDeleted(ctx context.Context, userCred mcclien
}

func (self *SSnapshot) PerformDeleted(ctx context.Context, userCred mcclient.TokenCredential, query jsonutils.JSONObject, data jsonutils.JSONObject) (jsonutils.JSONObject, error) {
db.Update(self, func() error {
_, err := db.Update(self, func() error {
self.OutOfChain = true
return nil
})
err := self.StartSnapshotDeleteTask(ctx, userCred, true, "")
if err != nil {
return nil, err
}
err = self.StartSnapshotDeleteTask(ctx, userCred, true, "")
return nil, err
}

Expand Down Expand Up @@ -1087,20 +1098,7 @@ func (manager *SSnapshotManager) ListItemExportKeys(ctx context.Context,
var err error
q, err = manager.SVirtualResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys)
if err != nil {
return nil, errors.Wrap(err, "SVirtualResourceBaseManager.ListItemExportKeys")
}

if keys.ContainsAny(manager.SManagedResourceBaseManager.GetExportKeys()...) {
q, err = manager.SManagedResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys)
if err != nil {
return nil, errors.Wrap(err, "SManagedResourceBaseManager.ListItemExportKeys")
}
}
if keys.ContainsAny(manager.SCloudregionResourceBaseManager.GetExportKeys()...) {
q, err = manager.SCloudregionResourceBaseManager.ListItemExportKeys(ctx, q, userCred, keys)
if err != nil {
return nil, errors.Wrap(err, "SCloudregionResourceBaseManager.ListItemExportKeys")
}
return nil, err
}
if keys.Contains("disk") {
q, err = manager.SDiskResourceBaseManager.ListItemExportKeys(ctx, q, userCred, stringutils2.NewSortedStrings([]string{"disk"}))
Expand Down

0 comments on commit 5070775

Please sign in to comment.