Refactor [add|rm]LBBackend() to use lb struct
This was passing extra information and adding confusion about the purpose of the load balancing structure. Signed-off-by: Chris Telfer <ctelfer@docker.com>
This commit is contained in:
parent
78b684a24a
commit
85a3483b4b
|
@ -291,9 +291,7 @@ func (c *controller) addServiceBinding(svcName, svcID, nID, eID, containerName s
|
|||
|
||||
// Add loadbalancer service and backend in all sandboxes in
|
||||
// the network only if vip is valid.
|
||||
if len(vip) != 0 {
|
||||
n.(*network).addLBBackend(ip, vip, lb, ingressPorts)
|
||||
}
|
||||
n.(*network).addLBBackend(ip, lb)
|
||||
|
||||
// Add the appropriate name resolutions
|
||||
c.addEndpointNameResolution(svcName, svcID, nID, eID, containerName, vip, serviceAliases, taskAliases, ip, addService, "addServiceBinding")
|
||||
|
@ -368,8 +366,8 @@ func (c *controller) rmServiceBinding(svcName, svcID, nID, eID, containerName st
|
|||
|
||||
// Remove loadbalancer service(if needed) and backend in all
|
||||
// sandboxes in the network only if the vip is valid.
|
||||
if len(vip) != 0 && entries == 0 {
|
||||
n.(*network).rmLBBackend(ip, vip, lb, ingressPorts, rmService, fullRemove)
|
||||
if entries == 0 {
|
||||
n.(*network).rmLBBackend(ip, lb, rmService, fullRemove)
|
||||
}
|
||||
|
||||
// Delete the name resolutions
|
||||
|
|
|
@ -114,7 +114,10 @@ func (sb *sandbox) populateLoadbalancers(ep *endpoint) {
|
|||
|
||||
// Add loadbalancer backend to all sandboxes which has a connection to
|
||||
// this network. If needed add the service as well.
|
||||
func (n *network) addLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []*PortConfig) {
|
||||
func (n *network) addLBBackend(ip net.IP, lb *loadBalancer) {
|
||||
if len(lb.vip) == 0 {
|
||||
return
|
||||
}
|
||||
n.WalkEndpoints(func(e Endpoint) bool {
|
||||
ep := e.(*endpoint)
|
||||
if sb, ok := ep.getSandbox(); ok {
|
||||
|
@ -127,7 +130,7 @@ func (n *network) addLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []
|
|||
gwIP = ep.Iface().Address().IP
|
||||
}
|
||||
|
||||
sb.addLBBackend(ip, vip, lb.fwMark, ingressPorts, ep.Iface().Address(), gwIP, n.ingress)
|
||||
sb.addLBBackend(ip, lb.vip, lb.fwMark, lb.service.ingressPorts, ep.Iface().Address(), gwIP, n.ingress)
|
||||
}
|
||||
|
||||
return false
|
||||
|
@ -137,7 +140,10 @@ func (n *network) addLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []
|
|||
// Remove loadbalancer backend from all sandboxes which has a
|
||||
// connection to this network. If needed remove the service entry as
|
||||
// well, as specified by the rmService bool.
|
||||
func (n *network) rmLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []*PortConfig, rmService bool, fullRemove bool) {
|
||||
func (n *network) rmLBBackend(ip net.IP, lb *loadBalancer, rmService bool, fullRemove bool) {
|
||||
if len(lb.vip) == 0 {
|
||||
return
|
||||
}
|
||||
n.WalkEndpoints(func(e Endpoint) bool {
|
||||
ep := e.(*endpoint)
|
||||
if sb, ok := ep.getSandbox(); ok {
|
||||
|
@ -150,7 +156,7 @@ func (n *network) rmLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []*
|
|||
gwIP = ep.Iface().Address().IP
|
||||
}
|
||||
|
||||
sb.rmLBBackend(ip, vip, lb.fwMark, ingressPorts, ep.Iface().Address(), gwIP, rmService, fullRemove, n.ingress)
|
||||
sb.rmLBBackend(ip, lb.vip, lb.fwMark, lb.service.ingressPorts, ep.Iface().Address(), gwIP, rmService, fullRemove, n.ingress)
|
||||
}
|
||||
|
||||
return false
|
||||
|
|
|
@ -19,7 +19,13 @@ func init() {
|
|||
lbPolicylistMap = make(map[*loadBalancer]*policyLists)
|
||||
}
|
||||
|
||||
func (n *network) addLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []*PortConfig) {
|
||||
func (n *network) addLBBackend(ip net.IP, lb *loadBalancer) {
|
||||
if len(lb.vip) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
vip := lb.vip
|
||||
ingressPorts := lb.service.ingressPorts
|
||||
|
||||
if system.GetOSVersion().Build > 16236 {
|
||||
lb.Lock()
|
||||
|
@ -117,11 +123,18 @@ func (n *network) addLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []
|
|||
}
|
||||
}
|
||||
|
||||
func (n *network) rmLBBackend(ip, vip net.IP, lb *loadBalancer, ingressPorts []*PortConfig, rmService bool, fullRemove bool) {
|
||||
func (n *network) rmLBBackend(ip net.IP, lb *loadBalancer, rmService bool, fullRemove bool) {
|
||||
if len(lb.vip) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
vip := lb.vip
|
||||
ingressPorts := lb.service.ingressPorts
|
||||
|
||||
if system.GetOSVersion().Build > 16236 {
|
||||
if numEnabledBackends(lb) > 0 {
|
||||
//Reprogram HNS (actually VFP) with the existing backends.
|
||||
n.addLBBackend(ip, vip, lb, ingressPorts)
|
||||
n.addLBBackend(ip, lb)
|
||||
} else {
|
||||
lb.Lock()
|
||||
defer lb.Unlock()
|
||||
|
|
Loading…
Reference in New Issue