[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