mirror of https://github.com/grafana/grafana
feat(plugins): progress on dashboard installs , #4298
parent
60adcedebe
commit
2de439bd1e
@ -0,0 +1,56 @@ |
||||
package plugins |
||||
|
||||
import ( |
||||
"github.com/grafana/grafana/pkg/bus" |
||||
m "github.com/grafana/grafana/pkg/models" |
||||
) |
||||
|
||||
type InstallPluginDashboardCommand struct { |
||||
Path string `json:"string"` |
||||
Inputs map[string]interface{} `json:"inputs"` |
||||
|
||||
OrgId int64 `json:"-"` |
||||
UserId int64 `json:"-"` |
||||
PluginId string `json:"-"` |
||||
Result *PluginDashboardInfoDTO |
||||
} |
||||
|
||||
func init() { |
||||
bus.AddHandler("plugins", InstallPluginDashboard) |
||||
} |
||||
|
||||
func InstallPluginDashboard(cmd *InstallPluginDashboardCommand) error { |
||||
plugin, exists := Plugins[cmd.PluginId] |
||||
|
||||
if !exists { |
||||
return PluginNotFoundError{cmd.PluginId} |
||||
} |
||||
|
||||
var dashboard *m.Dashboard |
||||
var err error |
||||
|
||||
if dashboard, err = loadPluginDashboard(plugin, cmd.Path); err != nil { |
||||
return err |
||||
} |
||||
|
||||
saveCmd := m.SaveDashboardCommand{ |
||||
Dashboard: dashboard.Data, |
||||
OrgId: cmd.OrgId, |
||||
UserId: cmd.UserId, |
||||
} |
||||
|
||||
if err := bus.Dispatch(&saveCmd); err != nil { |
||||
return err |
||||
} |
||||
|
||||
cmd.Result = &PluginDashboardInfoDTO{ |
||||
PluginId: cmd.PluginId, |
||||
Title: dashboard.Title, |
||||
Path: cmd.Path, |
||||
Revision: dashboard.GetString("revision", "1.0"), |
||||
InstalledURI: "db/" + saveCmd.Result.Slug, |
||||
InstalledRevision: dashboard.GetString("revision", "1.0"), |
||||
} |
||||
|
||||
return nil |
||||
} |
||||
Loading…
Reference in new issue