func overrideServices(kc *keepclient.KeepClient) { roots := make(map[string]string) if *ServiceURL != "" { roots["zzzzz-bi6l4-000000000000000"] = *ServiceURL } else if *ServiceUUID != "" { for uuid, url := range kc.GatewayRoots() { if uuid == *ServiceUUID { roots[uuid] = url break } } if len(roots) == 0 { log.Fatalf("Service %q was not in list advertised by API %+q", *ServiceUUID, kc.GatewayRoots()) } } else { return } kc.SetServiceRoots(roots, roots, roots) }
// Refresh the keep service list every five minutes. func RefreshServicesList(kc *keepclient.KeepClient) { var previousRoots = []map[string]string{} var delay time.Duration = 0 for { time.Sleep(delay * time.Second) delay = 300 if err := kc.DiscoverKeepServers(); err != nil { log.Println("Error retrieving services list:", err) delay = 3 continue } newRoots := []map[string]string{kc.LocalRoots(), kc.GatewayRoots()} if !reflect.DeepEqual(previousRoots, newRoots) { log.Printf("Updated services list: locals %v gateways %v", newRoots[0], newRoots[1]) } if len(newRoots[0]) == 0 { log.Print("WARNING: No local services. Retrying in 3 seconds.") delay = 3 } previousRoots = newRoots } }