diff --git a/main.go b/main.go index 997fbd38f0b..6f753adc185 100644 --- a/main.go +++ b/main.go @@ -31,7 +31,8 @@ func main() { app.Name = "Grafana Backend" app.Usage = "grafana web" app.Version = version - app.Commands = []cli.Command{cmd.CmdWeb, cmd.CmdImportJson} + app.Commands = []cli.Command{cmd.CmdWeb, cmd.CmdImportJson, + cmd.CmdListAccounts} app.Flags = append(app.Flags, []cli.Flag{}...) app.Run(os.Args) diff --git a/pkg/cmd/accounts.go b/pkg/cmd/accounts.go new file mode 100644 index 00000000000..209e10f0eaa --- /dev/null +++ b/pkg/cmd/accounts.go @@ -0,0 +1,47 @@ +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 CmdListAccounts = cli.Command{ + Name: "account", + Usage: "list accounts", + Description: "Lists the accounts in the system", + Action: listAccounts, + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "config", + Value: "grafana.ini", + Usage: "path to config file", + }, + }, +} + +func listAccounts(c *cli.Context) { + setting.NewConfigContext() + sqlstore.NewEngine() + sqlstore.EnsureAdminUser() + + accountsQuery := m.GetAccountsQuery{} + if err := bus.Dispatch(&accountsQuery); err != nil { + log.Error(3, "Failed to find accounts", err) + return + } + + w := tabwriter.NewWriter(os.Stdout, 20, 1, 4, ' ', 0) + + fmt.Fprintf(w, "ID\tNAME\n") + for _, account := range accountsQuery.Result { + fmt.Fprintf(w, "%d\t%s\n", account.Id, account.Name) + } + w.Flush() +} diff --git a/pkg/models/account.go b/pkg/models/account.go index ad4cdc47e53..12696cc962d 100644 --- a/pkg/models/account.go +++ b/pkg/models/account.go @@ -49,6 +49,10 @@ type GetAccountByNameQuery struct { Result *Account } +type GetAccountsQuery struct { + Result []*Account +} + type AccountDTO struct { Id int64 `json:"id"` Name string `json:"name"` diff --git a/pkg/services/sqlstore/account.go b/pkg/services/sqlstore/account.go index ff1f2fa0546..7b0e2bb96b6 100644 --- a/pkg/services/sqlstore/account.go +++ b/pkg/services/sqlstore/account.go @@ -14,6 +14,11 @@ func init() { bus.AddHandler("sql", SetUsingAccount) bus.AddHandler("sql", UpdateAccount) bus.AddHandler("sql", GetAccountByName) + bus.AddHandler("sql", GetAccountsQuery) +} + +func GetAccountsQuery(query *m.GetAccountsQuery) error { + return x.Find(&query.Result) } func GetAccountById(query *m.GetAccountByIdQuery) error {