Merge lp:~pedronis/ubuntu-push/simple-delivery-hosts into lp:ubuntu-push/automatic

Proposed by Samuele Pedroni
Status: Merged
Approved by: Samuele Pedroni
Approved revision: 113
Merged at revision: 113
Proposed branch: lp:~pedronis/ubuntu-push/simple-delivery-hosts
Merge into: lp:ubuntu-push/automatic
Diff against target: 96 lines (+31/-2)
4 files modified
sampleconfigs/dev.json (+2/-1)
server/acceptance/acceptance_test.go (+1/-0)
server/acceptance/suites/broadcast.go (+10/-0)
server/dev/server.go (+18/-1)
To merge this branch: bzr merge lp:~pedronis/ubuntu-push/simple-delivery-hosts
Reviewer Review Type Date Requested Status
John Lenton (community) Approve
Review via email: mp+214697@code.launchpad.net

Commit message

have a simple /delivery-hosts for use with the full client for the dev server

Description of the change

have a simple /delivery-hosts for use with the full client for the dev server

To post a comment you must log in.
Revision history for this message
John Lenton (chipaca) wrote :

Excellent; I was wanting to use this just yesterday :-)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'sampleconfigs/dev.json'
2--- sampleconfigs/dev.json 2014-03-31 16:48:00 +0000
3+++ sampleconfigs/dev.json 2014-04-08 09:13:32 +0000
4@@ -8,5 +8,6 @@
5 "cert_pem_file": "../server/acceptance/ssl/testing.cert",
6 "http_addr": "127.0.0.1:8080",
7 "http_read_timeout": "5s",
8- "http_write_timeout": "5s"
9+ "http_write_timeout": "5s",
10+ "delivery_domain": "localhost"
11 }
12
13=== modified file 'server/acceptance/acceptance_test.go'
14--- server/acceptance/acceptance_test.go 2014-02-26 19:50:46 +0000
15+++ server/acceptance/acceptance_test.go 2014-04-08 09:13:32 +0000
16@@ -34,6 +34,7 @@
17 cfg := make(map[string]interface{})
18 suites.FillServerConfig(cfg, addr)
19 suites.FillHTTPServerConfig(cfg, httpAddr)
20+ cfg["delivery_domain"] = "localhost"
21 return cfg
22 }
23
24
25=== modified file 'server/acceptance/suites/broadcast.go'
26--- server/acceptance/suites/broadcast.go 2014-04-04 10:10:52 +0000
27+++ server/acceptance/suites/broadcast.go 2014-04-08 09:13:32 +0000
28@@ -24,6 +24,7 @@
29
30 . "launchpad.net/gocheck"
31
32+ "launchpad.net/ubuntu-push/client/gethosts"
33 "launchpad.net/ubuntu-push/protocol"
34 "launchpad.net/ubuntu-push/server/api"
35 )
36@@ -259,3 +260,12 @@
37 c.Assert(NextEvent(s.ServerEvents, nil), Matches, `.* ended with:.*EOF`)
38 c.Check(len(errCh), Equals, 0)
39 }
40+
41+// test /delivery-hosts
42+
43+func (s *BroadcastAcceptanceSuite) TestGetHosts(c *C) {
44+ gh := gethosts.New("", s.ServerAPIURL+"/delivery-hosts", 2*time.Second)
45+ hosts, err := gh.Get()
46+ c.Assert(err, IsNil)
47+ c.Check(hosts, DeepEquals, []string{s.ServerAddr})
48+}
49
50=== modified file 'server/dev/server.go'
51--- server/dev/server.go 2014-03-25 19:02:18 +0000
52+++ server/dev/server.go 2014-04-08 09:13:32 +0000
53@@ -18,6 +18,7 @@
54 package main
55
56 import (
57+ "encoding/json"
58 "net"
59 "net/http"
60 "os"
61@@ -37,6 +38,8 @@
62 server.DevicesParsedConfig
63 // api http server configuration
64 server.HTTPServeParsedConfig
65+ // delivery domain
66+ DeliveryDomain string `json:"delivery_domain"`
67 }
68
69 func main() {
70@@ -60,11 +63,25 @@
71 storeForRequest := func(http.ResponseWriter, *http.Request) (store.PendingStore, error) {
72 return sto, nil
73 }
74+ lst, err := net.Listen("tcp", cfg.Addr())
75+ if err != nil {
76+ server.BootLogFatalf("start device listening: %v", err)
77+ }
78 mux := api.MakeHandlersMux(storeForRequest, broker, logger)
79+ // & /delivery-hosts
80+ mux.HandleFunc("/delivery-hosts", func(w http.ResponseWriter, req *http.Request) {
81+ w.Header().Set("Cache-Control", "no-cache")
82+ w.Header().Set("Content-Type", "application/json")
83+ enc := json.NewEncoder(w)
84+ enc.Encode(map[string]interface{}{
85+ "hosts": []string{lst.Addr().String()},
86+ "domain": cfg.DeliveryDomain,
87+ })
88+ })
89 handler := api.PanicTo500Handler(mux, logger)
90 go server.HTTPServeRunner(nil, handler, &cfg.HTTPServeParsedConfig)()
91 // listen for device connections
92- server.DevicesRunner(nil, func(conn net.Conn) error {
93+ server.DevicesRunner(lst, func(conn net.Conn) error {
94 track := session.NewTracker(logger)
95 return session.Session(conn, broker, cfg, track)
96 }, logger, &cfg.DevicesParsedConfig)()

Subscribers

People subscribed via source and target branches