cmd/stateth: add flag for dashboards folder. extract json from binary into json file

This commit is contained in:
Anton Evangelatov 2018-05-29 15:40:38 +03:00
parent 9e55d310ed
commit a6ef68fa78
2 changed files with 39 additions and 15 deletions

View file

@ -1,7 +1,3 @@
package main
var (
jsonDashboard = `
{ {
"annotations": { "annotations": {
"list": [ "list": [
@ -231,5 +227,5 @@ var (
"uid": "dUpKvj7mz", "uid": "dUpKvj7mz",
"version": 7 "version": 7
} }
`
)

View file

@ -20,6 +20,7 @@ package main
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"io/ioutil"
"os" "os"
"os/exec" "os/exec"
"os/signal" "os/signal"
@ -33,9 +34,10 @@ import (
) )
var ( var (
dockerPrefix string // unique prefix used for the created docker resources dockerPrefix string // unique prefix used for the created docker resources
grafanaPort int // expose port for the Grafana HTTP interface dashboardsFolder string // folder containing all dashboards to be imported in Grafana
influxdbPort int // expose port for the InfluxDB HTTP interface grafanaPort int // expose port for the Grafana HTTP interface
influxdbPort int // expose port for the InfluxDB HTTP interface
) )
const ( const (
@ -66,6 +68,11 @@ func main() {
Value: 3000, Value: 3000,
Usage: "default grafana http port", Usage: "default grafana http port",
}, },
cli.StringFlag{
Name: "grafana-dashboards-folder",
Value: os.Getenv("GOPATH") + "/src/github.com/ethereum/go-ethereum/cmd/stateth/grafana_dashboards",
Usage: "default grafana dashboards folder",
},
cli.StringFlag{ cli.StringFlag{
Name: "docker-prefix", Name: "docker-prefix",
Value: "stateth", Value: "stateth",
@ -78,6 +85,7 @@ func main() {
dockerPrefix = c.String("docker-prefix") dockerPrefix = c.String("docker-prefix")
grafanaPort = c.Int("grafana-http-port") grafanaPort = c.Int("grafana-http-port")
influxdbPort = c.Int("influxdb-http-port") influxdbPort = c.Int("influxdb-http-port")
dashboardsFolder = c.String("grafana-dashboards-folder")
if err := runNetwork(c); err != nil { if err := runNetwork(c); err != nil {
return err return err
@ -93,7 +101,7 @@ func main() {
if err := importGrafanaDatasource(c); err != nil { if err := importGrafanaDatasource(c); err != nil {
return err return err
} }
if err := importGrafanaDashboard(c); err != nil { if err := importGrafanaDashboards(c); err != nil {
return err return err
} }
@ -224,7 +232,7 @@ func importGrafanaDatasource(c *cli.Context) error {
return nil return nil
} }
func importGrafanaDashboard(c *cli.Context) error { func importGrafanaDashboards(c *cli.Context) error {
log.Info("importing grafana dashboards") log.Info("importing grafana dashboards")
gclient, err := gapi.New(fmt.Sprintf("%s:%s", grafanaUser, grafanaPass), fmt.Sprintf("http://localhost:%d", grafanaPort)) gclient, err := gapi.New(fmt.Sprintf("%s:%s", grafanaUser, grafanaPass), fmt.Sprintf("http://localhost:%d", grafanaPort))
if err != nil { if err != nil {
@ -232,12 +240,32 @@ func importGrafanaDashboard(c *cli.Context) error {
return nil return nil
} }
model := prepareDashboardModel(jsonDashboard) files, err := ioutil.ReadDir(dashboardsFolder)
_, err = gclient.SaveDashboard(model, false)
if err != nil { if err != nil {
log.Warn(err.Error()) log.Warn(err.Error())
return err return nil
}
for _, f := range files {
name := f.Name()
if strings.Contains(name, "json") {
log.Info("importing dashboard", "dashboard", name)
blob, err := ioutil.ReadFile(dashboardsFolder + "/" + name)
if err != nil {
log.Warn(err.Error())
return nil
}
model := prepareDashboardModel(string(blob))
_, err = gclient.SaveDashboard(model, false)
if err != nil {
log.Warn(err.Error())
return nil
}
}
} }
return nil return nil