cluster.go 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package swarm
  2. import (
  3. "github.com/docker/docker/api/server/router"
  4. "github.com/docker/docker/daemon"
  5. )
  6. // swarmRouter is a router to talk with the build controller
  7. type swarmRouter struct {
  8. backend Backend
  9. routes []router.Route
  10. }
  11. // NewRouter initializes a new build router
  12. func NewRouter(d *daemon.Daemon, b Backend) router.Router {
  13. r := &swarmRouter{
  14. backend: b,
  15. }
  16. r.initRoutes()
  17. if d.HasExperimental() {
  18. r.addExperimentalRoutes()
  19. }
  20. return r
  21. }
  22. // Routes returns the available routers to the swarm controller
  23. func (sr *swarmRouter) Routes() []router.Route {
  24. return sr.routes
  25. }
  26. func (sr *swarmRouter) addExperimentalRoutes() {
  27. sr.routes = append(sr.routes,
  28. router.Cancellable(router.NewGetRoute("/services/{id}/logs", sr.getServiceLogs)),
  29. )
  30. }
  31. func (sr *swarmRouter) initRoutes() {
  32. sr.routes = []router.Route{
  33. router.NewPostRoute("/swarm/init", sr.initCluster),
  34. router.NewPostRoute("/swarm/join", sr.joinCluster),
  35. router.NewPostRoute("/swarm/leave", sr.leaveCluster),
  36. router.NewGetRoute("/swarm", sr.inspectCluster),
  37. router.NewGetRoute("/swarm/unlockkey", sr.getUnlockKey),
  38. router.NewPostRoute("/swarm/update", sr.updateCluster),
  39. router.NewPostRoute("/swarm/unlock", sr.unlockCluster),
  40. router.NewGetRoute("/services", sr.getServices),
  41. router.NewGetRoute("/services/{id}", sr.getService),
  42. router.NewPostRoute("/services/create", sr.createService),
  43. router.NewPostRoute("/services/{id}/update", sr.updateService),
  44. router.NewDeleteRoute("/services/{id}", sr.removeService),
  45. router.NewGetRoute("/nodes", sr.getNodes),
  46. router.NewGetRoute("/nodes/{id}", sr.getNode),
  47. router.NewDeleteRoute("/nodes/{id}", sr.removeNode),
  48. router.NewPostRoute("/nodes/{id}/update", sr.updateNode),
  49. router.NewGetRoute("/tasks", sr.getTasks),
  50. router.NewGetRoute("/tasks/{id}", sr.getTask),
  51. router.NewGetRoute("/secrets", sr.getSecrets),
  52. router.NewPostRoute("/secrets", sr.createSecret),
  53. router.NewDeleteRoute("/secrets/{id}", sr.removeSecret),
  54. router.NewGetRoute("/secrets/{id}", sr.getSecret),
  55. router.NewPostRoute("/secrets/{id}/update", sr.updateSecret),
  56. }
  57. }