本文整理汇总了Golang中github.com/luizbafilho/fusis/state.State.GetDestinations方法的典型用法代码示例。如果您正苦于以下问题:Golang State.GetDestinations方法的具体用法?Golang State.GetDestinations怎么用?Golang State.GetDestinations使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类github.com/luizbafilho/fusis/state.State
的用法示例。
在下文中一共展示了State.GetDestinations方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Sync
// Sync syncs all ipvs rules present in state to kernel
func (ipvs *Ipvs) Sync(state state.State) error {
ipvs.Lock()
defer ipvs.Unlock()
log.Debug("[ipvs] Syncing")
stateSet := ipvs.getStateServicesSet(state)
currentSet, err := ipvs.getCurrentServicesSet()
if err != nil {
return err
}
rulesToAdd := stateSet.Difference(currentSet)
rulesToRemove := currentSet.Difference(stateSet)
// Adding services and destinations missing
for r := range rulesToAdd.Iter() {
service := r.(types.Service)
dsts := state.GetDestinations(&service)
if err := ipvs.addServiceAndDestinations(service, dsts); err != nil {
return err
}
log.Debugf("[ipvs] Added service: %#v with destinations: %#v", service, dsts)
}
// Cleaning rules
for r := range rulesToRemove.Iter() {
service := r.(types.Service)
err := gipvs.DeleteService(*ToIpvsService(&service))
if err != nil {
return err
}
log.Debugf("[ipvs] Removed service: %#v", service)
}
// Syncing destination rules
for _, s := range state.GetServices() {
if err := ipvs.syncDestinations(state, s); err != nil {
return err
}
}
return nil
}
示例2: getStateDestinationsSet
func (ipvs *Ipvs) getStateDestinationsSet(state state.State, svc types.Service) mapset.Set {
// checks := state.GetChecks()
stateSet := mapset.NewSet()
// Filter healthy destinations
for _, d := range state.GetDestinations(&svc) {
// if check, ok := checks[d.GetId()]; ok {
// if check.Status == health.BAD {
// continue
// }
// } else { // no healthcheck found
// continue
// }
// Clean up to match services from kernel
d.Name = ""
d.ServiceId = ""
stateSet.Add(d)
}
return stateSet
}