accounts.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package cmd
  2. import (
  3. "fmt"
  4. "os"
  5. "text/tabwriter"
  6. "github.com/codegangsta/cli"
  7. "github.com/grafana/grafana/pkg/bus"
  8. "github.com/grafana/grafana/pkg/log"
  9. m "github.com/grafana/grafana/pkg/models"
  10. "github.com/grafana/grafana/pkg/setting"
  11. )
  12. var ListAccounts = cli.Command{
  13. Name: "accounts",
  14. Usage: "list accounts",
  15. Description: "Lists the accounts in the system",
  16. Action: listAccounts,
  17. }
  18. var CreateAccount = cli.Command{
  19. Name: "accounts:create",
  20. Usage: "create a new account",
  21. Description: "Creates a new account",
  22. Action: createAccount,
  23. }
  24. var DeleteAccount = cli.Command{
  25. Name: "accounts:delete",
  26. Usage: "delete an existing account",
  27. Description: "Deletes an existing account",
  28. Action: deleteAccount,
  29. }
  30. func listAccounts(c *cli.Context) {
  31. initRuntime(c)
  32. accountsQuery := m.GetAccountsQuery{}
  33. if err := bus.Dispatch(&accountsQuery); err != nil {
  34. log.ConsoleFatalf("Failed to find accounts: %s", err)
  35. }
  36. w := tabwriter.NewWriter(os.Stdout, 8, 1, 4, ' ', 0)
  37. fmt.Fprintf(w, "ID\tNAME\n")
  38. for _, account := range accountsQuery.Result {
  39. fmt.Fprintf(w, "%d\t%s\n", account.Id, account.Name)
  40. }
  41. w.Flush()
  42. }
  43. func createAccount(c *cli.Context) {
  44. initRuntime(c)
  45. if !c.Args().Present() {
  46. log.ConsoleFatal("Account name arg is required")
  47. }
  48. name := c.Args().First()
  49. adminQuery := m.GetUserByLoginQuery{LoginOrEmail: setting.AdminUser}
  50. if err := bus.Dispatch(&adminQuery); err == m.ErrUserNotFound {
  51. log.ConsoleFatalf("Failed to find default admin user: %s", err)
  52. }
  53. adminUser := adminQuery.Result
  54. cmd := m.CreateAccountCommand{Name: name, UserId: adminUser.Id}
  55. if err := bus.Dispatch(&cmd); err != nil {
  56. log.ConsoleFatalf("Failed to create account: %s", err)
  57. }
  58. log.ConsoleInfof("Account %s created for admin user %s\n", name, adminUser.Email)
  59. }
  60. func deleteAccount(c *cli.Context) {
  61. initRuntime(c)
  62. if !c.Args().Present() {
  63. log.ConsoleFatal("Account name arg is required")
  64. }
  65. name := c.Args().First()
  66. accountQuery := m.GetAccountByNameQuery{Name: name}
  67. if err := bus.Dispatch(&accountQuery); err != nil {
  68. log.ConsoleFatalf("Failed to find account: %s", err)
  69. }
  70. accountId := accountQuery.Result.Id
  71. cmd := m.DeleteAccountCommand{Id: accountId}
  72. if err := bus.Dispatch(&cmd); err != nil {
  73. log.ConsoleFatalf("Failed to delete account: %s", err)
  74. }
  75. log.ConsoleInfof("Account %s deleted", name)
  76. }