network.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package network
  2. import (
  3. "net/http"
  4. "github.com/docker/docker/api/server/httputils"
  5. "github.com/docker/docker/api/server/router"
  6. "github.com/docker/docker/api/server/router/local"
  7. "github.com/docker/docker/errors"
  8. "golang.org/x/net/context"
  9. )
  10. // networkRouter is a router to talk with the network controller
  11. type networkRouter struct {
  12. backend Backend
  13. routes []router.Route
  14. }
  15. // NewRouter initializes a new network router
  16. func NewRouter(b Backend) router.Router {
  17. r := &networkRouter{
  18. backend: b,
  19. }
  20. r.initRoutes()
  21. return r
  22. }
  23. // Routes returns the available routes to the network controller
  24. func (r *networkRouter) Routes() []router.Route {
  25. return r.routes
  26. }
  27. func (r *networkRouter) initRoutes() {
  28. r.routes = []router.Route{
  29. // GET
  30. local.NewGetRoute("/networks", r.controllerEnabledMiddleware(r.getNetworksList)),
  31. local.NewGetRoute("/networks/{id:.*}", r.controllerEnabledMiddleware(r.getNetwork)),
  32. // POST
  33. local.NewPostRoute("/networks/create", r.controllerEnabledMiddleware(r.postNetworkCreate)),
  34. local.NewPostRoute("/networks/{id:.*}/connect", r.controllerEnabledMiddleware(r.postNetworkConnect)),
  35. local.NewPostRoute("/networks/{id:.*}/disconnect", r.controllerEnabledMiddleware(r.postNetworkDisconnect)),
  36. // DELETE
  37. local.NewDeleteRoute("/networks/{id:.*}", r.controllerEnabledMiddleware(r.deleteNetwork)),
  38. }
  39. }
  40. func (r *networkRouter) controllerEnabledMiddleware(handler httputils.APIFunc) httputils.APIFunc {
  41. if r.backend.NetworkControllerEnabled() {
  42. return handler
  43. }
  44. return networkControllerDisabled
  45. }
  46. func networkControllerDisabled(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
  47. return errors.ErrorNetworkControllerNotEnabled.WithArgs()
  48. }