Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
6ad9dc65
Commit
6ad9dc65
authored
May 28, 2016
by
Cole Mickens
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add clusterName to Loadbalancer methods
parent
e31b8de2
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
46 additions
and
46 deletions
+46
-46
cloud.go
pkg/cloudprovider/cloud.go
+4
-4
aws.go
pkg/cloudprovider/providers/aws/aws.go
+6
-6
gce.go
pkg/cloudprovider/providers/gce/gce.go
+5
-5
openstack_loadbalancer.go
...oudprovider/providers/openstack/openstack_loadbalancer.go
+25
-25
servicecontroller.go
pkg/controller/service/servicecontroller.go
+6
-6
No files found.
pkg/cloudprovider/cloud.go
View file @
6ad9dc65
...
...
@@ -81,13 +81,13 @@ type LoadBalancer interface {
// GetLoadBalancer returns whether the specified load balancer exists, and
// if so, what its status is.
// Implementations must treat the *api.Service parameter as read-only and not modify it.
GetLoadBalancer
(
service
*
api
.
Service
)
(
status
*
api
.
LoadBalancerStatus
,
exists
bool
,
err
error
)
GetLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
)
(
status
*
api
.
LoadBalancerStatus
,
exists
bool
,
err
error
)
// EnsureLoadBalancer creates a new load balancer 'name', or updates the existing one. Returns the status of the balancer
// Implementations must treat the *api.Service parameter as read-only and not modify it.
EnsureLoadBalancer
(
service
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
EnsureLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
// UpdateLoadBalancer updates hosts under the specified load balancer.
// Implementations must treat the *api.Service parameter as read-only and not modify it.
UpdateLoadBalancer
(
service
*
api
.
Service
,
hosts
[]
string
)
error
UpdateLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
,
hosts
[]
string
)
error
// EnsureLoadBalancerDeleted deletes the specified load balancer if it
// exists, returning nil if the load balancer specified either didn't exist or
// was successfully deleted.
...
...
@@ -95,7 +95,7 @@ type LoadBalancer interface {
// have multiple underlying components, meaning a Get could say that the LB
// doesn't exist even if some part of it is still laying around.
// Implementations must treat the *api.Service parameter as read-only and not modify it.
EnsureLoadBalancerDeleted
(
service
*
api
.
Service
)
error
EnsureLoadBalancerDeleted
(
clusterName
string
,
service
*
api
.
Service
)
error
}
// Instances is an abstract, pluggable interface for sets of instances.
...
...
pkg/cloudprovider/providers/aws/aws.go
View file @
6ad9dc65
...
...
@@ -2297,10 +2297,10 @@ func buildListener(port api.ServicePort, annotations map[string]string, sslPorts
}
// EnsureLoadBalancer implements LoadBalancer.EnsureLoadBalancer
func
(
c
*
Cloud
)
EnsureLoadBalancer
(
apiService
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
func
(
c
*
Cloud
)
EnsureLoadBalancer
(
clusterName
string
,
apiService
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
annotations
:=
apiService
.
Annotations
glog
.
V
(
2
)
.
Infof
(
"EnsureLoadBalancer(%v, %v, %v, %v, %v, %v, %v)"
,
apiService
.
Namespace
,
apiService
.
Name
,
c
.
region
,
apiService
.
Spec
.
LoadBalancerIP
,
apiService
.
Spec
.
Ports
,
hosts
,
annotations
)
glog
.
V
(
2
)
.
Infof
(
"EnsureLoadBalancer(%v, %v, %v, %v, %v, %v, %v
, %v
)"
,
clusterName
,
apiService
.
Namespace
,
apiService
.
Name
,
c
.
region
,
apiService
.
Spec
.
LoadBalancerIP
,
apiService
.
Spec
.
Ports
,
hosts
,
annotations
)
if
apiService
.
Spec
.
SessionAffinity
!=
api
.
ServiceAffinityNone
{
// ELB supports sticky sessions, but only when configured for HTTP/HTTPS
...
...
@@ -2472,7 +2472,7 @@ func (c *Cloud) EnsureLoadBalancer(apiService *api.Service, hosts []string) (*ap
}
// GetLoadBalancer is an implementation of LoadBalancer.GetLoadBalancer
func
(
c
*
Cloud
)
GetLoadBalancer
(
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
func
(
c
*
Cloud
)
GetLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
lb
,
err
:=
c
.
describeLoadBalancer
(
loadBalancerName
)
if
err
!=
nil
{
...
...
@@ -2688,7 +2688,7 @@ func (c *Cloud) updateInstanceSecurityGroupsForLoadBalancer(lb *elb.LoadBalancer
}
// EnsureLoadBalancerDeleted implements LoadBalancer.EnsureLoadBalancerDeleted.
func
(
c
*
Cloud
)
EnsureLoadBalancerDeleted
(
service
*
api
.
Service
)
error
{
func
(
c
*
Cloud
)
EnsureLoadBalancerDeleted
(
clusterName
string
,
service
*
api
.
Service
)
error
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
lb
,
err
:=
c
.
describeLoadBalancer
(
loadBalancerName
)
if
err
!=
nil
{
...
...
@@ -2784,7 +2784,7 @@ func (c *Cloud) EnsureLoadBalancerDeleted(service *api.Service) error {
}
// UpdateLoadBalancer implements LoadBalancer.UpdateLoadBalancer
func
(
c
*
Cloud
)
UpdateLoadBalancer
(
service
*
api
.
Service
,
hosts
[]
string
)
error
{
func
(
c
*
Cloud
)
UpdateLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
,
hosts
[]
string
)
error
{
hostSet
:=
sets
.
NewString
(
hosts
...
)
instances
,
err
:=
c
.
getInstancesByNodeNamesCached
(
hostSet
)
if
err
!=
nil
{
...
...
pkg/cloudprovider/providers/gce/gce.go
View file @
6ad9dc65
...
...
@@ -494,7 +494,7 @@ func (gce *GCECloud) waitForZoneOp(op *compute.Operation, zone string) error {
}
// GetLoadBalancer is an implementation of LoadBalancer.GetLoadBalancer
func
(
gce
*
GCECloud
)
GetLoadBalancer
(
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
func
(
gce
*
GCECloud
)
GetLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
fwd
,
err
:=
gce
.
service
.
ForwardingRules
.
Get
(
gce
.
projectID
,
gce
.
region
,
loadBalancerName
)
.
Do
()
if
err
==
nil
{
...
...
@@ -521,7 +521,7 @@ func isHTTPErrorCode(err error, code int) bool {
// Due to an interesting series of design decisions, this handles both creating
// new load balancers and updating existing load balancers, recognizing when
// each is needed.
func
(
gce
*
GCECloud
)
EnsureLoadBalancer
(
apiService
*
api
.
Service
,
hostNames
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
func
(
gce
*
GCECloud
)
EnsureLoadBalancer
(
clusterName
string
,
apiService
*
api
.
Service
,
hostNames
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
if
len
(
hostNames
)
==
0
{
return
nil
,
fmt
.
Errorf
(
"Cannot EnsureLoadBalancer() with no hosts"
)
}
...
...
@@ -1193,7 +1193,7 @@ func (gce *GCECloud) ensureStaticIP(name, serviceName, region, existingIP string
}
// UpdateLoadBalancer is an implementation of LoadBalancer.UpdateLoadBalancer.
func
(
gce
*
GCECloud
)
UpdateLoadBalancer
(
service
*
api
.
Service
,
hostNames
[]
string
)
error
{
func
(
gce
*
GCECloud
)
UpdateLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
,
hostNames
[]
string
)
error
{
hosts
,
err
:=
gce
.
getInstancesByNames
(
hostNames
)
if
err
!=
nil
{
return
err
...
...
@@ -1264,9 +1264,9 @@ func (gce *GCECloud) updateTargetPool(loadBalancerName string, existing sets.Str
}
// EnsureLoadBalancerDeleted is an implementation of LoadBalancer.EnsureLoadBalancerDeleted.
func
(
gce
*
GCECloud
)
EnsureLoadBalancerDeleted
(
service
*
api
.
Service
)
error
{
func
(
gce
*
GCECloud
)
EnsureLoadBalancerDeleted
(
clusterName
string
,
service
*
api
.
Service
)
error
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
glog
.
V
(
2
)
.
Infof
(
"EnsureLoadBalancerDeleted(%v, %v, %v, %v
)"
,
service
.
Namespace
,
service
.
Name
,
loadBalancerName
,
glog
.
V
(
2
)
.
Infof
(
"EnsureLoadBalancerDeleted(%v, %v, %v, %v
, %v)"
,
clusterName
,
service
.
Namespace
,
service
.
Name
,
loadBalancerName
,
gce
.
region
)
errs
:=
utilerrors
.
AggregateGoroutines
(
...
...
pkg/cloudprovider/providers/openstack/openstack_loadbalancer.go
View file @
6ad9dc65
...
...
@@ -260,7 +260,7 @@ func waitLoadbalancerDeleted(client *gophercloud.ServiceClient, loadbalancerID s
}
}
func
(
lbaas
*
LbaasV2
)
GetLoadBalancer
(
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
func
(
lbaas
*
LbaasV2
)
GetLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
loadbalancer
,
err
:=
getLoadbalancerByName
(
lbaas
.
network
,
loadBalancerName
)
if
err
==
ErrNotFound
{
...
...
@@ -281,8 +281,8 @@ func (lbaas *LbaasV2) GetLoadBalancer(service *api.Service) (*api.LoadBalancerSt
// a list of regions (from config) and query/create loadbalancers in
// each region.
func
(
lbaas
*
LbaasV2
)
EnsureLoadBalancer
(
apiService
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancer(%v, %v, %v, %v, %v, %v
)"
,
apiService
.
Namespace
,
apiService
.
Name
,
apiService
.
Spec
.
LoadBalancerIP
,
apiService
.
Spec
.
Ports
,
hosts
,
apiService
.
Annotations
)
func
(
lbaas
*
LbaasV2
)
EnsureLoadBalancer
(
clusterName
string
,
apiService
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancer(%v, %v, %v, %v, %v, %v
, %v)"
,
clusterName
,
apiService
.
Namespace
,
apiService
.
Name
,
apiService
.
Spec
.
LoadBalancerIP
,
apiService
.
Spec
.
Ports
,
hosts
,
apiService
.
Annotations
)
ports
:=
apiService
.
Spec
.
Ports
if
len
(
ports
)
>
1
{
...
...
@@ -318,7 +318,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
}
glog
.
V
(
2
)
.
Infof
(
"Checking if openstack load balancer already exists: %s"
,
cloudprovider
.
GetLoadBalancerName
(
apiService
))
_
,
exists
,
err
:=
lbaas
.
GetLoadBalancer
(
apiService
)
_
,
exists
,
err
:=
lbaas
.
GetLoadBalancer
(
clusterName
,
apiService
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"error checking if openstack load balancer already exists: %v"
,
err
)
}
...
...
@@ -326,7 +326,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
// TODO: Implement a more efficient update strategy for common changes than delete & create
// In particular, if we implement hosts update, we can get rid of UpdateHosts
if
exists
{
err
:=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
err
:=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"error deleting existing openstack load balancer: %v"
,
err
)
}
...
...
@@ -352,7 +352,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
loadbalancer
,
err
:=
loadbalancers
.
Create
(
lbaas
.
network
,
createOpts
)
.
Extract
()
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
...
...
@@ -366,7 +366,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
})
.
Extract
()
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
...
...
@@ -381,7 +381,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
})
.
Extract
()
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
...
...
@@ -400,7 +400,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
})
.
Extract
()
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
}
...
...
@@ -417,7 +417,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
})
.
Extract
()
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
}
...
...
@@ -430,7 +430,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
portID
,
err
:=
getPortIDByIP
(
lbaas
.
network
,
loadbalancer
.
VipAddress
)
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
...
...
@@ -441,7 +441,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
floatIP
,
err
:=
floatingips
.
Create
(
lbaas
.
network
,
floatIPOpts
)
.
Extract
()
if
err
!=
nil
{
// cleanup what was created so far
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
apiService
)
_
=
lbaas
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
return
nil
,
err
}
...
...
@@ -451,9 +451,9 @@ func (lbaas *LbaasV2) EnsureLoadBalancer(apiService *api.Service, hosts []string
return
status
,
nil
}
func
(
lbaas
*
LbaasV2
)
UpdateLoadBalancer
(
service
*
api
.
Service
,
hosts
[]
string
)
error
{
func
(
lbaas
*
LbaasV2
)
UpdateLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
,
hosts
[]
string
)
error
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
glog
.
V
(
4
)
.
Infof
(
"UpdateLoadBalancer(%v, %v
)"
,
loadBalancerName
,
hosts
)
glog
.
V
(
4
)
.
Infof
(
"UpdateLoadBalancer(%v, %v
, %v)"
,
clusterName
,
loadBalancerName
,
hosts
)
ports
:=
service
.
Spec
.
Ports
if
len
(
ports
)
>
1
{
...
...
@@ -538,9 +538,9 @@ func (lbaas *LbaasV2) UpdateLoadBalancer(service *api.Service, hosts []string) e
return
nil
}
func
(
lbaas
*
LbaasV2
)
EnsureLoadBalancerDeleted
(
service
*
api
.
Service
)
error
{
func
(
lbaas
*
LbaasV2
)
EnsureLoadBalancerDeleted
(
clusterName
string
,
service
*
api
.
Service
)
error
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancerDeleted(%v
)"
,
loadBalancerName
)
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancerDeleted(%v
, %v)"
,
clusterName
,
loadBalancerName
)
loadbalancer
,
err
:=
getLoadbalancerByName
(
lbaas
.
network
,
loadBalancerName
)
if
err
!=
nil
&&
err
!=
ErrNotFound
{
...
...
@@ -690,7 +690,7 @@ func (lbaas *LbaasV2) EnsureLoadBalancerDeleted(service *api.Service) error {
return
nil
}
func
(
lb
*
LbaasV1
)
GetLoadBalancer
(
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
func
(
lb
*
LbaasV1
)
GetLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
)
(
*
api
.
LoadBalancerStatus
,
bool
,
error
)
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
vip
,
err
:=
getVipByName
(
lb
.
network
,
loadBalancerName
)
if
err
==
ErrNotFound
{
...
...
@@ -711,8 +711,8 @@ func (lb *LbaasV1) GetLoadBalancer(service *api.Service) (*api.LoadBalancerStatu
// a list of regions (from config) and query/create loadbalancers in
// each region.
func
(
lb
*
LbaasV1
)
EnsureLoadBalancer
(
apiService
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancer(%v, %v, %v, %v, %v, %v
)"
,
apiService
.
Namespace
,
apiService
.
Name
,
apiService
.
Spec
.
LoadBalancerIP
,
apiService
.
Spec
.
Ports
,
hosts
,
apiService
.
Annotations
)
func
(
lb
*
LbaasV1
)
EnsureLoadBalancer
(
clusterName
string
,
apiService
*
api
.
Service
,
hosts
[]
string
)
(
*
api
.
LoadBalancerStatus
,
error
)
{
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancer(%v, %v, %v, %v, %v, %v
, %v)"
,
clusterName
,
apiService
.
Namespace
,
apiService
.
Name
,
apiService
.
Spec
.
LoadBalancerIP
,
apiService
.
Spec
.
Ports
,
hosts
,
apiService
.
Annotations
)
ports
:=
apiService
.
Spec
.
Ports
if
len
(
ports
)
>
1
{
...
...
@@ -748,7 +748,7 @@ func (lb *LbaasV1) EnsureLoadBalancer(apiService *api.Service, hosts []string) (
}
glog
.
V
(
2
)
.
Infof
(
"Checking if openstack load balancer already exists: %s"
,
cloudprovider
.
GetLoadBalancerName
(
apiService
))
_
,
exists
,
err
:=
lb
.
GetLoadBalancer
(
apiService
)
_
,
exists
,
err
:=
lb
.
GetLoadBalancer
(
clusterName
,
apiService
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"error checking if openstack load balancer already exists: %v"
,
err
)
}
...
...
@@ -756,7 +756,7 @@ func (lb *LbaasV1) EnsureLoadBalancer(apiService *api.Service, hosts []string) (
// TODO: Implement a more efficient update strategy for common changes than delete & create
// In particular, if we implement hosts update, we can get rid of UpdateHosts
if
exists
{
err
:=
lb
.
EnsureLoadBalancerDeleted
(
apiService
)
err
:=
lb
.
EnsureLoadBalancerDeleted
(
clusterName
,
apiService
)
if
err
!=
nil
{
return
nil
,
fmt
.
Errorf
(
"error deleting existing openstack load balancer: %v"
,
err
)
}
...
...
@@ -860,9 +860,9 @@ func (lb *LbaasV1) EnsureLoadBalancer(apiService *api.Service, hosts []string) (
}
func
(
lb
*
LbaasV1
)
UpdateLoadBalancer
(
service
*
api
.
Service
,
hosts
[]
string
)
error
{
func
(
lb
*
LbaasV1
)
UpdateLoadBalancer
(
clusterName
string
,
service
*
api
.
Service
,
hosts
[]
string
)
error
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
glog
.
V
(
4
)
.
Infof
(
"UpdateLoadBalancer(%v, %v
)"
,
loadBalancerName
,
hosts
)
glog
.
V
(
4
)
.
Infof
(
"UpdateLoadBalancer(%v, %v
, %v)"
,
clusterName
,
loadBalancerName
,
hosts
)
vip
,
err
:=
getVipByName
(
lb
.
network
,
loadBalancerName
)
if
err
!=
nil
{
...
...
@@ -922,9 +922,9 @@ func (lb *LbaasV1) UpdateLoadBalancer(service *api.Service, hosts []string) erro
return
nil
}
func
(
lb
*
LbaasV1
)
EnsureLoadBalancerDeleted
(
service
*
api
.
Service
)
error
{
func
(
lb
*
LbaasV1
)
EnsureLoadBalancerDeleted
(
clusterName
string
,
service
*
api
.
Service
)
error
{
loadBalancerName
:=
cloudprovider
.
GetLoadBalancerName
(
service
)
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancerDeleted(%v
)"
,
loadBalancerName
)
glog
.
V
(
4
)
.
Infof
(
"EnsureLoadBalancerDeleted(%v
, %v)"
,
clusterName
,
loadBalancerName
)
vip
,
err
:=
getVipByName
(
lb
.
network
,
loadBalancerName
)
if
err
!=
nil
&&
err
!=
ErrNotFound
{
...
...
pkg/controller/service/servicecontroller.go
View file @
6ad9dc65
...
...
@@ -262,7 +262,7 @@ func (s *ServiceController) processDelta(delta *cache.Delta) (error, time.Durati
if
errors
.
IsNotFound
(
err
)
{
glog
.
V
(
2
)
.
Infof
(
"Service %v not found, ensuring load balancer is deleted"
,
namespacedName
)
s
.
eventRecorder
.
Event
(
deltaService
,
api
.
EventTypeNormal
,
"DeletingLoadBalancer"
,
"Deleting load balancer"
)
err
:=
s
.
balancer
.
EnsureLoadBalancerDeleted
(
deltaService
)
err
:=
s
.
balancer
.
EnsureLoadBalancerDeleted
(
s
.
clusterName
,
deltaService
)
if
err
!=
nil
{
message
:=
"Error deleting load balancer (will retry): "
+
err
.
Error
()
s
.
eventRecorder
.
Event
(
deltaService
,
api
.
EventTypeWarning
,
"DeletingLoadBalancerFailed"
,
message
)
...
...
@@ -338,7 +338,7 @@ func (s *ServiceController) createLoadBalancerIfNeeded(namespacedName types.Name
// If we don't have any cached memory of the load balancer, we have to ask
// the cloud provider for what it knows about it.
// Technically EnsureLoadBalancerDeleted can cope, but we want to post meaningful events
_
,
exists
,
err
:=
s
.
balancer
.
GetLoadBalancer
(
service
)
_
,
exists
,
err
:=
s
.
balancer
.
GetLoadBalancer
(
s
.
clusterName
,
s
ervice
)
if
err
!=
nil
{
return
fmt
.
Errorf
(
"error getting LB for service %s: %v"
,
namespacedName
,
err
),
retryable
}
...
...
@@ -350,7 +350,7 @@ func (s *ServiceController) createLoadBalancerIfNeeded(namespacedName types.Name
if
needDelete
{
glog
.
Infof
(
"Deleting existing load balancer for service %s that no longer needs a load balancer."
,
namespacedName
)
s
.
eventRecorder
.
Event
(
service
,
api
.
EventTypeNormal
,
"DeletingLoadBalancer"
,
"Deleting load balancer"
)
if
err
:=
s
.
balancer
.
EnsureLoadBalancerDeleted
(
service
);
err
!=
nil
{
if
err
:=
s
.
balancer
.
EnsureLoadBalancerDeleted
(
s
.
clusterName
,
s
ervice
);
err
!=
nil
{
return
err
,
retryable
}
s
.
eventRecorder
.
Event
(
service
,
api
.
EventTypeNormal
,
"DeletedLoadBalancer"
,
"Deleted load balancer"
)
...
...
@@ -412,7 +412,7 @@ func (s *ServiceController) createLoadBalancer(service *api.Service) error {
// - Only one protocol supported per service
// - Not all cloud providers support all protocols and the next step is expected to return
// an error for unsupported protocols
status
,
err
:=
s
.
balancer
.
EnsureLoadBalancer
(
service
,
hostsFromNodeList
(
&
nodes
))
status
,
err
:=
s
.
balancer
.
EnsureLoadBalancer
(
s
.
clusterName
,
s
ervice
,
hostsFromNodeList
(
&
nodes
))
if
err
!=
nil
{
return
err
}
...
...
@@ -745,14 +745,14 @@ func (s *ServiceController) lockedUpdateLoadBalancerHosts(service *api.Service,
}
// This operation doesn't normally take very long (and happens pretty often), so we only record the final event
err
:=
s
.
balancer
.
UpdateLoadBalancer
(
service
,
hosts
)
err
:=
s
.
balancer
.
UpdateLoadBalancer
(
s
.
clusterName
,
s
ervice
,
hosts
)
if
err
==
nil
{
s
.
eventRecorder
.
Event
(
service
,
api
.
EventTypeNormal
,
"UpdatedLoadBalancer"
,
"Updated load balancer with new hosts"
)
return
nil
}
// It's only an actual error if the load balancer still exists.
if
_
,
exists
,
err
:=
s
.
balancer
.
GetLoadBalancer
(
service
);
err
!=
nil
{
if
_
,
exists
,
err
:=
s
.
balancer
.
GetLoadBalancer
(
s
.
clusterName
,
s
ervice
);
err
!=
nil
{
glog
.
Errorf
(
"External error while checking if load balancer %q exists: name, %v"
,
cloudprovider
.
GetLoadBalancerName
(
service
),
err
)
}
else
if
!
exists
{
return
nil
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment