mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Merge pull request #17128 from calavera/network_controller_enabled
Do not initialize the networking routes when netController is not enabled.
This commit is contained in:
commit
82a8a14c4d
4 changed files with 38 additions and 6 deletions
|
@ -1,9 +1,14 @@
|
||||||
package network
|
package network
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/docker/docker/api/server/httputils"
|
||||||
"github.com/docker/docker/api/server/router"
|
"github.com/docker/docker/api/server/router"
|
||||||
"github.com/docker/docker/api/server/router/local"
|
"github.com/docker/docker/api/server/router/local"
|
||||||
"github.com/docker/docker/daemon"
|
"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
|
// networkRouter is a router to talk with the network controller
|
||||||
|
@ -29,13 +34,24 @@ func (r *networkRouter) Routes() []router.Route {
|
||||||
func (r *networkRouter) initRoutes() {
|
func (r *networkRouter) initRoutes() {
|
||||||
r.routes = []router.Route{
|
r.routes = []router.Route{
|
||||||
// GET
|
// GET
|
||||||
local.NewGetRoute("/networks", r.getNetworksList),
|
local.NewGetRoute("/networks", r.controllerEnabledMiddleware(r.getNetworksList)),
|
||||||
local.NewGetRoute("/networks/{id:.*}", r.getNetwork),
|
local.NewGetRoute("/networks/{id:.*}", r.controllerEnabledMiddleware(r.getNetwork)),
|
||||||
// POST
|
// POST
|
||||||
local.NewPostRoute("/networks/create", r.postNetworkCreate),
|
local.NewPostRoute("/networks/create", r.controllerEnabledMiddleware(r.postNetworkCreate)),
|
||||||
local.NewPostRoute("/networks/{id:.*}/connect", r.postNetworkConnect),
|
local.NewPostRoute("/networks/{id:.*}/connect", r.controllerEnabledMiddleware(r.postNetworkConnect)),
|
||||||
local.NewPostRoute("/networks/{id:.*}/disconnect", r.postNetworkDisconnect),
|
local.NewPostRoute("/networks/{id:.*}/disconnect", r.controllerEnabledMiddleware(r.postNetworkDisconnect)),
|
||||||
// DELETE
|
// 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()
|
||||||
|
}
|
||||||
|
|
|
@ -170,6 +170,7 @@ func (s *Server) makeHTTPHandler(handler httputils.APIFunc) http.HandlerFunc {
|
||||||
func (s *Server) InitRouters(d *daemon.Daemon) {
|
func (s *Server) InitRouters(d *daemon.Daemon) {
|
||||||
s.addRouter(local.NewRouter(d))
|
s.addRouter(local.NewRouter(d))
|
||||||
s.addRouter(network.NewRouter(d))
|
s.addRouter(network.NewRouter(d))
|
||||||
|
|
||||||
for _, srv := range s.servers {
|
for _, srv := range s.servers {
|
||||||
srv.srv.Handler = s.CreateMux()
|
srv.srv.Handler = s.CreateMux()
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,12 @@ const (
|
||||||
NetworkByName
|
NetworkByName
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// NetworkControllerEnabled checks if the networking stack is enabled.
|
||||||
|
// This feature depends on OS primitives and it's dissabled in systems like Windows.
|
||||||
|
func (daemon *Daemon) NetworkControllerEnabled() bool {
|
||||||
|
return daemon.netController != nil
|
||||||
|
}
|
||||||
|
|
||||||
// FindNetwork function finds a network for a given string that can represent network name or id
|
// FindNetwork function finds a network for a given string that can represent network name or id
|
||||||
func (daemon *Daemon) FindNetwork(idName string) (libnetwork.Network, error) {
|
func (daemon *Daemon) FindNetwork(idName string) (libnetwork.Network, error) {
|
||||||
// Find by Name
|
// Find by Name
|
||||||
|
|
|
@ -24,4 +24,13 @@ var (
|
||||||
Description: "The client version is too old for the server",
|
Description: "The client version is too old for the server",
|
||||||
HTTPStatusCode: http.StatusBadRequest,
|
HTTPStatusCode: http.StatusBadRequest,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ErrorNetworkControllerNotEnabled is generated when the networking stack in not enabled
|
||||||
|
// for certain platforms, like windows.
|
||||||
|
ErrorNetworkControllerNotEnabled = errcode.Register(errGroup, errcode.ErrorDescriptor{
|
||||||
|
Value: "NETWORK_CONTROLLER_NOT_ENABLED",
|
||||||
|
Message: "the network controller is not enabled for this platform",
|
||||||
|
Description: "Docker's networking stack is disabled for this platform",
|
||||||
|
HTTPStatusCode: http.StatusNotFound,
|
||||||
|
})
|
||||||
)
|
)
|
||||||
|
|
Loading…
Add table
Reference in a new issue