Skip to content

Commit

Permalink
fix: 加入Azure套餐和镜像的检查
Browse files Browse the repository at this point in the history
  • Loading branch information
Qu Xuan committed May 22, 2020
1 parent a9c0012 commit 0f2ff53
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 2 deletions.
32 changes: 32 additions & 0 deletions pkg/compute/guestdrivers/azure.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ package guestdrivers
import (
"context"
"fmt"
"strings"

"yunion.io/x/jsonutils"
"yunion.io/x/pkg/errors"
Expand Down Expand Up @@ -160,6 +161,37 @@ func (self *SAzureGuestDriver) ValidateCreateData(ctx context.Context, userCred
if !find {
return nil, httperrors.NewResourceNotFoundError("failed to find subformat vhd for image %s, please append 'vhd' for glance options(target_image_formats)", image.Name)
}
} else {
if len(input.InstanceType) > 0 {
if image.UEFI.IsFalse() {
if strings.HasPrefix(input.InstanceType, "Standard_M") && strings.HasSuffix(input.InstanceType, "v2") {
return nil, httperrors.NewNotSupportedError("Azure Mv2-series instance sku only support UEFI image")
}
} else {
// https://docs.microsoft.com/en-us/azure/virtual-machines/windows/generation-2
if !(strings.HasPrefix(input.InstanceType, "Standard_B") || // B-series
(strings.HasPrefix(input.InstanceType, "Standard_DC") && strings.HasSuffix(input.InstanceType, "s_v2") || input.InstanceType == "Standard_DC8_v2") || // DCsv2-series
(strings.HasPrefix(input.InstanceType, "Standard_DS") && strings.HasSuffix(input.InstanceType, "v2")) || // DSv2-series
(strings.HasPrefix(input.InstanceType, "Standard_DS") && strings.HasSuffix(input.InstanceType, "s_v3")) || // Dsv3-series
(strings.HasPrefix(input.InstanceType, "Standard_D") && strings.HasSuffix(input.InstanceType, "as_v4")) || // Dasv4-series
(strings.HasPrefix(input.InstanceType, "Standard_E") && strings.HasSuffix(input.InstanceType, "s_v3")) || // Esv3-series
(strings.HasPrefix(input.InstanceType, "Standard_E") && strings.HasSuffix(input.InstanceType, "as_v4")) || // Easv4-series
(strings.HasPrefix(input.InstanceType, "Standard_F") && strings.HasSuffix(input.InstanceType, "s_v2")) || // Fsv2-series
(strings.HasPrefix(input.InstanceType, "Standard_GS")) || // GS-series
(strings.HasPrefix(input.InstanceType, "Standard_HB")) || // HB-series
(strings.HasPrefix(input.InstanceType, "Standard_HC")) || // HC-series
(strings.HasPrefix(input.InstanceType, "Standard_L") && strings.HasSuffix(input.InstanceType, "s")) || // Ls-series
(strings.HasPrefix(input.InstanceType, "Standard_L") && strings.HasSuffix(input.InstanceType, "s_v2")) || // Ls-series
(strings.HasPrefix(input.InstanceType, "Standard_M")) || // M-series
(strings.HasPrefix(input.InstanceType, "Standard_M") && strings.HasSuffix(input.InstanceType, "s_v2")) || // Mv2-series
(strings.HasPrefix(input.InstanceType, "Standard_NC") && strings.HasSuffix(input.InstanceType, "s_v2")) || // NCv2-series
(strings.HasPrefix(input.InstanceType, "Standard_NC") && strings.HasSuffix(input.InstanceType, "s_v3")) || // NCv3-series
(strings.HasPrefix(input.InstanceType, "Standard_ND")) || // ND-series
(strings.HasPrefix(input.InstanceType, "Standard_NV") && strings.HasSuffix(input.InstanceType, "s_v3"))) { // NVv3-series
return nil, httperrors.NewUnsupportOperationError("Azure UEFI image %s not support this instance sku", image.Name)
}
}
}
}
}
return input, nil
Expand Down
7 changes: 5 additions & 2 deletions pkg/multicloud/azure/image.go
Original file line number Diff line number Diff line change
Expand Up @@ -328,6 +328,7 @@ func (self *SRegion) getOfferedImages(publishersFilter []string, offersFilter []
image.ImageType = imageType
image.Properties.StorageProfile.OsDisk.DiskSizeGB = int32(_image.Properties.OsDiskImage.SizeInGb)
image.Properties.StorageProfile.OsDisk.OsType = _image.Properties.OsDiskImage.OperatingSystem
image.Properties.HyperVGeneration = _image.Properties.HyperVGeneration
images = append(images, image)
}
}
Expand Down Expand Up @@ -447,8 +448,9 @@ type SOsDiskImage struct {
}

type SAzureImageResourceProperties struct {
ReplicaType string `json:"replicaType"`
OsDiskImage SOsDiskImage `json:"osDiskImage"`
ReplicaType string `json:"replicaType"`
OsDiskImage SOsDiskImage `json:"osDiskImage"`
HyperVGeneration string `json:"hyperVGeneration,omitempty"`
}

type SAzureImageResource struct {
Expand Down Expand Up @@ -587,6 +589,7 @@ func (region *SRegion) getOfferedImage(offerId string) (SImage, error) {
if err == nil {
image.Properties.StorageProfile.OsDisk.DiskSizeGB = int32(_image.Properties.OsDiskImage.SizeInGb)
image.Properties.StorageProfile.OsDisk.OperatingSystem = _image.Properties.OsDiskImage.OperatingSystem
image.Properties.HyperVGeneration = _image.Properties.HyperVGeneration
}
return image, nil
}
Expand Down

0 comments on commit 0f2ff53

Please sign in to comment.