// edgeHop checks the links of the given backend by executing an edge hop. // It fixes broken links. func (b *Backends) edgeHop(be *compute.BackendService, igs []*compute.InstanceGroup) error { beIGs := sets.String{} for _, beToIG := range be.Backends { beIGs.Insert(beToIG.Group) } igLinks := sets.String{} for _, igToBE := range igs { igLinks.Insert(igToBE.SelfLink) } if beIGs.IsSuperset(igLinks) { return nil } glog.Infof("Backend %v has a broken edge, expected igs %+v, current igs %+v", be.Name, igLinks.List(), beIGs.List()) newBackends := []*compute.Backend{} for _, b := range getBackendsForIGs(igs) { if !beIGs.Has(b.Group) { newBackends = append(newBackends, b) } } be.Backends = append(be.Backends, newBackends...) if err := b.cloud.UpdateBackendService(be); err != nil { return err } return nil }
// edgeHop checks the links of the given backend by executing an edge hop. // It fixes broken links. func (b *Backends) edgeHop(be *compute.BackendService, ig *compute.InstanceGroup) error { if len(be.Backends) == 1 && compareLinks(be.Backends[0].Group, ig.SelfLink) { return nil } glog.Infof("Backend %v has a broken edge, adding link to %v", be.Name, ig.Name) be.Backends = []*compute.Backend{ {Group: ig.SelfLink}, } if err := b.cloud.UpdateBackendService(be); err != nil { return err } return nil }
// edgeHop checks the links of the given backend by executing an edge hop. // It fixes broken links. func (b *Backends) edgeHop(be *compute.BackendService, igs []*compute.InstanceGroup) error { beIGs := sets.String{} for _, beToIG := range be.Backends { beIGs.Insert(beToIG.Group) } igLinks := sets.String{} for _, igToBE := range igs { igLinks.Insert(igToBE.SelfLink) } if igLinks.Equal(beIGs) { return nil } glog.Infof("Backend %v has a broken edge, expected igs %+v, current igs %+v", be.Name, igLinks.List(), beIGs.List()) be.Backends = getBackendsForIGs(igs) if err := b.cloud.UpdateBackendService(be); err != nil { return err } return nil }