[ARVADOS] created: 717bee7044a2cd44678e13e116ec1be2a83cfe60

git at public.curoverse.com git at public.curoverse.com
Sat May 10 16:06:03 EDT 2014


        at  717bee7044a2cd44678e13e116ec1be2a83cfe60 (commit)


commit 717bee7044a2cd44678e13e116ec1be2a83cfe60
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Sat May 10 16:05:59 2014 -0400

    2798: Turns list of keep disk objects into sorted slice of http URLs for keep servers

diff --git a/sdk/go/src/arvados.org/keepclient/keepclient.go b/sdk/go/src/arvados.org/keepclient/keepclient.go
index 6bd6cbf..2bb5ff3 100644
--- a/sdk/go/src/arvados.org/keepclient/keepclient.go
+++ b/sdk/go/src/arvados.org/keepclient/keepclient.go
@@ -3,15 +3,18 @@ package keepclient
 import (
 	"crypto/tls"
 	"encoding/json"
+	"fmt"
 	"net/http"
+	"sort"
 )
 
 type KeepDisk struct {
 	Hostname string `json:"service_host"`
 	Port     int    `json:"service_port"`
+	SSL      bool   `json:"service_ssl_flag"`
 }
 
-func KeepDisks() (disks []KeepDisk, err error) {
+func KeepDisks() (service_roots []string, err error) {
 	tr := &http.Transport{
 		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
 	}
@@ -37,5 +40,23 @@ func KeepDisks() (disks []KeepDisk, err error) {
 		return nil, err
 	}
 
-	return m.Items, nil
+	service_roots = make([]string, len(m.Items))
+	for index, element := range m.Items {
+		n := ""
+		if element.SSL {
+			n = "s"
+		}
+		service_roots[index] = fmt.Sprintf("http%s://%s:%d",
+			n, element.Hostname, element.Port)
+	}
+	sort.Strings(service_roots)
+	return service_roots, nil
+}
+
+/*
+func ProbeSequence(service_roots []string) (pseq []string) {
+	pseq = make([]string, 0, len(disks))
+	pool := disks[:]
+
 }
+*/
diff --git a/sdk/go/src/arvados.org/keepclient/keepclient_test.go b/sdk/go/src/arvados.org/keepclient/keepclient_test.go
index 95f6c3c..ac0c85a 100644
--- a/sdk/go/src/arvados.org/keepclient/keepclient_test.go
+++ b/sdk/go/src/arvados.org/keepclient/keepclient_test.go
@@ -13,11 +13,10 @@ type MySuite struct{}
 var _ = Suite(&MySuite{})
 
 func (s *MySuite) TestGetKeepDisks(c *C) {
-	k, err := KeepDisks()
+	sr, err := KeepDisks()
 	c.Assert(err, Equals, nil)
-	c.Assert(len(k), Equals, 2)
-	c.Assert(k[0].Hostname, Equals, "localhost")
-	c.Assert(k[0].Port, Equals, 25108)
-	c.Assert(k[1].Hostname, Equals, "localhost")
-	c.Assert(k[1].Port, Equals, 25107)
+	c.Assert(len(sr), Equals, 2)
+	c.Assert(sr[0], Equals, "http://localhost:25107")
+	c.Assert(sr[1], Equals, "http://localhost:25108")
+
 }

commit 952599738f3c9f8901c895858865fc90b5e30c1d
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Sat May 10 15:33:19 2014 -0400

    2798: Initial commit, supports querying API server for list of Keep disks.
    (new branch because I forgot to commit before leaving work)

diff --git a/sdk/go/src/arvados.org/keepclient/keepclient.go b/sdk/go/src/arvados.org/keepclient/keepclient.go
new file mode 100644
index 0000000..6bd6cbf
--- /dev/null
+++ b/sdk/go/src/arvados.org/keepclient/keepclient.go
@@ -0,0 +1,41 @@
+package keepclient
+
+import (
+	"crypto/tls"
+	"encoding/json"
+	"net/http"
+)
+
+type KeepDisk struct {
+	Hostname string `json:"service_host"`
+	Port     int    `json:"service_port"`
+}
+
+func KeepDisks() (disks []KeepDisk, err error) {
+	tr := &http.Transport{
+		TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
+	}
+	client := &http.Client{Transport: tr}
+
+	var req *http.Request
+	if req, err = http.NewRequest("GET", "https://localhost:3001/arvados/v1/keep_disks", nil); err != nil {
+		return nil, err
+	}
+
+	var resp *http.Response
+	req.Header.Add("Authorization", "OAuth2 4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h")
+	if resp, err = client.Do(req); err != nil {
+		return nil, err
+	}
+
+	type SvcList struct {
+		Items []KeepDisk `json:"items"`
+	}
+	dec := json.NewDecoder(resp.Body)
+	var m SvcList
+	if err := dec.Decode(&m); err != nil {
+		return nil, err
+	}
+
+	return m.Items, nil
+}
diff --git a/sdk/go/src/arvados.org/keepclient/keepclient_test.go b/sdk/go/src/arvados.org/keepclient/keepclient_test.go
new file mode 100644
index 0000000..95f6c3c
--- /dev/null
+++ b/sdk/go/src/arvados.org/keepclient/keepclient_test.go
@@ -0,0 +1,23 @@
+package keepclient
+
+import (
+	. "gopkg.in/check.v1"
+	"testing"
+)
+
+// Hook up gocheck into the "go test" runner.
+func Test(t *testing.T) { TestingT(t) }
+
+type MySuite struct{}
+
+var _ = Suite(&MySuite{})
+
+func (s *MySuite) TestGetKeepDisks(c *C) {
+	k, err := KeepDisks()
+	c.Assert(err, Equals, nil)
+	c.Assert(len(k), Equals, 2)
+	c.Assert(k[0].Hostname, Equals, "localhost")
+	c.Assert(k[0].Port, Equals, 25108)
+	c.Assert(k[1].Hostname, Equals, "localhost")
+	c.Assert(k[1].Port, Equals, 25107)
+}

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list