Use provided VipPortID for LB

pull/6/head
Jamie Hannaford 2017-04-12 12:50:37 +02:00
parent 9db7953c24
commit 622c69c1e5
1 changed files with 10 additions and 27 deletions

View File

@ -828,19 +828,16 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv
status.Ingress = []v1.LoadBalancerIngress{{IP: loadbalancer.VipAddress}} status.Ingress = []v1.LoadBalancerIngress{{IP: loadbalancer.VipAddress}}
port, err := getPortByIP(lbaas.network, loadbalancer.VipAddress) portID := loadbalancer.VipPortID
if err != nil { floatIP, err := getFloatingIPByPortID(lbaas.network, portID)
return nil, fmt.Errorf("Error getting port for LB vip %s: %v", loadbalancer.VipAddress, err)
}
floatIP, err := getFloatingIPByPortID(lbaas.network, port.ID)
if err != nil && err != ErrNotFound { if err != nil && err != ErrNotFound {
return nil, fmt.Errorf("Error getting floating ip for port %s: %v", port.ID, err) return nil, fmt.Errorf("Error getting floating ip for port %s: %v", portID, err)
} }
if floatIP == nil && lbaas.opts.FloatingNetworkId != "" { if floatIP == nil && lbaas.opts.FloatingNetworkId != "" {
glog.V(4).Infof("Creating floating ip for loadbalancer %s port %s", loadbalancer.ID, port.ID) glog.V(4).Infof("Creating floating ip for loadbalancer %s port %s", loadbalancer.ID, portID)
floatIPOpts := floatingips.CreateOpts{ floatIPOpts := floatingips.CreateOpts{
FloatingNetworkID: lbaas.opts.FloatingNetworkId, FloatingNetworkID: lbaas.opts.FloatingNetworkId,
PortID: port.ID, PortID: portID,
} }
floatIP, err = floatingips.Create(lbaas.network, floatIPOpts).Extract() floatIP, err = floatingips.Create(lbaas.network, floatIPOpts).Extract()
if err != nil { if err != nil {
@ -945,25 +942,15 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(clusterName string, apiService *v1.Serv
return nil, err return nil, err
} }
// Get the port ID portID := loadbalancer.VipPortID
port, err := getPortByIP(lbaas.network, loadbalancer.VipAddress)
if err != nil {
// cleanup what was created so far
_ = lbaas.EnsureLoadBalancerDeleted(clusterName, apiService)
return nil, err
}
update_opts := neutronports.UpdateOpts{SecurityGroups: []string{lbSecGroup.ID}} update_opts := neutronports.UpdateOpts{SecurityGroups: []string{lbSecGroup.ID}}
res := neutronports.Update(lbaas.network, portID, update_opts)
res := neutronports.Update(lbaas.network, port.ID, update_opts)
if res.Err != nil { if res.Err != nil {
glog.Errorf("Error occured updating port: %s", port.ID) glog.Errorf("Error occured updating port: %s", portID)
// cleanup what was created so far // cleanup what was created so far
_ = lbaas.EnsureLoadBalancerDeleted(clusterName, apiService) _ = lbaas.EnsureLoadBalancerDeleted(clusterName, apiService)
return nil, res.Err return nil, res.Err
} }
} }
return status, nil return status, nil
@ -1129,12 +1116,8 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(clusterName string, service *v1.
} }
if lbaas.opts.FloatingNetworkId != "" && loadbalancer != nil { if lbaas.opts.FloatingNetworkId != "" && loadbalancer != nil {
port, err := getPortByIP(lbaas.network, loadbalancer.VipAddress) portID := loadbalancer.VipPortID
if err != nil { floatingIP, err := getFloatingIPByPortID(lbaas.network, portID)
return err
}
floatingIP, err := getFloatingIPByPortID(lbaas.network, port.ID)
if err != nil && err != ErrNotFound { if err != nil && err != ErrNotFound {
return err return err
} }