groups.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. package user
  2. import (
  3. "fmt"
  4. "os"
  5. "strings"
  6. "github.com/gravitl/netmaker/cli/cmd/commons"
  7. "github.com/gravitl/netmaker/cli/functions"
  8. "github.com/guumaster/tablewriter"
  9. "github.com/spf13/cobra"
  10. )
  11. var userGroupCmd = &cobra.Command{
  12. Use: "group",
  13. Args: cobra.NoArgs,
  14. Short: "Manage User Groups",
  15. Long: `Manage User Groups`,
  16. }
  17. var userGroupListCmd = &cobra.Command{
  18. Use: "list",
  19. Args: cobra.NoArgs,
  20. Short: "List all user groups",
  21. Long: `List all user groups`,
  22. Run: func(cmd *cobra.Command, args []string) {
  23. data := functions.ListUserGrps()
  24. switch commons.OutputFormat {
  25. case commons.JsonOutput:
  26. functions.PrettyPrint(data)
  27. default:
  28. table := tablewriter.NewWriter(os.Stdout)
  29. h := []string{"ID", "MetaData", "Network Roles"}
  30. table.SetHeader(h)
  31. for _, d := range data {
  32. roleInfoStr := ""
  33. for netID, netRoleMap := range d.NetworkRoles {
  34. roleList := []string{}
  35. for roleID := range netRoleMap {
  36. roleList = append(roleList, roleID.String())
  37. }
  38. roleInfoStr += fmt.Sprintf("[%s]: %s", netID, strings.Join(roleList, ","))
  39. }
  40. e := []string{d.ID.String(), d.MetaData, roleInfoStr}
  41. table.Append(e)
  42. }
  43. table.Render()
  44. }
  45. },
  46. }
  47. var userGroupCreateCmd = &cobra.Command{
  48. Use: "create",
  49. Args: cobra.NoArgs,
  50. Short: "create user group",
  51. Long: `create user group`,
  52. Run: func(cmd *cobra.Command, args []string) {
  53. fmt.Println("CLI doesn't support creation of groups currently. Visit the dashboard to create one or refer to our api documentation https://docs.netmaker.io/api")
  54. },
  55. }
  56. var userGroupDeleteCmd = &cobra.Command{
  57. Use: "delete [groupID]",
  58. Args: cobra.ExactArgs(1),
  59. Short: "delete user group",
  60. Long: `delete user group`,
  61. Run: func(cmd *cobra.Command, args []string) {
  62. resp := functions.DeleteUserGrp(args[0])
  63. if resp != nil {
  64. fmt.Println(resp.Message)
  65. }
  66. },
  67. }
  68. var userGroupGetCmd = &cobra.Command{
  69. Use: "get [groupID]",
  70. Args: cobra.ExactArgs(1),
  71. Short: "get user group",
  72. Long: `get user group`,
  73. Run: func(cmd *cobra.Command, args []string) {
  74. data := functions.GetUserGrp(args[0])
  75. switch commons.OutputFormat {
  76. case commons.JsonOutput:
  77. functions.PrettyPrint(data)
  78. default:
  79. table := tablewriter.NewWriter(os.Stdout)
  80. h := []string{"ID", "MetaData", "Network Roles"}
  81. table.SetHeader(h)
  82. roleInfoStr := ""
  83. for netID, netRoleMap := range data.NetworkRoles {
  84. roleList := []string{}
  85. for roleID := range netRoleMap {
  86. roleList = append(roleList, roleID.String())
  87. }
  88. roleInfoStr += fmt.Sprintf("[%s]: %s", netID, strings.Join(roleList, ","))
  89. }
  90. e := []string{data.ID.String(), data.MetaData, roleInfoStr}
  91. table.Append(e)
  92. table.Render()
  93. }
  94. },
  95. }
  96. func init() {
  97. rootCmd.AddCommand(userGroupCmd)
  98. // list roles cmd
  99. userGroupCmd.AddCommand(userGroupListCmd)
  100. // create roles cmd
  101. userGroupCmd.AddCommand(userGroupCreateCmd)
  102. // delete role cmd
  103. userGroupCmd.AddCommand(userGroupDeleteCmd)
  104. // Get Role
  105. userGroupCmd.AddCommand(userGroupGetCmd)
  106. }