diff --git a/grafana-watcher/main.go b/grafana-watcher/main.go index 340967058d128f40eec82ff1b8456d585e08e3fe..ede90e83d66c80238cea0327036ffb73b8b96117 100644 --- a/grafana-watcher/main.go +++ b/grafana-watcher/main.go @@ -5,6 +5,7 @@ import ( "log" "os" "path/filepath" + "time" fsnotify "gopkg.in/fsnotify.v1" @@ -85,9 +86,32 @@ func main() { } g := grafana.New(*grafanaUrl) - du := updater.NewGrafanaDashboardUpdater(g.Dashboards(), filepath.Join(*watchDir, "*-dashboard.json")) + + for { + log.Println("Waiting for Grafana to be available.") + _, err := g.Datasources().All() + if err == nil { + break + } + time.Sleep(time.Second) + } + su := updater.NewGrafanaDatasourceUpdater(g.Datasources(), filepath.Join(*watchDir, "*-datasource.json")) + log.Println("Initializing datasources.") + err := su.Init() + if err != nil { + log.Fatal(err) + } + + du := updater.NewGrafanaDashboardUpdater(g.Dashboards(), filepath.Join(*watchDir, "*-dashboard.json")) + log.Println("Initializing dashboards.") + err = du.Init() + if err != nil { + log.Fatal(err) + } + w := newVolumeWatcher(*watchDir) + w.AddEventHandler(du) w.AddEventHandler(su) diff --git a/grafana-watcher/updater/dashboard.go b/grafana-watcher/updater/dashboard.go index 4094a1b0be520051a3f898d7ece5eba160bd80bc..754a9490a0273e7b171c450c7303bc7e1a46bfb3 100644 --- a/grafana-watcher/updater/dashboard.go +++ b/grafana-watcher/updater/dashboard.go @@ -9,6 +9,7 @@ import ( ) type Updater interface { + Init() error OnModify() error } @@ -24,7 +25,15 @@ func NewGrafanaDashboardUpdater(c grafana.DashboardsInterface, g string) Updater } } +func (u *GrafanaDashboardUpdater) Init() error { + return u.updateDashboards() +} + func (u *GrafanaDashboardUpdater) OnModify() error { + return u.updateDashboards() +} + +func (u *GrafanaDashboardUpdater) updateDashboards() error { err := u.deleteAllDashboards() if err != nil { return err diff --git a/grafana-watcher/updater/datasource.go b/grafana-watcher/updater/datasource.go index ad96852c81559fdf127bb4501938d8c198ea6ecc..77c502825d52723561b73b87feb3e90b01305ca0 100644 --- a/grafana-watcher/updater/datasource.go +++ b/grafana-watcher/updater/datasource.go @@ -20,7 +20,15 @@ func NewGrafanaDatasourceUpdater(c grafana.DatasourcesInterface, g string) Updat } } +func (u *GrafanaDatasourceUpdater) Init() error { + return u.updateDatasources() +} + func (u *GrafanaDatasourceUpdater) OnModify() error { + return u.updateDatasources() +} + +func (u *GrafanaDatasourceUpdater) updateDatasources() error { err := u.deleteAllDatasources() if err != nil { return err