Merge branch 'master' into 7167-keep-rsync
authorradhika <radhika@curoverse.com>
Thu, 15 Oct 2015 16:32:07 +0000 (12:32 -0400)
committerradhika <radhika@curoverse.com>
Thu, 15 Oct 2015 16:32:07 +0000 (12:32 -0400)
Conflicts:
sdk/go/keepclient/keepclient.go

1  2 
sdk/go/keepclient/keepclient.go

index 4cd9f544f7d75f56f3869bc211749b22792a47e3,2f9ea44ab8e55ce7cae1849713651f5141424da1..67c304deaf3ae54b2668cb8c2f2856e909da8c5a
@@@ -53,23 -55,30 +54,33 @@@ type KeepClient struct 
        replicasPerService int
  }
  
 -// Create a new KeepClient.  This will contact the API server to discover Keep
 -// servers.
 +// MakeKeepClient creates a new KeepClient by contacting the API server to discover Keep servers.
  func MakeKeepClient(arv *arvadosclient.ArvadosClient) (*KeepClient, error) {
 -      var matchTrue = regexp.MustCompile("^(?i:1|yes|true)$")
 -      insecure := matchTrue.MatchString(os.Getenv("ARVADOS_API_HOST_INSECURE"))
 +      kc := New(arv)
 +      return kc, kc.DiscoverKeepServers()
 +}
  
 +// New func creates a new KeepClient struct.
 +// This func does not discover keep servers. It is the caller's responsibility.
 +func New(arv *arvadosclient.ArvadosClient) *KeepClient {
+       defaultReplicationLevel := 2
+       value, err := arv.Discovery("defaultCollectionReplication")
+       if err == nil {
+               v, ok := value.(float64)
+               if ok && v > 0 {
+                       defaultReplicationLevel = int(v)
+               }
+       }
        kc := &KeepClient{
                Arvados:       arv,
-               Want_replicas: 2,
+               Want_replicas: defaultReplicationLevel,
                Using_proxy:   false,
                Client: &http.Client{Transport: &http.Transport{
 -                      TLSClientConfig: &tls.Config{InsecureSkipVerify: insecure}}},
 +                      TLSClientConfig: &tls.Config{InsecureSkipVerify: arv.ApiInsecure}}},
+               Retries: 2,
        }
 -      return kc, kc.DiscoverKeepServers()
 +      return kc
  }
  
  // Put a block given the block hash, a reader, and the number of bytes