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, diff --git a/pkg/multicloud/aws/loadbalancerlistener.go b/pkg/multicloud/aws/loadbalancerlistener.go index 6c50fb593b..4734cb0e6d 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{ 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 {