diff --git a/libnetwork/api/api.go b/libnetwork/api/api.go index a3ab77e7c5..97305d34fc 100644 --- a/libnetwork/api/api.go +++ b/libnetwork/api/api.go @@ -107,7 +107,7 @@ func (h *httpHandler) initRouter() { h.r = mux.NewRouter() for method, routes := range m { for _, route := range routes { - r := h.r.Path(route.url).Methods(method).HandlerFunc(makeHandler(h.c, route.fct)) + r := h.r.Path("/{.*}" + route.url).Methods(method).HandlerFunc(makeHandler(h.c, route.fct)) if route.qrs != nil { r.Queries(route.qrs...) } diff --git a/libnetwork/api/api_test.go b/libnetwork/api/api_test.go index cb35ecfe31..7fbbee504a 100644 --- a/libnetwork/api/api_test.go +++ b/libnetwork/api/api_test.go @@ -1136,7 +1136,7 @@ func TestHttpHandlerUninit(t *testing.T) { } rsp := newWriter() - req, err := http.NewRequest("GET", "/networks", nil) + req, err := http.NewRequest("GET", "/v1.19/networks", nil) if err != nil { t.Fatal(err) } @@ -1196,7 +1196,7 @@ func TestHttpHandlerBadBody(t *testing.T) { } handleRequest := NewHTTPHandler(c) - req, err := http.NewRequest("POST", "/networks", &localReader{beBad: true}) + req, err := http.NewRequest("POST", "/v1.19/networks", &localReader{beBad: true}) if err != nil { t.Fatal(err) } @@ -1207,7 +1207,7 @@ func TestHttpHandlerBadBody(t *testing.T) { body := []byte{} lr := newLocalReader(body) - req, err = http.NewRequest("POST", "/networks", lr) + req, err = http.NewRequest("POST", "/v1.19/networks", lr) if err != nil { t.Fatal(err) } @@ -1235,7 +1235,7 @@ func TestEndToEnd(t *testing.T) { t.Fatal(err) } lr := newLocalReader(body) - req, err := http.NewRequest("POST", "/networks", lr) + req, err := http.NewRequest("POST", "/v1.19/networks", lr) if err != nil { t.Fatal(err) } @@ -1254,7 +1254,7 @@ func TestEndToEnd(t *testing.T) { } // Query networks collection - req, err = http.NewRequest("GET", "/networks", nil) + req, err = http.NewRequest("GET", "/v1.19/networks", nil) if err != nil { t.Fatal(err) } @@ -1266,7 +1266,7 @@ func TestEndToEnd(t *testing.T) { b0 := make([]byte, len(rsp.body)) copy(b0, rsp.body) - req, err = http.NewRequest("GET", "/networks?name=network-fiftyfive", nil) + req, err = http.NewRequest("GET", "/v1.19/networks?name=network-fiftyfive", nil) if err != nil { t.Fatal(err) } @@ -1280,7 +1280,7 @@ func TestEndToEnd(t *testing.T) { } // Query network by name - req, err = http.NewRequest("GET", "/networks?name=culo", nil) + req, err = http.NewRequest("GET", "/v1.19/networks?name=culo", nil) if err != nil { t.Fatal(err) } @@ -1298,7 +1298,7 @@ func TestEndToEnd(t *testing.T) { t.Fatalf("Expected empty list. Got %v", list) } - req, err = http.NewRequest("GET", "/networks?name=network-fiftyfive", nil) + req, err = http.NewRequest("GET", "/v1.19/networks?name=network-fiftyfive", nil) if err != nil { t.Fatal(err) } @@ -1321,7 +1321,7 @@ func TestEndToEnd(t *testing.T) { // Query network by partial id chars := []byte(nid) partial := string(chars[0 : len(chars)/2]) - req, err = http.NewRequest("GET", "/networks?partial-id="+partial, nil) + req, err = http.NewRequest("GET", "/v1.19/networks?partial-id="+partial, nil) if err != nil { t.Fatal(err) } @@ -1342,7 +1342,7 @@ func TestEndToEnd(t *testing.T) { } // Get network by id - req, err = http.NewRequest("GET", "/networks/"+nid, nil) + req, err = http.NewRequest("GET", "/v1.19/networks/"+nid, nil) if err != nil { t.Fatal(err) } @@ -1367,7 +1367,7 @@ func TestEndToEnd(t *testing.T) { } lr = newLocalReader(eb) - req, err = http.NewRequest("POST", "/networks/"+nid+"/endpoints", lr) + req, err = http.NewRequest("POST", "/v1.19/networks/"+nid+"/endpoints", lr) if err != nil { t.Fatal(err) } @@ -1386,7 +1386,7 @@ func TestEndToEnd(t *testing.T) { } // Query endpoint(s) - req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints", nil) + req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints", nil) if err != nil { t.Fatal(err) } @@ -1395,7 +1395,7 @@ func TestEndToEnd(t *testing.T) { t.Fatalf("Expected StatusOK. Got (%d): %s", rsp.statusCode, rsp.body) } - req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints?name=bla", nil) + req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints?name=bla", nil) if err != nil { t.Fatal(err) } @@ -1413,7 +1413,7 @@ func TestEndToEnd(t *testing.T) { } // Query endpoint by name - req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints?name=ep-TwentyTwo", nil) + req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints?name=ep-TwentyTwo", nil) if err != nil { t.Fatal(err) } @@ -1436,7 +1436,7 @@ func TestEndToEnd(t *testing.T) { // Query endpoint by partial id chars = []byte(eid) partial = string(chars[0 : len(chars)/2]) - req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints?partial-id="+partial, nil) + req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints?partial-id="+partial, nil) if err != nil { t.Fatal(err) } @@ -1457,7 +1457,7 @@ func TestEndToEnd(t *testing.T) { } // Get endpoint by id - req, err = http.NewRequest("GET", "/networks/"+nid+"/endpoints/"+eid, nil) + req, err = http.NewRequest("GET", "/v1.19/networks/"+nid+"/endpoints/"+eid, nil) if err != nil { t.Fatal(err) } diff --git a/libnetwork/cmd/dnet/dnet.go b/libnetwork/cmd/dnet/dnet.go index 41448db168..8c599249a1 100644 --- a/libnetwork/cmd/dnet/dnet.go +++ b/libnetwork/cmd/dnet/dnet.go @@ -113,7 +113,7 @@ func (d *dnetConnection) dnetDaemon() error { } httpHandler := api.NewHTTPHandler(controller) r := mux.NewRouter().StrictSlash(false) - post := r.PathPrefix("/networks").Subrouter() + post := r.PathPrefix("/{.*}/networks").Subrouter() post.Methods("GET", "PUT", "POST", "DELETE").HandlerFunc(httpHandler) return http.ListenAndServe(d.addr, r) } @@ -141,7 +141,7 @@ func (d *dnetConnection) httpCall(method, path string, data interface{}, headers return nil, -1, err } - req, err := http.NewRequest(method, fmt.Sprintf("%s", path), in) + req, err := http.NewRequest(method, fmt.Sprintf("/dnet%s", path), in) if err != nil { return nil, -1, err }