Commit 0a9bfc55 by bergquist

delete provisioning meta data when deleting folder

prior to this fix Grafana didnt delete meta data
about the provisioned dashboard in `dashboard_provisioning`
which means that the dashboard wasn't inserted into
Grafana again if the folder was delete within Grafana.

closes #13280
parent edba0880
...@@ -320,13 +320,18 @@ func DeleteDashboard(cmd *m.DeleteDashboardCommand) error { ...@@ -320,13 +320,18 @@ func DeleteDashboard(cmd *m.DeleteDashboardCommand) error {
"DELETE FROM dashboard WHERE id = ?", "DELETE FROM dashboard WHERE id = ?",
"DELETE FROM playlist_item WHERE type = 'dashboard_by_id' AND value = ?", "DELETE FROM playlist_item WHERE type = 'dashboard_by_id' AND value = ?",
"DELETE FROM dashboard_version WHERE dashboard_id = ?", "DELETE FROM dashboard_version WHERE dashboard_id = ?",
"DELETE FROM dashboard WHERE folder_id = ?",
"DELETE FROM annotation WHERE dashboard_id = ?", "DELETE FROM annotation WHERE dashboard_id = ?",
"DELETE FROM dashboard_provisioning WHERE dashboard_id = ?", "DELETE FROM dashboard_provisioning WHERE dashboard_id = ?",
} }
if dashboard.IsFolder {
deletes = append(deletes, "DELETE FROM dashboard_provisioning WHERE dashboard_id in (select id from dashboard where folder_id = ?)")
deletes = append(deletes, "DELETE FROM dashboard WHERE folder_id = ?")
}
for _, sql := range deletes { for _, sql := range deletes {
_, err := sess.Exec(sql, dashboard.Id) _, err := sess.Exec(sql, dashboard.Id)
if err != nil { if err != nil {
return err return err
} }
......
...@@ -13,17 +13,30 @@ func TestDashboardProvisioningTest(t *testing.T) { ...@@ -13,17 +13,30 @@ func TestDashboardProvisioningTest(t *testing.T) {
Convey("Testing Dashboard provisioning", t, func() { Convey("Testing Dashboard provisioning", t, func() {
InitTestDB(t) InitTestDB(t)
saveDashboardCmd := &models.SaveDashboardCommand{ folderCmd := &models.SaveDashboardCommand{
OrgId: 1, OrgId: 1,
FolderId: 0, FolderId: 0,
IsFolder: true,
Dashboard: simplejson.NewFromAny(map[string]interface{}{
"id": nil,
"title": "test dashboard",
}),
}
err := SaveDashboard(folderCmd)
So(err, ShouldBeNil)
saveDashboardCmd := &models.SaveDashboardCommand{
OrgId: 1,
IsFolder: false, IsFolder: false,
FolderId: folderCmd.Result.Id,
Dashboard: simplejson.NewFromAny(map[string]interface{}{ Dashboard: simplejson.NewFromAny(map[string]interface{}{
"id": nil, "id": nil,
"title": "test dashboard", "title": "test dashboard",
}), }),
} }
Convey("Saving dashboards with extras", func() { Convey("Saving dashboards with provisioning meta data", func() {
now := time.Now() now := time.Now()
cmd := &models.SaveProvisionedDashboardCommand{ cmd := &models.SaveProvisionedDashboardCommand{
...@@ -67,6 +80,21 @@ func TestDashboardProvisioningTest(t *testing.T) { ...@@ -67,6 +80,21 @@ func TestDashboardProvisioningTest(t *testing.T) {
So(err, ShouldBeNil) So(err, ShouldBeNil)
So(query.Result, ShouldBeFalse) So(query.Result, ShouldBeFalse)
}) })
Convey("Deleteing folder should delete provision meta data", func() {
deleteCmd := &models.DeleteDashboardCommand{
Id: folderCmd.Result.Id,
OrgId: 1,
}
So(DeleteDashboard(deleteCmd), ShouldBeNil)
query := &models.IsDashboardProvisionedQuery{DashboardId: cmd.Result.Id}
err = GetProvisionedDataByDashboardId(query)
So(err, ShouldBeNil)
So(query.Result, ShouldBeFalse)
})
}) })
}) })
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment