container.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package container
  2. import (
  3. "github.com/docker/docker/api/server/router"
  4. "github.com/docker/docker/api/server/router/local"
  5. )
  6. // containerRouter is a router to talk with the container controller
  7. type containerRouter struct {
  8. backend Backend
  9. routes []router.Route
  10. }
  11. // NewRouter initializes a new container router
  12. func NewRouter(b Backend) router.Router {
  13. r := &containerRouter{
  14. backend: b,
  15. }
  16. r.initRoutes()
  17. return r
  18. }
  19. // Routes returns the available routers to the container controller
  20. func (r *containerRouter) Routes() []router.Route {
  21. return r.routes
  22. }
  23. // initRoutes initializes the routes in container router
  24. func (r *containerRouter) initRoutes() {
  25. r.routes = []router.Route{
  26. // HEAD
  27. local.NewHeadRoute("/containers/{name:.*}/archive", r.headContainersArchive),
  28. // GET
  29. local.NewGetRoute("/containers/json", r.getContainersJSON),
  30. local.NewGetRoute("/containers/{name:.*}/export", r.getContainersExport),
  31. local.NewGetRoute("/containers/{name:.*}/changes", r.getContainersChanges),
  32. local.NewGetRoute("/containers/{name:.*}/json", r.getContainersByName),
  33. local.NewGetRoute("/containers/{name:.*}/top", r.getContainersTop),
  34. local.NewGetRoute("/containers/{name:.*}/logs", r.getContainersLogs),
  35. local.NewGetRoute("/containers/{name:.*}/stats", r.getContainersStats),
  36. local.NewGetRoute("/containers/{name:.*}/attach/ws", r.wsContainersAttach),
  37. local.NewGetRoute("/exec/{id:.*}/json", r.getExecByID),
  38. local.NewGetRoute("/containers/{name:.*}/archive", r.getContainersArchive),
  39. // POST
  40. local.NewPostRoute("/containers/create", r.postContainersCreate),
  41. local.NewPostRoute("/containers/{name:.*}/kill", r.postContainersKill),
  42. local.NewPostRoute("/containers/{name:.*}/pause", r.postContainersPause),
  43. local.NewPostRoute("/containers/{name:.*}/unpause", r.postContainersUnpause),
  44. local.NewPostRoute("/containers/{name:.*}/restart", r.postContainersRestart),
  45. local.NewPostRoute("/containers/{name:.*}/start", r.postContainersStart),
  46. local.NewPostRoute("/containers/{name:.*}/stop", r.postContainersStop),
  47. local.NewPostRoute("/containers/{name:.*}/wait", r.postContainersWait),
  48. local.NewPostRoute("/containers/{name:.*}/resize", r.postContainersResize),
  49. local.NewPostRoute("/containers/{name:.*}/attach", r.postContainersAttach),
  50. local.NewPostRoute("/containers/{name:.*}/copy", r.postContainersCopy),
  51. local.NewPostRoute("/containers/{name:.*}/exec", r.postContainerExecCreate),
  52. local.NewPostRoute("/exec/{name:.*}/start", r.postContainerExecStart),
  53. local.NewPostRoute("/exec/{name:.*}/resize", r.postContainerExecResize),
  54. local.NewPostRoute("/containers/{name:.*}/rename", r.postContainerRename),
  55. local.NewPostRoute("/containers/{name:.*}/update", r.postContainerUpdate),
  56. // PUT
  57. local.NewPutRoute("/containers/{name:.*}/archive", r.putContainersArchive),
  58. // DELETE
  59. local.NewDeleteRoute("/containers/{name:.*}", r.deleteContainers),
  60. }
  61. }