From aaa6ac23ea08b8657017045d0d4ccf0f744360a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E8=BD=A9?= Date: Fri, 25 Jan 2019 15:43:43 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=85=BE=E8=AE=AF=E4=BA=91?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E6=9C=BA=E5=99=A8=E6=97=B6=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E7=9B=98=E5=A4=A7=E5=B0=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/compute/guestdrivers/qcloud.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pkg/compute/guestdrivers/qcloud.go b/pkg/compute/guestdrivers/qcloud.go index e816c9e248..4442d65ffb 100644 --- a/pkg/compute/guestdrivers/qcloud.go +++ b/pkg/compute/guestdrivers/qcloud.go @@ -110,6 +110,29 @@ func (self *SQcloudGuestDriver) ValidateCreateData(ctx context.Context, userCred return nil, fmt.Errorf("The %s system disk size must be less than 1024GB", sysDisk.Backend) } } + + for i := 1; data.Contains(fmt.Sprintf("disk.%d", i)); i++ { + disk := models.SDiskConfig{} + if err := data.Unmarshal(&disk, fmt.Sprintf("disk.%d", i)); err != nil { + return nil, httperrors.NewInputParameterError("invalid diskinfo of index %d", i) + } + switch disk.Backend { + case models.STORAGE_CLOUD_BASIC: + if disk.SizeMb < 10*1024 || disk.SizeMb > 16000*1024 { + return nil, httperrors.NewInputParameterError("The %s disk size must be in the range of 10GB ~ 16000GB", disk.Backend) + } + case models.STORAGE_CLOUD_PREMIUM: + if disk.SizeMb < 50*1024 || disk.SizeMb > 16000*1024 { + return nil, httperrors.NewInputParameterError("The %s disk size must be in the range of 50GB ~ 16000GB", disk.Backend) + } + case models.STORAGE_CLOUD_SSD: + if disk.SizeMb < 100*1024 || disk.SizeMb > 16000*1024 { + return nil, httperrors.NewInputParameterError("The %s disk size must be in the range of 100GB ~ 16000GB", disk.Backend) + } + default: + return nil, httperrors.NewInputParameterError("Unkonwn disk type %s", disk.Backend) + } + } return data, nil }