避免rebuild_root时因镜像状态变化导致上传镜像超过限制

This commit is contained in:
屈轩
2019-04-02 21:23:35 +08:00
committed by Yousong Zhou
parent 14dd14d53d
commit 428d528b5e
3 changed files with 14 additions and 17 deletions
+1 -1
View File
@@ -116,7 +116,7 @@ func (self *SHost) _createVM(name string, imgId string, sysDisk cloudprovider.SD
log.Errorf("getiamge fail %s", err)
return "", err
}
if img.ImageState != ImageStatusAvailable {
if img.ImageState != ImageStatusNormal || img.ImageState != ImageStatusUsing {
log.Errorf("image %s status %s", imgId, img.ImageState)
return "", fmt.Errorf("image not ready")
}
+11 -15
View File
@@ -32,10 +32,12 @@ import (
type ImageStatusType string
const (
ImageStatusCreating ImageStatusType = "Creating"
ImageStatusAvailable ImageStatusType = "NORMAL"
ImageStatusUnAvailable ImageStatusType = "UnAvailable"
ImageStatusCreateFailed ImageStatusType = "CreateFailed"
ImageStatusCreating ImageStatusType = "CREATING"
ImageStatusNormal ImageStatusType = "NORMAL"
ImageStatusSycing ImageStatusType = "SYNCING"
ImageStatusImporting ImageStatusType = "IMPORTING"
ImageStatusUsing ImageStatusType = "USING"
ImageStatusDeleting ImageStatusType = "DELETING"
)
type SImage struct {
@@ -133,14 +135,10 @@ func (self *SImage) Delete(ctx context.Context) error {
func (self *SImage) GetStatus() string {
switch self.ImageState {
case ImageStatusCreating:
case ImageStatusCreating, ImageStatusSycing, ImageStatusImporting:
return models.CACHED_IMAGE_STATUS_CACHING
case ImageStatusAvailable:
case ImageStatusNormal, ImageStatusUsing:
return models.CACHED_IMAGE_STATUS_READY
case ImageStatusUnAvailable:
return models.CACHED_IMAGE_STATUS_CACHE_FAILED
case ImageStatusCreateFailed:
return models.CACHED_IMAGE_STATUS_CACHE_FAILED
default:
return models.CACHED_IMAGE_STATUS_CACHE_FAILED
}
@@ -148,14 +146,12 @@ func (self *SImage) GetStatus() string {
func (self *SImage) GetImageStatus() string {
switch self.ImageState {
case ImageStatusCreating:
case ImageStatusCreating, ImageStatusSycing, ImageStatusImporting:
return cloudprovider.IMAGE_STATUS_SAVING
case ImageStatusAvailable:
case ImageStatusNormal, ImageStatusUsing:
return cloudprovider.IMAGE_STATUS_ACTIVE
case ImageStatusUnAvailable:
case ImageStatusDeleting:
return cloudprovider.IMAGE_STATUS_DELETED
case ImageStatusCreateFailed:
return cloudprovider.IMAGE_STATUS_KILLED
default:
return cloudprovider.IMAGE_STATUS_DELETED
}
+2 -1
View File
@@ -150,9 +150,10 @@ func (self *SStoragecache) UploadImage(ctx context.Context, userCred mcclient.To
if err != nil {
log.Errorf("GetImageStatus error %s", err)
}
if status == ImageStatusAvailable && !isForce {
if (status == ImageStatusNormal || status == ImageStatusUsing) && !isForce {
return extId, nil
}
log.Debugf("image status: %s isForce: %v", status, isForce)
} else {
log.Debugf("UploadImage: no external ID")
}