|
|
|
|
@ -60,43 +60,58 @@ func NewStaticDashboardSummaryBuilder(lookup DatasourceLookup, sanitize bool) en |
|
|
|
|
summary.Fields["schemaVersion"] = fmt.Sprint(dash.SchemaVersion) |
|
|
|
|
|
|
|
|
|
for _, panel := range dash.Panels { |
|
|
|
|
panelRefs := NewReferenceAccumulator() |
|
|
|
|
p := &entity.EntitySummary{ |
|
|
|
|
UID: uid + "#" + strconv.FormatInt(panel.ID, 10), |
|
|
|
|
Kind: "panel", |
|
|
|
|
} |
|
|
|
|
p.Name = panel.Title |
|
|
|
|
p.Description = panel.Description |
|
|
|
|
p.Fields = make(map[string]string, 0) |
|
|
|
|
p.Fields["type"] = panel.Type |
|
|
|
|
|
|
|
|
|
if panel.Type != "row" { |
|
|
|
|
panelRefs.Add(entity.ExternalEntityReferencePlugin, string(plugins.TypePanel), panel.Type) |
|
|
|
|
dashboardRefs.Add(entity.ExternalEntityReferencePlugin, string(plugins.TypePanel), panel.Type) |
|
|
|
|
} |
|
|
|
|
if panel.LibraryPanel != "" { |
|
|
|
|
panelRefs.Add(entity.StandardKindLibraryPanel, panel.Type, panel.LibraryPanel) |
|
|
|
|
dashboardRefs.Add(entity.StandardKindLibraryPanel, panel.Type, panel.LibraryPanel) |
|
|
|
|
} |
|
|
|
|
for _, v := range panel.Datasource { |
|
|
|
|
dashboardRefs.Add(entity.StandardKindDataSource, v.Type, v.UID) |
|
|
|
|
panelRefs.Add(entity.StandardKindDataSource, v.Type, v.UID) |
|
|
|
|
if v.Type != "" { |
|
|
|
|
dashboardRefs.Add(entity.ExternalEntityReferencePlugin, string(plugins.TypeDataSource), v.Type) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for _, v := range panel.Transformer { |
|
|
|
|
panelRefs.Add(entity.ExternalEntityReferenceRuntime, entity.ExternalEntityReferenceRuntime_Transformer, v) |
|
|
|
|
dashboardRefs.Add(entity.ExternalEntityReferenceRuntime, entity.ExternalEntityReferenceRuntime_Transformer, v) |
|
|
|
|
} |
|
|
|
|
p.References = panelRefs.Get() |
|
|
|
|
summary.Nested = append(summary.Nested, p) |
|
|
|
|
s := panelSummary(panel, uid, dashboardRefs) |
|
|
|
|
summary.Nested = append(summary.Nested, s...) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
summary.References = dashboardRefs.Get() |
|
|
|
|
if sanitize { |
|
|
|
|
body, err = json.MarshalIndent(parsed, "", " ") |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return summary, body, err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// panelSummary take panel info and returns entity summaries for the given panel and all its collapsed panels.
|
|
|
|
|
func panelSummary(panel panelInfo, uid string, dashboardRefs ReferenceAccumulator) []*entity.EntitySummary { |
|
|
|
|
panels := []*entity.EntitySummary{} |
|
|
|
|
|
|
|
|
|
panelRefs := NewReferenceAccumulator() |
|
|
|
|
p := &entity.EntitySummary{ |
|
|
|
|
UID: uid + "#" + strconv.FormatInt(panel.ID, 10), |
|
|
|
|
Kind: "panel", |
|
|
|
|
} |
|
|
|
|
p.Name = panel.Title |
|
|
|
|
p.Description = panel.Description |
|
|
|
|
p.Fields = make(map[string]string, 0) |
|
|
|
|
p.Fields["type"] = panel.Type |
|
|
|
|
|
|
|
|
|
if panel.Type != "row" { |
|
|
|
|
panelRefs.Add(entity.ExternalEntityReferencePlugin, string(plugins.TypePanel), panel.Type) |
|
|
|
|
dashboardRefs.Add(entity.ExternalEntityReferencePlugin, string(plugins.TypePanel), panel.Type) |
|
|
|
|
} |
|
|
|
|
if panel.LibraryPanel != "" { |
|
|
|
|
panelRefs.Add(entity.StandardKindLibraryPanel, panel.Type, panel.LibraryPanel) |
|
|
|
|
dashboardRefs.Add(entity.StandardKindLibraryPanel, panel.Type, panel.LibraryPanel) |
|
|
|
|
} |
|
|
|
|
for _, v := range panel.Datasource { |
|
|
|
|
dashboardRefs.Add(entity.StandardKindDataSource, v.Type, v.UID) |
|
|
|
|
panelRefs.Add(entity.StandardKindDataSource, v.Type, v.UID) |
|
|
|
|
if v.Type != "" { |
|
|
|
|
dashboardRefs.Add(entity.ExternalEntityReferencePlugin, string(plugins.TypeDataSource), v.Type) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
for _, v := range panel.Transformer { |
|
|
|
|
panelRefs.Add(entity.ExternalEntityReferenceRuntime, entity.ExternalEntityReferenceRuntime_Transformer, v) |
|
|
|
|
dashboardRefs.Add(entity.ExternalEntityReferenceRuntime, entity.ExternalEntityReferenceRuntime_Transformer, v) |
|
|
|
|
} |
|
|
|
|
p.References = panelRefs.Get() |
|
|
|
|
panels = append(panels, p) |
|
|
|
|
|
|
|
|
|
for _, c := range panel.Collapsed { |
|
|
|
|
collapsed := panelSummary(c, uid, dashboardRefs) |
|
|
|
|
panels = append(panels, collapsed...) |
|
|
|
|
} |
|
|
|
|
return panels |
|
|
|
|
} |
|
|
|
|
|