// calculateDeliveryServiceState calculates the state of delivery services from the new cache state data `cacheState` and the CRConfig data `deliveryServiceServers` and puts the calculated state in the outparam `deliveryServiceStates` func calculateDeliveryServiceState(deliveryServiceServers map[enum.DeliveryServiceName][]enum.CacheName, states peer.CRStatesThreadsafe) { deliveryServices := states.GetDeliveryServices() for deliveryServiceName, deliveryServiceState := range deliveryServices { if _, ok := deliveryServiceServers[deliveryServiceName]; !ok { // log.Errorf("CRConfig does not have delivery service %s, but traffic monitor poller does; skipping\n", deliveryServiceName) continue } deliveryServiceState.IsAvailable = false deliveryServiceState.DisabledLocations = []enum.CacheName{} // it's important this isn't nil, so it serialises to the JSON `[]` instead of `null` for _, server := range deliveryServiceServers[deliveryServiceName] { if states.GetCache(server).IsAvailable { deliveryServiceState.IsAvailable = true } else { deliveryServiceState.DisabledLocations = append(deliveryServiceState.DisabledLocations, server) } } deliveryServices[deliveryServiceName] = deliveryServiceState } states.SetDeliveryServices(deliveryServices) }
// calculateDeliveryServiceState calculates the state of delivery services from the new cache state data `cacheState` and the CRConfig data `deliveryServiceServers` and puts the calculated state in the outparam `deliveryServiceStates` func calculateDeliveryServiceState(deliveryServiceServers map[string][]string, states peer.CRStatesThreadsafe) { deliveryServices := states.GetDeliveryServices() for deliveryServiceName, deliveryServiceState := range deliveryServices { if _, ok := deliveryServiceServers[deliveryServiceName]; !ok { // log.Errorf("CRConfig does not have delivery service %s, but traffic monitor poller does; skipping\n", deliveryServiceName) continue } deliveryServiceState.IsAvailable = false deliveryServiceState.DisabledLocations = nil for _, server := range deliveryServiceServers[deliveryServiceName] { if states.GetCache(server).IsAvailable { deliveryServiceState.IsAvailable = true } else { deliveryServiceState.DisabledLocations = append(deliveryServiceState.DisabledLocations, server) } } deliveryServices[deliveryServiceName] = deliveryServiceState } states.SetDeliveryServices(deliveryServices) }