From 8f175ec326c526b9b712a7ad86dcddfd44f3b21c Mon Sep 17 00:00:00 2001 From: tangbin Date: Wed, 19 Feb 2020 17:09:53 +0800 Subject: [PATCH 1/3] aws listener sync fix --- pkg/multicloud/aws/loadbalancerlistener.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/multicloud/aws/loadbalancerlistener.go b/pkg/multicloud/aws/loadbalancerlistener.go index 6c50fb593b..4c5b56d2b4 100644 --- a/pkg/multicloud/aws/loadbalancerlistener.go +++ b/pkg/multicloud/aws/loadbalancerlistener.go @@ -691,7 +691,16 @@ func (self *SRegion) SyncElbListener(listener *SElbListener, config *cloudprovid _, err = client.ModifyListener(params) if err != nil { - return err + if strings.Contains(err.Error(), "CertificateNotFound") { + // aws 比较诡异,证书能查询到,但是如果立即创建会报错,这里只能等待一会重试 + time.Sleep(10*time.Second) + _, err = client.ModifyListener(params) + if err != nil { + return errors.Wrap(err, "SRegion.SyncElbListener.ModifyListener.Retry") + } + } + + return errors.Wrap(err, "SRegion.SyncElbListener.ModifyListener") } hc := &cloudprovider.SLoadbalancerHealthCheck{ From 6f6cf7cd64349ba42c3595eecc36b67660aa9311 Mon Sep 17 00:00:00 2001 From: tangbin Date: Wed, 19 Feb 2020 17:56:45 +0800 Subject: [PATCH 2/3] aws rebuild root fix --- pkg/multicloud/aws/instance.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/multicloud/aws/instance.go b/pkg/multicloud/aws/instance.go index 5ce258587e..fb57518640 100644 --- a/pkg/multicloud/aws/instance.go +++ b/pkg/multicloud/aws/instance.go @@ -960,12 +960,17 @@ func (self *SRegion) ReplaceSystemDisk(ctx context.Context, instanceId string, i } log.Debugf("ReplaceSystemDisk replace root disk %s", rootDisk.DiskId) + subnetId := "" + if len(instance.VpcAttributes.NetworkId) > 0 { + subnetId = instance.VpcAttributes.NetworkId + } + // create tmp server tempName := fmt.Sprintf("__tmp_%s", instance.GetName()) _id, err := self.CreateInstance(tempName, imageId, instance.InstanceType, - "", + subnetId, "", instance.ZoneId, instance.Description, From 71499e7e1b1f839d3915dae835639ed4b3b05a98 Mon Sep 17 00:00:00 2001 From: tangbin Date: Wed, 19 Feb 2020 18:38:54 +0800 Subject: [PATCH 3/3] huawei http listener sync fix --- pkg/multicloud/aws/loadbalancerlistener.go | 2 +- pkg/multicloud/huawei/loadbalancer_backendgroup.go | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/multicloud/aws/loadbalancerlistener.go b/pkg/multicloud/aws/loadbalancerlistener.go index 4c5b56d2b4..4734cb0e6d 100644 --- a/pkg/multicloud/aws/loadbalancerlistener.go +++ b/pkg/multicloud/aws/loadbalancerlistener.go @@ -693,7 +693,7 @@ func (self *SRegion) SyncElbListener(listener *SElbListener, config *cloudprovid if err != nil { if strings.Contains(err.Error(), "CertificateNotFound") { // aws 比较诡异,证书能查询到,但是如果立即创建会报错,这里只能等待一会重试 - time.Sleep(10*time.Second) + time.Sleep(10 * time.Second) _, err = client.ModifyListener(params) if err != nil { return errors.Wrap(err, "SRegion.SyncElbListener.ModifyListener.Retry") diff --git a/pkg/multicloud/huawei/loadbalancer_backendgroup.go b/pkg/multicloud/huawei/loadbalancer_backendgroup.go index f0bbcedacc..a18fdb3caa 100644 --- a/pkg/multicloud/huawei/loadbalancer_backendgroup.go +++ b/pkg/multicloud/huawei/loadbalancer_backendgroup.go @@ -377,7 +377,9 @@ func (self *SRegion) UpdateLoadBalancerBackendGroup(backendGroupID string, group } poolObj.Set("lb_algorithm", jsonutils.NewString(scheduler)) - if group.StickySession != nil { + if group.StickySession == nil || group.StickySession.StickySession == api.LB_BOOL_OFF { + poolObj.Set("session_persistence", jsonutils.JSONNull) + } else { s := jsonutils.NewDict() timeout := int64(group.StickySession.StickySessionCookieTimeout / 60) if group.ListenType == api.LB_LISTENER_TYPE_UDP || group.ListenType == api.LB_LISTENER_TYPE_TCP {