diff --git a/pkg/compute/guestdrivers/aws.go b/pkg/compute/guestdrivers/aws.go index f516f5a8ee..68a237f732 100644 --- a/pkg/compute/guestdrivers/aws.go +++ b/pkg/compute/guestdrivers/aws.go @@ -149,15 +149,18 @@ func (self *SAwsGuestDriver) GetDeployStatus() ([]string, error) { func (self *SAwsGuestDriver) ValidateCreateData(ctx context.Context, userCred mcclient.TokenCredential, input *api.ServerCreateInput) (*api.ServerCreateInput, error) { if len(input.Eip) > 0 || input.EipBw > 0 { - if len(input.Networks) > 0 { + // 未明确指定network时,由调度器进行调度,跳过support_eip检查 + if len(input.Networks) > 0 && len(input.Networks[0].Network) > 0 { inetwork, err := db.FetchByIdOrName(models.NetworkManager, userCred, input.Networks[0].Network) if err != nil { - return nil, err + return nil, errors.Wrap(err, "SAwsGuestDriver.ValidateCreateData.Networks.FetchByIdOrName") } - support_eip := inetwork.(*models.SNetwork).GetMetadataJson("support_eip", nil) - if ok, _ := support_eip.Bool(); !ok { - return nil, httperrors.NewInputParameterError("network %s associated route table has no internet gateway attached.", inetwork.GetName()) + support_eip := inetwork.(*models.SNetwork).GetMetadataJson("ext:support_eip", nil) + if support_eip != nil { + if ok, _ := support_eip.Bool(); !ok { + return nil, httperrors.NewInputParameterError("network %s associated route table has no internet gateway attached.", inetwork.GetName()) + } } } }