accounts.go 2.6 KB

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