Extractor should not modify dashboard json (#7256)

* test(dashboard): tests that he extractor does not modify original json

* feat(extractor): validate a cloned version of the dashboard json
This commit is contained in:
Carl Bergquist
2017-01-13 15:46:23 +01:00
committed by Torkel Ödegaard
parent 2d441bfb37
commit c43bb7fb99
2 changed files with 43 additions and 2 deletions

View File

@@ -60,12 +60,25 @@ func findPanelQueryByRefId(panel *simplejson.Json, refId string) *simplejson.Jso
return nil
}
func copyJson(in *simplejson.Json) (*simplejson.Json, error) {
rawJson, err := in.MarshalJSON()
if err != nil {
return nil, err
}
return simplejson.NewJson(rawJson)
}
func (e *DashAlertExtractor) GetAlerts() ([]*m.Alert, error) {
e.log.Debug("GetAlerts")
alerts := make([]*m.Alert, 0)
dashboardJson, err := copyJson(e.Dash.Data)
if err != nil {
return nil, err
}
for _, rowObj := range e.Dash.Data.Get("rows").MustArray() {
alerts := make([]*m.Alert, 0)
for _, rowObj := range dashboardJson.Get("rows").MustArray() {
row := simplejson.NewFromAny(rowObj)
for _, panelObj := range row.Get("panels").MustArray() {