mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-29 22:46:12 +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
|
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) {
|
func (sr *ServiceRegistryStorage) Delete(id string) (<-chan interface{}, error) {
|
||||||
service, err := sr.registry.GetService(id)
|
service, err := sr.registry.GetService(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return apiserver.MakeAsync(func() (interface{}, error) {
|
return apiserver.MakeAsync(func() (interface{}, error) {
|
||||||
if service.CreateExternalLoadBalancer {
|
sr.deleteExternalLoadBalancer(service)
|
||||||
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
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return api.Status{Status: api.StatusSuccess}, sr.registry.DeleteService(id)
|
return api.Status{Status: api.StatusSuccess}, sr.registry.DeleteService(id)
|
||||||
}), nil
|
}), nil
|
||||||
}
|
}
|
||||||
|
@ -211,7 +211,7 @@ func TestServiceRegistryDeleteExternal(t *testing.T) {
|
|||||||
c, _ := storage.Delete(svc.ID)
|
c, _ := storage.Delete(svc.ID)
|
||||||
<-c
|
<-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)
|
t.Errorf("Unexpected call(s): %#v", fakeCloud.Calls)
|
||||||
}
|
}
|
||||||
srv, err := memory.GetService(svc.ID)
|
srv, err := memory.GetService(svc.ID)
|
||||||
|
Loading…
Reference in New Issue
Block a user