|
@@ -1,9 +1,14 @@
|
|
|
package network
|
|
|
|
|
|
import (
|
|
|
+ "net/http"
|
|
|
+
|
|
|
+ "github.com/docker/docker/api/server/httputils"
|
|
|
"github.com/docker/docker/api/server/router"
|
|
|
"github.com/docker/docker/api/server/router/local"
|
|
|
"github.com/docker/docker/daemon"
|
|
|
+ "github.com/docker/docker/errors"
|
|
|
+ "golang.org/x/net/context"
|
|
|
)
|
|
|
|
|
|
// networkRouter is a router to talk with the network controller
|
|
@@ -29,13 +34,24 @@ func (r *networkRouter) Routes() []router.Route {
|
|
|
func (r *networkRouter) initRoutes() {
|
|
|
r.routes = []router.Route{
|
|
|
// GET
|
|
|
- local.NewGetRoute("/networks", r.getNetworksList),
|
|
|
- local.NewGetRoute("/networks/{id:.*}", r.getNetwork),
|
|
|
+ local.NewGetRoute("/networks", r.controllerEnabledMiddleware(r.getNetworksList)),
|
|
|
+ local.NewGetRoute("/networks/{id:.*}", r.controllerEnabledMiddleware(r.getNetwork)),
|
|
|
// POST
|
|
|
- local.NewPostRoute("/networks/create", r.postNetworkCreate),
|
|
|
- local.NewPostRoute("/networks/{id:.*}/connect", r.postNetworkConnect),
|
|
|
- local.NewPostRoute("/networks/{id:.*}/disconnect", r.postNetworkDisconnect),
|
|
|
+ local.NewPostRoute("/networks/create", r.controllerEnabledMiddleware(r.postNetworkCreate)),
|
|
|
+ local.NewPostRoute("/networks/{id:.*}/connect", r.controllerEnabledMiddleware(r.postNetworkConnect)),
|
|
|
+ local.NewPostRoute("/networks/{id:.*}/disconnect", r.controllerEnabledMiddleware(r.postNetworkDisconnect)),
|
|
|
// DELETE
|
|
|
- local.NewDeleteRoute("/networks/{id:.*}", r.deleteNetwork),
|
|
|
+ local.NewDeleteRoute("/networks/{id:.*}", r.controllerEnabledMiddleware(r.deleteNetwork)),
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (r *networkRouter) controllerEnabledMiddleware(handler httputils.APIFunc) httputils.APIFunc {
|
|
|
+ if r.daemon.NetworkControllerEnabled() {
|
|
|
+ return handler
|
|
|
}
|
|
|
+ return networkControllerDisabled
|
|
|
+}
|
|
|
+
|
|
|
+func networkControllerDisabled(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
|
|
|
+ return errors.ErrorNetworkControllerNotEnabled.WithArgs()
|
|
|
}
|