Merge pull request #11644 from tb365/bugfix/tb-bugfix-0701401

azure lb sync listener frontip fix
This commit is contained in:
Zexi Li
2021-07-15 18:24:08 +08:00
committed by GitHub
2 changed files with 52 additions and 13 deletions
+44 -9
View File
@@ -16,7 +16,7 @@ import (
type SLoadbalancer struct {
region *SRegion
eip cloudprovider.ICloudEIP
eips []cloudprovider.ICloudEIP
lbbgs []cloudprovider.ICloudLoadbalancerBackendGroup
listeners []cloudprovider.ICloudLoadbalancerListener
@@ -79,7 +79,7 @@ func (self *SLoadbalancer) Refresh() error {
return errors.Wrap(err, "jsonutils.Update")
}
self.eip = nil
self.eips = nil
self.lbbgs = nil
self.listeners = nil
return nil
@@ -273,20 +273,55 @@ func (self *SLoadbalancer) getEipIds() []string {
}
func (self *SLoadbalancer) GetIEIP() (cloudprovider.ICloudEIP, error) {
if self.eip != nil {
return self.eip, nil
ieips, err := self.GetIEIPS()
if err != nil {
return nil, errors.Wrap(err, "GetIEIPS")
}
eips := self.getEipIds()
if len(eips) > 0 {
eip, err := self.region.GetIEipById(eips[0])
self.eip = eip
return eip, err
if len(ieips) > 0 {
return self.eips[0], nil
}
return nil, nil
}
func (self *SLoadbalancer) GetIEIPById(eipId string) (cloudprovider.ICloudEIP, error) {
ieips, err := self.GetIEIPS()
if err != nil {
return nil, errors.Wrap(err, "GetIEIPS")
}
for i := range ieips {
if ieips[i].GetId() == eipId {
return ieips[i], nil
}
}
return nil, errors.Wrap(cloudprovider.ErrNotFound, eipId)
}
func (self *SLoadbalancer) GetIEIPS() ([]cloudprovider.ICloudEIP, error) {
if self.eips != nil {
return self.eips, nil
}
eips := self.getEipIds()
ieips := make([]cloudprovider.ICloudEIP, 0)
for i := range eips {
ieip, err := self.region.GetIEipById(eips[i])
if err != nil {
return nil, errors.Wrap(err, "GetIEIP")
}
ieips = append(ieips, ieip)
}
if len(ieips) > 0 {
self.eips = ieips
}
return self.eips, nil
}
func (self *SLoadbalancer) Delete(ctx context.Context) error {
return errors.Wrap(cloudprovider.ErrNotImplemented, "Delete")
}
+8 -4
View File
@@ -148,7 +148,7 @@ func (self *SLoadBalancerListener) GetSysTags() map[string]string {
func (self *SLoadBalancerListener) GetTags() (map[string]string, error) {
if self.fp != nil {
if self.fp.Properties.PublicIPAddress != nil && len(self.fp.Properties.PublicIPAddress.ID) > 0 {
eip, _ := self.lb.GetIEIP()
eip, _ := self.lb.GetIEIPById(self.fp.Properties.PublicIPAddress.ID)
if eip != nil {
return map[string]string{"FrontendIP": eip.GetIpAddr()}, nil
}
@@ -259,7 +259,9 @@ func (self *SLoadBalancerListener) GetHealthCheckInterval() int {
}
switch self.GetHealthCheckType() {
case api.LB_HEALTH_CHECK_HTTP, api.LB_HEALTH_CHECK_HTTPS:
return self.healthcheck.Properties.Interval
if self.healthcheck.Properties.Interval > 0 {
return self.healthcheck.Properties.Interval
}
}
return self.healthcheck.Properties.IntervalInSeconds
@@ -275,10 +277,12 @@ func (self *SLoadBalancerListener) GetHealthCheckFail() int {
}
switch self.GetHealthCheckType() {
case api.LB_HEALTH_CHECK_HTTP, api.LB_HEALTH_CHECK_HTTPS:
return self.healthcheck.Properties.UnhealthyThreshold
if self.healthcheck.Properties.UnhealthyThreshold > 0 {
return self.healthcheck.Properties.UnhealthyThreshold
}
}
return self.healthcheck.Properties.IntervalInSeconds
return self.healthcheck.Properties.NumberOfProbes
}
func (self *SLoadBalancerListener) GetHealthCheckReq() string {