-func (this *KeepClient) DiscoverKeepServers() error {
- if prx := os.Getenv("ARVADOS_KEEP_PROXY"); prx != "" {
- sr := map[string]string{"proxy": prx}
- this.SetServiceRoots(sr)
- this.Using_proxy = true
- this.setClientSettingsProxy()
- return nil
- }
-
- type svcList struct {
- Items []keepDisk `json:"items"`
- }
- var m svcList
-
- err := this.Arvados.Call("GET", "keep_services", "", "accessible", nil, &m)
-
- if err != nil {
- if err := this.Arvados.List("keep_disks", nil, &m); err != nil {
- return err
- }
- }
-
- listed := make(map[string]bool)
- service_roots := make(map[string]string)
-
- for _, element := range m.Items {
- n := ""
-
- if element.SSL {
- n = "s"
- }
-
- // Construct server URL
- url := fmt.Sprintf("http%s://%s:%d", n, element.Hostname, element.Port)
-
- // Skip duplicates
- if !listed[url] {
- listed[url] = true
- service_roots[element.Uuid] = url
- }
- if element.SvcType == "proxy" {
- this.Using_proxy = true
- }
- }
-
- if this.Using_proxy {
- this.setClientSettingsProxy()
- } else {
- this.setClientSettingsStore()
- }
-
- this.SetServiceRoots(service_roots)
-
- return nil