From b173ff946faa524b8616ad13ed716101e4a853e8 Mon Sep 17 00:00:00 2001 From: TangBin Date: Fri, 2 Aug 2019 17:39:12 +0800 Subject: [PATCH] huawei & elb bugfix --- pkg/compute/guestdrivers/aws.go | 4 ++++ pkg/compute/guestdrivers/ucloud.go | 9 +++++++++ pkg/compute/models/loadbalanceracls.go | 4 ++-- .../models/loadbalancercertificates.go | 5 +++++ pkg/compute/models/loadbalancerlisteners.go | 5 +++-- pkg/compute/regiondrivers/aws.go | 4 ++-- pkg/multicloud/aws/disk.go | 5 +++++ .../aws/loadbalancerbackendgroup.go | 1 + pkg/multicloud/huawei/image.go | 5 +++++ pkg/multicloud/ucloud/securitygroup.go | 19 ++++++++++++++----- 10 files changed, 50 insertions(+), 11 deletions(-) diff --git a/pkg/compute/guestdrivers/aws.go b/pkg/compute/guestdrivers/aws.go index 7e7d5c43a9..b55d465c61 100644 --- a/pkg/compute/guestdrivers/aws.go +++ b/pkg/compute/guestdrivers/aws.go @@ -72,6 +72,10 @@ func (self *SAwsGuestDriver) IsNeedInjectPasswordByCloudInit(desc *cloudprovider func (self *SAwsGuestDriver) GetLinuxDefaultAccount(desc cloudprovider.SManagedVMCreateConfig) string { // return fetchAwsUserName(desc) + if desc.OsType == "Windows" { + return "Administrator" + } + return api.VM_AWS_DEFAULT_LOGIN_USER } diff --git a/pkg/compute/guestdrivers/ucloud.go b/pkg/compute/guestdrivers/ucloud.go index 36701dc7fa..1a5c562948 100644 --- a/pkg/compute/guestdrivers/ucloud.go +++ b/pkg/compute/guestdrivers/ucloud.go @@ -20,6 +20,7 @@ import ( "yunion.io/x/pkg/utils" api "yunion.io/x/onecloud/pkg/apis/compute" + "yunion.io/x/onecloud/pkg/cloudprovider" "yunion.io/x/onecloud/pkg/compute/models" ) @@ -89,6 +90,14 @@ func (self *SUCloudGuestDriver) ValidateResizeDisk(guest *models.SGuest, disk *m return nil } +func (self *SUCloudGuestDriver) GetLinuxDefaultAccount(desc cloudprovider.SManagedVMCreateConfig) string { + if desc.OsType == "Windows" { + return "Administrator" + } + + return "root" +} + func init() { driver := SUCloudGuestDriver{} models.RegisterGuestDriver(&driver) diff --git a/pkg/compute/models/loadbalanceracls.go b/pkg/compute/models/loadbalanceracls.go index a31215cc43..be83001116 100644 --- a/pkg/compute/models/loadbalanceracls.go +++ b/pkg/compute/models/loadbalanceracls.go @@ -160,7 +160,7 @@ func loadbalancerAclsValidateAclEntries(data *jsonutils.JSONDict, update bool) ( func (man *SLoadbalancerAclManager) FetchByFingerPrint(fingerprint string) (*SLoadbalancerAcl, error) { ret := &SLoadbalancerAcl{} - q := man.Query().IsFalse("pending_deletetd") + q := man.Query().IsFalse("pending_deleted") q = q.Equals("fingerprint", fingerprint).Asc("created_at").Limit(1) err := q.First(ret) if err != nil { @@ -171,7 +171,7 @@ func (man *SLoadbalancerAclManager) FetchByFingerPrint(fingerprint string) (*SLo } func (man *SLoadbalancerAclManager) CountByFingerPrint(fingerprint string) int { - q := man.Query().IsFalse("pending_deletetd") + q := man.Query().IsFalse("pending_deleted") return q.Equals("fingerprint", fingerprint).Asc("created_at").Count() } diff --git a/pkg/compute/models/loadbalancercertificates.go b/pkg/compute/models/loadbalancercertificates.go index 7ff19bf959..0404b2e83a 100644 --- a/pkg/compute/models/loadbalancercertificates.go +++ b/pkg/compute/models/loadbalancercertificates.go @@ -208,6 +208,11 @@ func (man *SLoadbalancerCertificateManager) ListItemFilter(ctx context.Context, if err != nil { return nil, err } + + if jsonutils.QueryBoolean(query, "usable", false) { + q = q.IsNotEmpty("certificate").IsNotEmpty("private_key") + } + return q, nil } diff --git a/pkg/compute/models/loadbalancerlisteners.go b/pkg/compute/models/loadbalancerlisteners.go index fd6a1d3660..a2b74a8c40 100644 --- a/pkg/compute/models/loadbalancerlisteners.go +++ b/pkg/compute/models/loadbalancerlisteners.go @@ -763,6 +763,7 @@ func (lblis *SLoadbalancerListener) constructFieldsFromCloudListener(userCred mc lblis.HealthCheckTimeout = extListener.GetHealthCheckTimeout() lblis.HealthCheckInterval = extListener.GetHealthCheckInterval() lblis.HealthCheckRise = extListener.GetHealthCheckRise() + lblis.HealthCheckFall = extListener.GetHealthCheckFail() } lblis.BackendServerPort = extListener.GetBackendServerPort() @@ -821,9 +822,9 @@ func (lblis *SLoadbalancerListener) constructFieldsFromCloudListener(userCred mc group, err := db.FetchByExternalId(AwsCachedLbbgManager, groupId) if err != nil { log.Errorf("Fetch aws loadbalancer backendgroup by external id %s failed: %s", groupId, err) + } else { + lblis.BackendGroupId = group.(*SAwsCachedLbbg).BackendGroupId } - - lblis.BackendGroupId = group.(*SAwsCachedLbbg).BackendGroupId } } else if group, err := db.FetchByExternalId(LoadbalancerBackendGroupManager, groupId); err == nil { lblis.BackendGroupId = group.GetId() diff --git a/pkg/compute/regiondrivers/aws.go b/pkg/compute/regiondrivers/aws.go index 4793bb5571..d25f71c5d0 100644 --- a/pkg/compute/regiondrivers/aws.go +++ b/pkg/compute/regiondrivers/aws.go @@ -581,8 +581,8 @@ func (self *SAwsRegionDriver) ValidateCreateLoadbalancerListenerRuleData(ctx con } // check backend group protocol http & https - data.Remove("domain") - data.Remove("path") + // data.Remove("domain") + // data.Remove("path") data.Set("condition", jsonutils.NewString(condition)) data.Set("cloudregion_id", jsonutils.NewString(listener.CloudregionId)) data.Set("manager_id", jsonutils.NewString(listener.ManagerId)) diff --git a/pkg/multicloud/aws/disk.go b/pkg/multicloud/aws/disk.go index 76a5716ec6..943cf3397e 100644 --- a/pkg/multicloud/aws/disk.go +++ b/pkg/multicloud/aws/disk.go @@ -478,6 +478,11 @@ func (self *SRegion) CreateDisk(zoneId string, category string, name string, siz if len(snapshotId) > 0 { params.SetSnapshotId(snapshotId) } + + if category == api.STORAGE_IO1_SSD { + params.SetIops(200) + } + params.SetTagSpecifications([]*ec2.TagSpecification{ec2Tags}) ret, err := self.ec2Client.CreateVolume(params) diff --git a/pkg/multicloud/aws/loadbalancerbackendgroup.go b/pkg/multicloud/aws/loadbalancerbackendgroup.go index 3ddccd2abd..d655cb4d19 100644 --- a/pkg/multicloud/aws/loadbalancerbackendgroup.go +++ b/pkg/multicloud/aws/loadbalancerbackendgroup.go @@ -166,6 +166,7 @@ func (self *SElbBackendGroup) GetHealthCheck() (*cloudprovider.SLoadbalancerHeal health := &cloudprovider.SLoadbalancerHealthCheck{} health.HealthCheck = api.LB_BOOL_ON health.HealthCheckRise = self.HealthyThresholdCount + health.HealthCheckFail = self.UnhealthyThresholdCount health.HealthCheckInterval = self.HealthCheckIntervalSeconds health.HealthCheckURI = self.HealthCheckPath health.HealthCheckType = self.HealthCheckProtocol diff --git a/pkg/multicloud/huawei/image.go b/pkg/multicloud/huawei/image.go index 7334217bfe..f8ea6efca7 100644 --- a/pkg/multicloud/huawei/image.go +++ b/pkg/multicloud/huawei/image.go @@ -83,6 +83,7 @@ type SImage struct { SupportDiskIntensive string `json:"__support_diskintensive"` SupportXENGPUType string `json:"__support_xen_gpu_type"` SupportKVMGPUType string `json:"__support_kvm_gpu_type"` + SupportArm string `json:"__support_arm"` } func (self *SImage) GetMinRamSizeMb() int { @@ -244,6 +245,10 @@ func excludeImage(image SImage) bool { return true } + if len(image.SupportArm) > 0 { + return true + } + return false } diff --git a/pkg/multicloud/ucloud/securitygroup.go b/pkg/multicloud/ucloud/securitygroup.go index 0f7abc5980..902adae389 100644 --- a/pkg/multicloud/ucloud/securitygroup.go +++ b/pkg/multicloud/ucloud/securitygroup.go @@ -16,10 +16,11 @@ package ucloud import ( "fmt" + "math/rand" "net" "strconv" "strings" - "yunion.io/x/pkg/util/stringutils" + "time" "yunion.io/x/jsonutils" "yunion.io/x/log" @@ -188,11 +189,19 @@ func (self *SRegion) GetSecurityGroupById(secGroupId string) (*SSecurityGroup, e } } -func (self *SRegion) CreateDefaultSecurityGroup(name, description string) (string, error) { - if strings.ToLower(name) == "default" { - // 避免与default安全组名称冲突 - name = name + stringutils.UUID4() +func randomString(prefix string, length int) string { + bytes := []byte("0123456789abcdefghijklmnopqrstuvwxyz") + result := []byte{} + r := rand.New(rand.NewSource(time.Now().UnixNano())) + for i := 0; i < length; i++ { + result = append(result, bytes[r.Intn(len(bytes))]) } + return prefix + string(result) +} + +func (self *SRegion) CreateDefaultSecurityGroup(name, description string) (string, error) { + // 减少安全组名称冲突 + name = randomString(name, 4) return self.CreateSecurityGroup(name, description, []string{"TCP|1-65535|0.0.0.0/0|ACCEPT|LOW", "UDP|1-65535|0.0.0.0/0|ACCEPT|LOW", "ICMP||0.0.0.0/0|ACCEPT|LOW"}) }