network.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package network
  2. import (
  3. "github.com/docker/docker/api/server/router"
  4. "github.com/docker/docker/daemon/cluster"
  5. )
  6. // networkRouter is a router to talk with the network controller
  7. type networkRouter struct {
  8. backend Backend
  9. clusterProvider *cluster.Cluster
  10. routes []router.Route
  11. }
  12. // NewRouter initializes a new network router
  13. func NewRouter(b Backend, c *cluster.Cluster) router.Router {
  14. r := &networkRouter{
  15. backend: b,
  16. clusterProvider: c,
  17. }
  18. r.initRoutes()
  19. return r
  20. }
  21. // Routes returns the available routes to the network controller
  22. func (r *networkRouter) Routes() []router.Route {
  23. return r.routes
  24. }
  25. func (r *networkRouter) initRoutes() {
  26. r.routes = []router.Route{
  27. // GET
  28. router.NewGetRoute("/networks", r.getNetworksList),
  29. router.NewGetRoute("/networks/{id:.*}", r.getNetwork),
  30. // POST
  31. router.NewPostRoute("/networks/create", r.postNetworkCreate),
  32. router.NewPostRoute("/networks/{id:.*}/connect", r.postNetworkConnect),
  33. router.NewPostRoute("/networks/{id:.*}/disconnect", r.postNetworkDisconnect),
  34. // DELETE
  35. router.NewDeleteRoute("/networks/{id:.*}", r.deleteNetwork),
  36. }
  37. }