orgs.go 2.3 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 ListOrgs = cli.Command{
  13. Name: "orgs",
  14. Usage: "list organizations",
  15. Description: "Lists the organizations in the system",
  16. Action: listOrgs,
  17. }
  18. var CreateOrg = cli.Command{
  19. Name: "orgs:create",
  20. Usage: "Creates a new organization",
  21. Description: "Creates a new organization",
  22. Action: createOrg,
  23. }
  24. var DeleteOrg = cli.Command{
  25. Name: "orgs:delete",
  26. Usage: "Delete an existing organization",
  27. Description: "Deletes an existing organization",
  28. Action: deleteOrg,
  29. }
  30. func listOrgs(c *cli.Context) {
  31. initRuntime(c)
  32. orgsQuery := m.GetOrgListQuery{}
  33. if err := bus.Dispatch(&orgsQuery); err != nil {
  34. log.ConsoleFatalf("Failed to find organizations: %s", err)
  35. }
  36. w := tabwriter.NewWriter(os.Stdout, 8, 1, 4, ' ', 0)
  37. fmt.Fprintf(w, "ID\tNAME\n")
  38. for _, org := range orgsQuery.Result {
  39. fmt.Fprintf(w, "%d\t%s\n", org.Id, org.Name)
  40. }
  41. w.Flush()
  42. }
  43. func createOrg(c *cli.Context) {
  44. initRuntime(c)
  45. if !c.Args().Present() {
  46. log.ConsoleFatal("Organization 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.CreateOrgCommand{Name: name, UserId: adminUser.Id}
  55. if err := bus.Dispatch(&cmd); err != nil {
  56. log.ConsoleFatalf("Failed to create organization: %s", err)
  57. }
  58. log.ConsoleInfof("Organization %s created for admin user %s\n", name, adminUser.Email)
  59. }
  60. func deleteOrg(c *cli.Context) {
  61. initRuntime(c)
  62. if !c.Args().Present() {
  63. log.ConsoleFatal("Organization name arg is required")
  64. }
  65. name := c.Args().First()
  66. orgQuery := m.GetOrgByNameQuery{Name: name}
  67. if err := bus.Dispatch(&orgQuery); err != nil {
  68. log.ConsoleFatalf("Failed to find organization: %s", err)
  69. }
  70. orgId := orgQuery.Result.Id
  71. cmd := m.DeleteOrgCommand{Id: orgId}
  72. if err := bus.Dispatch(&cmd); err != nil {
  73. log.ConsoleFatalf("Failed to delete organization: %s", err)
  74. }
  75. log.ConsoleInfof("Organization %s deleted", name)
  76. }