diff --git a/pkg/compute/guestdrivers/huawei.go b/pkg/compute/guestdrivers/huawei.go index 81425a030d..2d902b63cf 100644 --- a/pkg/compute/guestdrivers/huawei.go +++ b/pkg/compute/guestdrivers/huawei.go @@ -50,7 +50,7 @@ func (self *SHuaweiGuestDriver) GetQuotaPlatformID() []string { } func (self *SHuaweiGuestDriver) GetDefaultSysDiskBackend() string { - return api.STORAGE_HUAWEI_SATA + return api.STORAGE_HUAWEI_SAS } func (self *SHuaweiGuestDriver) GetMinimalSysDiskSizeGb() int { diff --git a/pkg/multicloud/aws/image.go b/pkg/multicloud/aws/image.go index 846c98336f..8fb525ca2b 100644 --- a/pkg/multicloud/aws/image.go +++ b/pkg/multicloud/aws/image.go @@ -39,6 +39,7 @@ const ( ImageImportStatusCompleted = "completed" ImageImportStatusUncompleted = "uncompleted" ImageImportStatusError = "error" + ImageImportStatusDeleted = "deleted" ) type TImageOwnerType string @@ -143,6 +144,8 @@ func (self *ImageImportTask) GetStatus() string { for _, item := range ret.ImportImageTasks { if *item.Status == "completed" { return ImageImportStatusCompleted + } else if *item.Status == "deleted" { + return ImageImportStatusDeleted } else { return ImageImportStatusUncompleted } diff --git a/pkg/multicloud/aws/storagecache.go b/pkg/multicloud/aws/storagecache.go index b1a9e5f802..7389494469 100644 --- a/pkg/multicloud/aws/storagecache.go +++ b/pkg/multicloud/aws/storagecache.go @@ -224,10 +224,20 @@ func (self *SStoragecache) uploadImage(ctx context.Context, userCred mcclient.To return "", err } - // todo:// 等待镜像导入完成 - err = cloudprovider.WaitStatusWithDelay(task, ImageImportStatusCompleted, 2*time.Minute, 2*time.Minute, 4*time.Hour) + err = cloudprovider.Wait(2*time.Minute, 4*time.Hour, func() (bool, error) { + status := task.GetStatus() + if status == ImageImportStatusDeleted { + return false, errors.Wrap(errors.ErrInvalidStatus, "SStoragecache.ImageImportStatusDeleted") + } + + if status == ImageImportStatusCompleted { + return true, nil + } + + return false, nil + }) if err != nil { - return "", errors.Wrap(err, "SStoragecache.WaitStatusWithDelay") + return "", errors.Wrap(err, "SStoragecache.Wait") } // add name tag