|
@@ -6,6 +6,7 @@ import (
|
6
|
6
|
"io/ioutil"
|
7
|
7
|
"os"
|
8
|
8
|
|
|
9
|
+ "config"
|
9
|
10
|
"git"
|
10
|
11
|
"grafana"
|
11
|
12
|
|
|
@@ -21,12 +22,9 @@ type diffVersion struct {
|
21
|
22
|
// PullGrafanaAndCommit pulls all the dashboards from Grafana then commits each
|
22
|
23
|
// of them to Git except for those that have a newer or equal version number
|
23
|
24
|
// already versionned in the repo
|
24
|
|
-func PullGrafanaAndCommit(
|
25
|
|
- client *grafana.Client,
|
26
|
|
- repoURL string, clonePath string, privateKeyPath string,
|
27
|
|
-) error {
|
|
25
|
+func PullGrafanaAndCommit(client *grafana.Client, cfg *config.Config) error {
|
28
|
26
|
// Clone or pull the repo
|
29
|
|
- repo, err := git.Sync(repoURL, clonePath, privateKeyPath)
|
|
27
|
+ repo, err := git.Sync(cfg.Git.URL, cfg.Git.ClonePath, cfg.Git.PrivateKeyPath)
|
30
|
28
|
if err != nil {
|
31
|
29
|
return err
|
32
|
30
|
}
|
|
@@ -45,7 +43,7 @@ func PullGrafanaAndCommit(
|
45
|
43
|
dv := make(map[string]diffVersion)
|
46
|
44
|
|
47
|
45
|
// Load versions
|
48
|
|
- dbVersions, err := getDashboardsVersions()
|
|
46
|
+ dbVersions, err := getDashboardsVersions(cfg.Git.ClonePath)
|
49
|
47
|
if err != nil {
|
50
|
48
|
return err
|
51
|
49
|
}
|
|
@@ -65,7 +63,9 @@ func PullGrafanaAndCommit(
|
65
|
63
|
// changes in the repo and add the modified file to the git index.
|
66
|
64
|
version, ok := dbVersions[dashboard.Slug]
|
67
|
65
|
if !ok || dashboard.Version > version {
|
68
|
|
- if err = addDashboardChangesToRepo(dashboard, w); err != nil {
|
|
66
|
+ if err = addDashboardChangesToRepo(
|
|
67
|
+ dashboard, cfg.Git.ClonePath, w,
|
|
68
|
+ ); err != nil {
|
69
|
69
|
return err
|
70
|
70
|
}
|
71
|
71
|
|
|
@@ -87,14 +87,16 @@ func PullGrafanaAndCommit(
|
87
|
87
|
|
88
|
88
|
// Check if there's uncommited changes, and if that's the case, commit them.
|
89
|
89
|
if !status.IsClean() {
|
90
|
|
- if err = commitNewVersions(dbVersions, dv, w); err != nil {
|
|
90
|
+ if err = commitNewVersions(
|
|
91
|
+ dbVersions, dv, w, cfg.Git.ClonePath,
|
|
92
|
+ ); err != nil {
|
91
|
93
|
return err
|
92
|
94
|
}
|
93
|
95
|
}
|
94
|
96
|
|
95
|
97
|
// Push the changes (we don't do it in the if clause above in case there are
|
96
|
98
|
// pending commits in the local repo that haven't been pushed yet).
|
97
|
|
- if err = git.Push(repo, privateKeyPath); err != nil {
|
|
99
|
+ if err = git.Push(repo, cfg.Git.PrivateKeyPath); err != nil {
|
98
|
100
|
return err
|
99
|
101
|
}
|
100
|
102
|
|
|
@@ -105,13 +107,10 @@ func PullGrafanaAndCommit(
|
105
|
107
|
// file to the git index so it can be comitted afterwards.
|
106
|
108
|
// Returns an error if there was an issue with either of the steps.
|
107
|
109
|
func addDashboardChangesToRepo(
|
108
|
|
- dashboard *grafana.Dashboard, worktree *gogit.Worktree,
|
|
110
|
+ dashboard *grafana.Dashboard, clonePath string, worktree *gogit.Worktree,
|
109
|
111
|
) error {
|
110
|
112
|
slugExt := dashboard.Slug + ".json"
|
111
|
|
- if err := rewriteFile(
|
112
|
|
- *clonePath+"/"+slugExt,
|
113
|
|
- dashboard.RawJSON,
|
114
|
|
- ); err != nil {
|
|
113
|
+ if err := rewriteFile(clonePath+"/"+slugExt, dashboard.RawJSON); err != nil {
|
115
|
114
|
return err
|
116
|
115
|
}
|
117
|
116
|
|