mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 06:27:05 +00:00
Merge pull request #776 from nyaxt/respectzone
ServiceRegistryStorage.Delete should respect zone.
This commit is contained in:
commit
7f0d470979
@ -118,25 +118,44 @@ func (sr *ServiceRegistryStorage) Get(id string) (interface{}, error) {
|
||||
return service, err
|
||||
}
|
||||
|
||||
func (sr *ServiceRegistryStorage) deleteExternalLoadBalancer(service *api.Service) error {
|
||||
if !service.CreateExternalLoadBalancer || sr.cloud == nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
zones, ok := sr.cloud.Zones()
|
||||
if !ok {
|
||||
// We failed to get zone enumerator.
|
||||
// As this should have failed when we tried in "create" too,
|
||||
// assume external load balancer was never created.
|
||||
return nil
|
||||
}
|
||||
|
||||
balancer, ok := sr.cloud.TCPLoadBalancer()
|
||||
if !ok {
|
||||
// See comment above.
|
||||
return nil
|
||||
}
|
||||
|
||||
zone, err := zones.GetZone()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := balancer.DeleteTCPLoadBalancer(service.JSONBase.ID, zone); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (sr *ServiceRegistryStorage) Delete(id string) (<-chan interface{}, error) {
|
||||
service, err := sr.registry.GetService(id)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return apiserver.MakeAsync(func() (interface{}, error) {
|
||||
if service.CreateExternalLoadBalancer {
|
||||
var balancer cloudprovider.TCPLoadBalancer
|
||||
var ok bool
|
||||
if sr.cloud != nil {
|
||||
balancer, ok = sr.cloud.TCPLoadBalancer()
|
||||
}
|
||||
if ok && balancer != nil {
|
||||
err = balancer.DeleteTCPLoadBalancer(id, "us-central1")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
}
|
||||
sr.deleteExternalLoadBalancer(service)
|
||||
return api.Status{Status: api.StatusSuccess}, sr.registry.DeleteService(id)
|
||||
}), nil
|
||||
}
|
||||
|
@ -211,7 +211,7 @@ func TestServiceRegistryDeleteExternal(t *testing.T) {
|
||||
c, _ := storage.Delete(svc.ID)
|
||||
<-c
|
||||
|
||||
if len(fakeCloud.Calls) != 1 || fakeCloud.Calls[0] != "delete" {
|
||||
if len(fakeCloud.Calls) != 2 || fakeCloud.Calls[0] != "get-zone" || fakeCloud.Calls[1] != "delete" {
|
||||
t.Errorf("Unexpected call(s): %#v", fakeCloud.Calls)
|
||||
}
|
||||
srv, err := memory.GetService(svc.ID)
|
||||
|
Loading…
Reference in New Issue
Block a user