-
Notifications
You must be signed in to change notification settings - Fork 7
/
dashboards.go
53 lines (44 loc) · 1.35 KB
/
dashboards.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package app
import (
"github.com/aws-observability/amazon-managed-grafana-migrator/internal/pkg/log"
gapi "github.com/grafana/grafana-api-golang-client"
)
func (a *App) migrateDashboards(destFolders *[]gapi.Folder) (int, error) {
log.Info()
log.Info("Migrating dashboards:")
searchDx, err := a.Src.Dashboards()
log.Debugf(a.Verbose, "Found %d dashboards in src\n", len(searchDx))
if err != nil {
return 0, err
}
migratedDashboards := 0
for _, searchD := range searchDx {
log.InfoLightf("Dashboard: %s\n", searchD.URL)
if d, err := a.Src.DashboardByUID(searchD.UID); err == nil {
folderID := searchFolderID(destFolders, searchD.FolderTitle)
log.Debugf(a.Verbose,
"searching Folder ID [src folder ID/UID/Title] [%d/%s/%s] for dashboard in dst grafana: %d\n",
searchD.FolderID, searchD.UID, searchD.FolderTitle, folderID)
newModel := d.Model
newModel["id"] = nil
newDashboard := gapi.Dashboard{
Meta: gapi.DashboardMeta{
IsStarred: d.Meta.IsStarred,
Slug: d.Meta.Slug,
Folder: folderID,
},
Model: newModel,
FolderID: folderID,
Overwrite: d.Overwrite,
}
if _, err := a.Dst.NewDashboard(newDashboard); err != nil {
log.Errorf("\terror: %s\n", err)
} else {
migratedDashboards++
}
} else {
log.Errorf("\terror: %s\n", err)
}
}
return migratedDashboards, nil
}