func initRouter(s *apiserver.Server, d *daemon.Daemon, c *cluster.Cluster) { decoder := runconfig.ContainerDecoder{} routers := []router.Router{ // we need to add the checkpoint router before the container router or the DELETE gets masked checkpointrouter.NewRouter(d, decoder), container.NewRouter(d, decoder), image.NewRouter(d, decoder), systemrouter.NewRouter(d, c), volume.NewRouter(d), build.NewRouter(dockerfile.NewBuildManager(d)), swarmrouter.NewRouter(c), pluginrouter.NewRouter(plugin.GetManager()), } if d.NetworkControllerEnabled() { routers = append(routers, network.NewRouter(d, c)) } if d.HasExperimental() { for _, r := range routers { for _, route := range r.Routes() { if experimental, ok := route.(router.ExperimentalRoute); ok { experimental.Enable() } } } } s.InitRouter(debug.IsEnabled(), routers...) }
// NewRouter initializes a new build router func NewRouter(d *daemon.Daemon, b Backend) router.Router { r := &swarmRouter{ backend: b, } r.initRoutes() if d.HasExperimental() { r.addExperimentalRoutes() } return r }
func addExperimentalRouters(routers []router.Router, d *daemon.Daemon, decoder httputils.ContainerDecoder) []router.Router { if !d.HasExperimental() { return []router.Router{} } return append(routers, checkpointrouter.NewRouter(d, decoder)) }