Exemplo n.º 1
0
func (m *FusisMonitor) FilterHealthy(s state.State) state.State {
	filteredState := s.Copy()
	for _, svc := range filteredState.GetServices() {
		for _, dst := range filteredState.GetDestinations(&svc) {
			checkId := fmt.Sprintf("%s:%s", svc.GetId(), dst.GetId())
			m.RLock()
			if check, ok := m.runningChecks[checkId]; ok {
				if check.GetStatus() == BAD {
					logrus.Debugf("[health-monitor] filtering %#v. Check %s", dst, check.GetId())
					filteredState.DeleteDestination(&dst)
				}
			}
			m.RUnlock()
		}
	}

	return filteredState
}