dashboard_installer.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package plugins
  2. import (
  3. "github.com/grafana/grafana/pkg/bus"
  4. m "github.com/grafana/grafana/pkg/models"
  5. )
  6. type InstallPluginDashboardCommand struct {
  7. Path string `json:"string"`
  8. Inputs map[string]interface{} `json:"inputs"`
  9. OrgId int64 `json:"-"`
  10. UserId int64 `json:"-"`
  11. PluginId string `json:"-"`
  12. Result *PluginDashboardInfoDTO
  13. }
  14. func init() {
  15. bus.AddHandler("plugins", InstallPluginDashboard)
  16. }
  17. func InstallPluginDashboard(cmd *InstallPluginDashboardCommand) error {
  18. plugin, exists := Plugins[cmd.PluginId]
  19. if !exists {
  20. return PluginNotFoundError{cmd.PluginId}
  21. }
  22. var dashboard *m.Dashboard
  23. var err error
  24. if dashboard, err = loadPluginDashboard(plugin, cmd.Path); err != nil {
  25. return err
  26. }
  27. saveCmd := m.SaveDashboardCommand{
  28. Dashboard: dashboard.Data,
  29. OrgId: cmd.OrgId,
  30. UserId: cmd.UserId,
  31. }
  32. if err := bus.Dispatch(&saveCmd); err != nil {
  33. return err
  34. }
  35. cmd.Result = &PluginDashboardInfoDTO{
  36. PluginId: cmd.PluginId,
  37. Title: dashboard.Title,
  38. Path: cmd.Path,
  39. Revision: dashboard.GetString("revision", "1.0"),
  40. InstalledUri: "db/" + saveCmd.Result.Slug,
  41. InstalledRevision: dashboard.GetString("revision", "1.0"),
  42. Installed: true,
  43. }
  44. return nil
  45. }