Though libnetwork api is supposed to handle the sub router, it is given
the entire URL to deal with. But the current api.go assumes the network/
to be in the root path.
We need this patch to make it work seamlessly with docker & dnet UI & API
Signed-off-by: Madhu Venugopal <madhu@docker.com>
| ... | ... |
@@ -107,7 +107,7 @@ func (h *httpHandler) initRouter() {
|
| 107 | 107 |
h.r = mux.NewRouter() |
| 108 | 108 |
for method, routes := range m {
|
| 109 | 109 |
for _, route := range routes {
|
| 110 |
- r := h.r.Path(route.url).Methods(method).HandlerFunc(makeHandler(h.c, route.fct)) |
|
| 110 |
+ r := h.r.Path("/{.*}" + route.url).Methods(method).HandlerFunc(makeHandler(h.c, route.fct))
|
|
| 111 | 111 |
if route.qrs != nil {
|
| 112 | 112 |
r.Queries(route.qrs...) |
| 113 | 113 |
} |
| ... | ... |
@@ -1136,7 +1136,7 @@ func TestHttpHandlerUninit(t *testing.T) {
|
| 1136 | 1136 |
} |
| 1137 | 1137 |
|
| 1138 | 1138 |
rsp := newWriter() |
| 1139 |
- req, err := http.NewRequest("GET", "/networks", nil)
|
|
| 1139 |
+ req, err := http.NewRequest("GET", "/v1.19/networks", nil)
|
|
| 1140 | 1140 |
if err != nil {
|
| 1141 | 1141 |
t.Fatal(err) |
| 1142 | 1142 |
} |
| ... | ... |
@@ -1196,7 +1196,7 @@ func TestHttpHandlerBadBody(t *testing.T) {
|
| 1196 | 1196 |
} |
| 1197 | 1197 |
handleRequest := NewHTTPHandler(c) |
| 1198 | 1198 |
|
| 1199 |
- req, err := http.NewRequest("POST", "/networks", &localReader{beBad: true})
|
|
| 1199 |
+ req, err := http.NewRequest("POST", "/v1.19/networks", &localReader{beBad: true})
|
|
| 1200 | 1200 |
if err != nil {
|
| 1201 | 1201 |
t.Fatal(err) |
| 1202 | 1202 |
} |
| ... | ... |
@@ -1207,7 +1207,7 @@ func TestHttpHandlerBadBody(t *testing.T) {
|
| 1207 | 1207 |
|
| 1208 | 1208 |
body := []byte{}
|
| 1209 | 1209 |
lr := newLocalReader(body) |
| 1210 |
- req, err = http.NewRequest("POST", "/networks", lr)
|
|
| 1210 |
+ req, err = http.NewRequest("POST", "/v1.19/networks", lr)
|
|
| 1211 | 1211 |
if err != nil {
|
| 1212 | 1212 |
t.Fatal(err) |
| 1213 | 1213 |
} |
| ... | ... |
@@ -1235,7 +1235,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1235 | 1235 |
t.Fatal(err) |
| 1236 | 1236 |
} |
| 1237 | 1237 |
lr := newLocalReader(body) |
| 1238 |
- req, err := http.NewRequest("POST", "/networks", lr)
|
|
| 1238 |
+ req, err := http.NewRequest("POST", "/v1.19/networks", lr)
|
|
| 1239 | 1239 |
if err != nil {
|
| 1240 | 1240 |
t.Fatal(err) |
| 1241 | 1241 |
} |
| ... | ... |
@@ -1254,7 +1254,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1254 | 1254 |
} |
| 1255 | 1255 |
|
| 1256 | 1256 |
// Query networks collection |
| 1257 |
- req, err = http.NewRequest("GET", "/networks", nil)
|
|
| 1257 |
+ req, err = http.NewRequest("GET", "/v1.19/networks", nil)
|
|
| 1258 | 1258 |
if err != nil {
|
| 1259 | 1259 |
t.Fatal(err) |
| 1260 | 1260 |
} |
| ... | ... |
@@ -1266,7 +1266,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1266 | 1266 |
b0 := make([]byte, len(rsp.body)) |
| 1267 | 1267 |
copy(b0, rsp.body) |
| 1268 | 1268 |
|
| 1269 |
- req, err = http.NewRequest("GET", "/networks?name=network-fiftyfive", nil)
|
|
| 1269 |
+ req, err = http.NewRequest("GET", "/v1.19/networks?name=network-fiftyfive", nil)
|
|
| 1270 | 1270 |
if err != nil {
|
| 1271 | 1271 |
t.Fatal(err) |
| 1272 | 1272 |
} |
| ... | ... |
@@ -1280,7 +1280,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1280 | 1280 |
} |
| 1281 | 1281 |
|
| 1282 | 1282 |
// Query network by name |
| 1283 |
- req, err = http.NewRequest("GET", "/networks?name=culo", nil)
|
|
| 1283 |
+ req, err = http.NewRequest("GET", "/v1.19/networks?name=culo", nil)
|
|
| 1284 | 1284 |
if err != nil {
|
| 1285 | 1285 |
t.Fatal(err) |
| 1286 | 1286 |
} |
| ... | ... |
@@ -1298,7 +1298,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1298 | 1298 |
t.Fatalf("Expected empty list. Got %v", list)
|
| 1299 | 1299 |
} |
| 1300 | 1300 |
|
| 1301 |
- req, err = http.NewRequest("GET", "/networks?name=network-fiftyfive", nil)
|
|
| 1301 |
+ req, err = http.NewRequest("GET", "/v1.19/networks?name=network-fiftyfive", nil)
|
|
| 1302 | 1302 |
if err != nil {
|
| 1303 | 1303 |
t.Fatal(err) |
| 1304 | 1304 |
} |
| ... | ... |
@@ -1321,7 +1321,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1321 | 1321 |
// Query network by partial id |
| 1322 | 1322 |
chars := []byte(nid) |
| 1323 | 1323 |
partial := string(chars[0 : len(chars)/2]) |
| 1324 |
- req, err = http.NewRequest("GET", "/networks?partial-id="+partial, nil)
|
|
| 1324 |
+ req, err = http.NewRequest("GET", "/v1.19/networks?partial-id="+partial, nil)
|
|
| 1325 | 1325 |
if err != nil {
|
| 1326 | 1326 |
t.Fatal(err) |
| 1327 | 1327 |
} |
| ... | ... |
@@ -1342,7 +1342,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1342 | 1342 |
} |
| 1343 | 1343 |
|
| 1344 | 1344 |
// Get network by id |
| 1345 |
- req, err = http.NewRequest("GET", "/networks/"+nid, nil)
|
|
| 1345 |
+ req, err = http.NewRequest("GET", "/v1.19/networks/"+nid, nil)
|
|
| 1346 | 1346 |
if err != nil {
|
| 1347 | 1347 |
t.Fatal(err) |
| 1348 | 1348 |
} |
| ... | ... |
@@ -1367,7 +1367,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1367 | 1367 |
} |
| 1368 | 1368 |
|
| 1369 | 1369 |
lr = newLocalReader(eb) |
| 1370 |
- req, err = http.NewRequest("POST", "/networks/"+nid+"/endpoints", lr)
|
|
| 1370 |
+ req, err = http.NewRequest("POST", "/v1.19/networks/"+nid+"/endpoints", lr)
|
|
| 1371 | 1371 |
if err != nil {
|
| 1372 | 1372 |
t.Fatal(err) |
| 1373 | 1373 |
} |
| ... | ... |
@@ -1386,7 +1386,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1386 | 1386 |
} |
| 1387 | 1387 |
|
| 1388 | 1388 |
// Query endpoint(s) |
| 1389 |
- req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints", nil)
|
|
| 1389 |
+ req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints", nil)
|
|
| 1390 | 1390 |
if err != nil {
|
| 1391 | 1391 |
t.Fatal(err) |
| 1392 | 1392 |
} |
| ... | ... |
@@ -1395,7 +1395,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1395 | 1395 |
t.Fatalf("Expected StatusOK. Got (%d): %s", rsp.statusCode, rsp.body)
|
| 1396 | 1396 |
} |
| 1397 | 1397 |
|
| 1398 |
- req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints?name=bla", nil)
|
|
| 1398 |
+ req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints?name=bla", nil)
|
|
| 1399 | 1399 |
if err != nil {
|
| 1400 | 1400 |
t.Fatal(err) |
| 1401 | 1401 |
} |
| ... | ... |
@@ -1413,7 +1413,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1413 | 1413 |
} |
| 1414 | 1414 |
|
| 1415 | 1415 |
// Query endpoint by name |
| 1416 |
- req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints?name=ep-TwentyTwo", nil)
|
|
| 1416 |
+ req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints?name=ep-TwentyTwo", nil)
|
|
| 1417 | 1417 |
if err != nil {
|
| 1418 | 1418 |
t.Fatal(err) |
| 1419 | 1419 |
} |
| ... | ... |
@@ -1436,7 +1436,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1436 | 1436 |
// Query endpoint by partial id |
| 1437 | 1437 |
chars = []byte(eid) |
| 1438 | 1438 |
partial = string(chars[0 : len(chars)/2]) |
| 1439 |
- req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints?partial-id="+partial, nil)
|
|
| 1439 |
+ req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints?partial-id="+partial, nil)
|
|
| 1440 | 1440 |
if err != nil {
|
| 1441 | 1441 |
t.Fatal(err) |
| 1442 | 1442 |
} |
| ... | ... |
@@ -1457,7 +1457,7 @@ func TestEndToEnd(t *testing.T) {
|
| 1457 | 1457 |
} |
| 1458 | 1458 |
|
| 1459 | 1459 |
// Get endpoint by id |
| 1460 |
- req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints/"+eid, nil)
|
|
| 1460 |
+ req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints/"+eid, nil)
|
|
| 1461 | 1461 |
if err != nil {
|
| 1462 | 1462 |
t.Fatal(err) |
| 1463 | 1463 |
} |
| ... | ... |
@@ -113,7 +113,7 @@ func (d *dnetConnection) dnetDaemon() error {
|
| 113 | 113 |
} |
| 114 | 114 |
httpHandler := api.NewHTTPHandler(controller) |
| 115 | 115 |
r := mux.NewRouter().StrictSlash(false) |
| 116 |
- post := r.PathPrefix("/networks").Subrouter()
|
|
| 116 |
+ post := r.PathPrefix("/{.*}/networks").Subrouter()
|
|
| 117 | 117 |
post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler)
|
| 118 | 118 |
return http.ListenAndServe(d.addr, r) |
| 119 | 119 |
} |
| ... | ... |
@@ -141,7 +141,7 @@ func (d *dnetConnection) httpCall(method, path string, data interface{}, headers
|
| 141 | 141 |
return nil, -1, err |
| 142 | 142 |
} |
| 143 | 143 |
|
| 144 |
- req, err := http.NewRequest(method, fmt.Sprintf("%s", path), in)
|
|
| 144 |
+ req, err := http.NewRequest(method, fmt.Sprintf("/dnet%s", path), in)
|
|
| 145 | 145 |
if err != nil {
|
| 146 | 146 |
return nil, -1, err |
| 147 | 147 |
} |