From 7d97609cdd71942688fbda9ee2787bccc79fa739 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Fri, 7 Dec 2018 17:57:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=85=BE=E8=AE=AF=E4=BA=91?= =?UTF-8?q?=E7=B3=BB=E7=BB=9F=E7=9B=98=E5=A4=A7=E5=B0=8F=E9=AA=8C=E8=AF=81?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/guestdrivers/qcloud.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkg/compute/guestdrivers/qcloud.go b/pkg/compute/guestdrivers/qcloud.go index d057e4157f..14d5f25635 100644 --- a/pkg/compute/guestdrivers/qcloud.go +++ b/pkg/compute/guestdrivers/qcloud.go @@ -96,6 +96,24 @@ func (self *SQcloudGuestDriver) ValidateCreateData(ctx context.Context, userCred if data.Contains("net.0") && data.Contains("net.1") { return nil, httperrors.NewInputParameterError("cannot support more than 1 nic") } + sysDisk := models.SDiskConfig{} + if err := data.Unmarshal(&sysDisk, "disk.0"); err != nil { + return nil, fmt.Errorf("Missing system disk information") + } + switch sysDisk.Backend { + case models.STORAGE_CLOUD_BASIC, models.STORAGE_CLOUD_SSD: + if sysDisk.SizeMb < 50*10024 || sysDisk.SizeMb > 500*1024 { + return nil, fmt.Errorf("The %s system disk size must be in the range of 50 ~ 500GB", sysDisk.Backend) + } + case models.STORAGE_CLOUD_PREMIUM: + if sysDisk.SizeMb < 50*1024 || sysDisk.SizeMb > 1024*1024 { + return nil, fmt.Errorf("The %s system disk size must be in the range of 50 ~ 1024GB", sysDisk.Backend) + } + default: + if sysDisk.SizeMb < 50*1024 { + return nil, fmt.Errorf("The system disk must be greater than or equal to 50GB") + } + } return data, nil }