2798: Adds client side support for Keep proxy X-Keep-Desired-Replicas and
[arvados.git] / sdk / go / src / arvados.org / keepclient / keepclient.go
index dcf1f33bbac1fac4927e821806659a9d3572fff9..e16c853e4685cd36e8442301f96b1832e4bdd566 100644 (file)
@@ -2,7 +2,7 @@
 package keepclient
 
 import (
-       "arvados.org/buffer"
+       "arvados.org/streamer"
        "crypto/md5"
        "crypto/tls"
        "errors"
@@ -28,6 +28,7 @@ type KeepClient struct {
        Service_roots []string
        Want_replicas int
        Client        *http.Client
+       Using_proxy   bool
 }
 
 // Create a new KeepClient, initialized with standard Arvados environment
@@ -35,7 +36,7 @@ type KeepClient struct {
 // ARVADOS_API_HOST_INSECURE.  This will contact the API server to discover
 // Keep servers.
 func MakeKeepClient() (kc KeepClient, err error) {
-       insecure := (os.Getenv("ARVADOS_API_HOST_INSECURE") != "")
+       insecure := (os.Getenv("ARVADOS_API_HOST_INSECURE") == "true")
 
        kc = KeepClient{
                ApiServer:     os.Getenv("ARVADOS_API_HOST"),
@@ -43,8 +44,8 @@ func MakeKeepClient() (kc KeepClient, err error) {
                ApiInsecure:   insecure,
                Want_replicas: 2,
                Client: &http.Client{Transport: &http.Transport{
-                       TLSClientConfig: &tls.Config{InsecureSkipVerify: insecure},
-               }}}
+                       TLSClientConfig: &tls.Config{InsecureSkipVerify: insecure}}},
+               Using_proxy: false}
 
        err = (&kc).discoverKeepServers()
 
@@ -69,7 +70,7 @@ func (this KeepClient) PutHR(hash string, r io.Reader, expectedLength int64) (re
                bufsize = BLOCKSIZE
        }
 
-       t := buffer.StartTransferFromReader(bufsize, HashCheckingReader{r, md5.New(), hash})
+       t := streamer.AsyncStreamFromReader(bufsize, HashCheckingReader{r, md5.New(), hash})
        defer t.Close()
 
        return this.putReplicas(hash, t, expectedLength)
@@ -80,7 +81,7 @@ func (this KeepClient) PutHR(hash string, r io.Reader, expectedLength int64) (re
 // replicas that were written and if there was an error.  Note this will return
 // InsufficientReplias whenever 0 <= replicas < this.Wants_replicas.
 func (this KeepClient) PutHB(hash string, buf []byte) (replicas int, err error) {
-       t := buffer.StartTransferFromSlice(buf)
+       t := streamer.AsyncStreamFromSlice(buf)
        defer t.Close()
 
        return this.putReplicas(hash, t, int64(len(buf)))