checkpoint_routes.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. // +build experimental
  2. package checkpoint
  3. import (
  4. "encoding/json"
  5. "net/http"
  6. "github.com/docker/docker/api/server/httputils"
  7. "github.com/docker/docker/api/types"
  8. "golang.org/x/net/context"
  9. )
  10. func (s *checkpointRouter) postContainerCheckpoint(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
  11. if err := httputils.ParseForm(r); err != nil {
  12. return err
  13. }
  14. var options types.CheckpointCreateOptions
  15. decoder := json.NewDecoder(r.Body)
  16. if err := decoder.Decode(&options); err != nil {
  17. return err
  18. }
  19. err := s.backend.CheckpointCreate(vars["name"], options)
  20. if err != nil {
  21. return err
  22. }
  23. w.WriteHeader(http.StatusNoContent)
  24. return nil
  25. }
  26. func (s *checkpointRouter) getContainerCheckpoints(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
  27. if err := httputils.ParseForm(r); err != nil {
  28. return err
  29. }
  30. checkpoints, err := s.backend.CheckpointList(vars["name"])
  31. if err != nil {
  32. return err
  33. }
  34. return httputils.WriteJSON(w, http.StatusOK, checkpoints)
  35. }
  36. func (s *checkpointRouter) deleteContainerCheckpoint(ctx context.Context, w http.ResponseWriter, r *http.Request, vars map[string]string) error {
  37. if err := httputils.ParseForm(r); err != nil {
  38. return err
  39. }
  40. err := s.backend.CheckpointDelete(vars["name"], vars["checkpoint"])
  41. if err != nil {
  42. return err
  43. }
  44. w.WriteHeader(http.StatusNoContent)
  45. return nil
  46. }