dashboard_snapshot.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package api
  2. import (
  3. "github.com/grafana/grafana/pkg/api/dtos"
  4. "github.com/grafana/grafana/pkg/bus"
  5. "github.com/grafana/grafana/pkg/metrics"
  6. "github.com/grafana/grafana/pkg/middleware"
  7. m "github.com/grafana/grafana/pkg/models"
  8. "github.com/grafana/grafana/pkg/util"
  9. )
  10. func CreateDashboardSnapshot(c *middleware.Context, cmd m.CreateDashboardSnapshotCommand) {
  11. cmd.Key = util.GetRandomString(32)
  12. if err := bus.Dispatch(&cmd); err != nil {
  13. c.JsonApiErr(500, "Failed to create snaphost", err)
  14. return
  15. }
  16. metrics.M_Api_Dashboard_Snapshot_Create.Inc(1)
  17. c.JSON(200, util.DynMap{"key": cmd.Key})
  18. }
  19. func GetDashboardSnapshot(c *middleware.Context) {
  20. key := c.Params(":key")
  21. query := &m.GetDashboardSnapshotQuery{Key: key}
  22. err := bus.Dispatch(query)
  23. if err != nil {
  24. c.JsonApiErr(500, "Failed to get dashboard snapshot", err)
  25. return
  26. }
  27. dto := dtos.Dashboard{
  28. Model: query.Result.Dashboard,
  29. Meta: dtos.DashboardMeta{IsSnapshot: true},
  30. }
  31. metrics.M_Api_Dashboard_Snapshot_Get.Inc(1)
  32. c.Resp.Header().Set("Cache-Control", "public, max-age=31536000")
  33. c.JSON(200, dto)
  34. }