checkpoint_routes.go 1.6 KB

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