fix: 避免根磁盘小于镜像大小导致创建失败

This commit is contained in:
Qu Xuan
2020-02-25 15:28:25 +08:00
parent 28249f615c
commit 336819c802

View File

@@ -82,22 +82,7 @@ func (region *SRegion) GetFlavor(flavorId string) (*SFlavor, error) {
}
func (region *SRegion) SyncFlavor(name string, cpu, memoryMb, diskGB int) (string, error) {
id, err := region.syncFlavor(name, cpu, memoryMb, diskGB)
if err != nil {
return "", errors.Wrap(err, "syncFlavor")
}
flavor, err := region.GetFlavor(id)
if err != nil {
return "", errors.Wrapf(err, "region.GetFlavor(%s)", id)
}
if flavor.GetCpuCoreCount() != cpu || flavor.GetMemorySizeMB() != memoryMb || flavor.Disk != diskGB {
flavor, err = region.CreateFlavor(name, cpu, memoryMb, diskGB)
if err != nil {
return "", errors.Wrap(err, "CreateFlavor")
}
return flavor.ID, nil
}
return id, nil
return region.syncFlavor(name, cpu, memoryMb, diskGB)
}
func (region *SRegion) syncFlavor(name string, cpu, memoryMb, diskGB int) (string, error) {
@@ -105,30 +90,32 @@ func (region *SRegion) syncFlavor(name string, cpu, memoryMb, diskGB int) (strin
if err != nil {
return "", err
}
if len(name) > 0 {
for _, flavor := range flavors {
flavorName := flavor.GetName()
if flavorName == name {
return flavor.ID, nil
}
}
flavor, err := region.CreateFlavor(name, cpu, memoryMb, diskGB)
if err != nil {
return "", errors.Wrap(err, "region.CreateClavor()")
}
return flavor.ID, nil
}
if cpu == 0 && memoryMb == 0 {
return "", fmt.Errorf("failed to find instance type %s", name)
}
match := false
for _, flavor := range flavors {
if flavor.GetCpuCoreCount() == cpu && flavor.GetMemorySizeMB() == memoryMb {
return flavor.ID, nil
flavorName := flavor.GetName()
if (len(name) == 0 || flavorName == name || flavorName == fmt.Sprintf("%s-%d", name, diskGB)) && flavor.GetCpuCoreCount() == cpu && flavor.GetMemorySizeMB() == memoryMb {
if diskGB <= flavor.GetSysDiskMaxSizeGB() {
return flavor.ID, nil
}
match = true
}
}
return "", fmt.Errorf("failed to find right flavor(name: %s cpu: %d memory: %d)", name, cpu, memoryMb)
if len(name) == 0 {
name = fmt.Sprintf("ecs.g1.c%dm%d", cpu, memoryMb/1024)
}
if match {
name = fmt.Sprintf("%s-%d", name, diskGB)
}
flavor, err := region.CreateFlavor(name, cpu, memoryMb, diskGB)
if err != nil {
return "", errors.Wrap(err, "CreateFlavor")
}
return flavor.ID, nil
}
func (region *SRegion) CreateISku(name string, vCpu int, memoryMb int) error {
@@ -137,7 +124,7 @@ func (region *SRegion) CreateISku(name string, vCpu int, memoryMb int) error {
}
func (region *SRegion) CreateFlavor(name string, cpu int, memoryMb int, diskGB int) (*SFlavor, error) {
if diskGB < 30 {
if diskGB <= 0 {
diskGB = 30
}
params := map[string]map[string]interface{}{