|
|
@@ -0,0 +1,59 @@
|
|
|
+package cmd
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "github.com/codegangsta/cli"
|
|
|
+ "github.com/grafana/grafana/pkg/bus"
|
|
|
+ "github.com/grafana/grafana/pkg/log"
|
|
|
+ m "github.com/grafana/grafana/pkg/models"
|
|
|
+ "github.com/grafana/grafana/pkg/services/sqlstore"
|
|
|
+ "github.com/grafana/grafana/pkg/setting"
|
|
|
+ "os"
|
|
|
+ "text/tabwriter"
|
|
|
+)
|
|
|
+
|
|
|
+var ListDataSources = cli.Command{
|
|
|
+ Name: "datasource",
|
|
|
+ Usage: "list datasources",
|
|
|
+ Description: "Lists the datasources in the system",
|
|
|
+ Action: listDatasources,
|
|
|
+ Flags: []cli.Flag{
|
|
|
+ cli.StringFlag{
|
|
|
+ Name: "config",
|
|
|
+ Value: "grafana.ini",
|
|
|
+ Usage: "path to config file",
|
|
|
+ },
|
|
|
+ },
|
|
|
+}
|
|
|
+
|
|
|
+func listDatasources(c *cli.Context) {
|
|
|
+ setting.NewConfigContext()
|
|
|
+ sqlstore.NewEngine()
|
|
|
+ sqlstore.EnsureAdminUser()
|
|
|
+
|
|
|
+ if !c.Args().Present() {
|
|
|
+ log.ConsoleFatal("Account name arg is required")
|
|
|
+ }
|
|
|
+
|
|
|
+ name := c.Args().First()
|
|
|
+ accountQuery := m.GetAccountByNameQuery{Name: name}
|
|
|
+ if err := bus.Dispatch(&accountQuery); err != nil {
|
|
|
+ log.ConsoleFatalf("Failed to find account: %s", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ accountId := accountQuery.Result.Id
|
|
|
+
|
|
|
+ query := m.GetDataSourcesQuery{AccountId: accountId}
|
|
|
+ if err := bus.Dispatch(&query); err != nil {
|
|
|
+ log.ConsoleFatalf("Failed to find datasources: %s", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ w := tabwriter.NewWriter(os.Stdout, 20, 1, 4, ' ', 0)
|
|
|
+
|
|
|
+ fmt.Fprintf(w, "ID\tNAME\tURL\tTYPE\tACCESS\tDEFAULT\n")
|
|
|
+ for _, ds := range query.Result {
|
|
|
+ fmt.Fprintf(w, "%d\t%s\t%s\t%s\t%s\t%t\n", ds.Id, ds.Name, ds.Url, ds.Type,
|
|
|
+ ds.Access, ds.IsDefault)
|
|
|
+ }
|
|
|
+ w.Flush()
|
|
|
+}
|