From 9868058076f9125694b6081b23f05c9cbae8b9e8 Mon Sep 17 00:00:00 2001 From: Michael Quigley Date: Tue, 10 Dec 2024 14:21:36 -0500 Subject: [PATCH] cli integration for 'zrok org admin list' (#537) --- cmd/zrok/orgAdminList.go | 76 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 cmd/zrok/orgAdminList.go diff --git a/cmd/zrok/orgAdminList.go b/cmd/zrok/orgAdminList.go new file mode 100644 index 00000000..543fbbbd --- /dev/null +++ b/cmd/zrok/orgAdminList.go @@ -0,0 +1,76 @@ +package main + +import ( + "fmt" + httptransport "github.com/go-openapi/runtime/client" + "github.com/jedib0t/go-pretty/v6/table" + "github.com/openziti/zrok/environment" + "github.com/openziti/zrok/rest_client_zrok/metadata" + "github.com/openziti/zrok/tui" + "github.com/spf13/cobra" + "os" +) + +func init() { + organizationAdminCmd.AddCommand(newOrgAdminListCommand().cmd) +} + +type orgAdminListCommand struct { + cmd *cobra.Command +} + +func newOrgAdminListCommand() *orgAdminListCommand { + cmd := &cobra.Command{ + Use: "list ", + Short: "List the members of an organization", + Args: cobra.ExactArgs(1), + } + command := &orgAdminListCommand{cmd} + cmd.Run = command.run + return command +} + +func (c *orgAdminListCommand) run(_ *cobra.Command, args []string) { + root, err := environment.LoadRoot() + if err != nil { + if !panicInstead { + tui.Error("error loading zrokdir", err) + } + panic(err) + } + + if !root.IsEnabled() { + tui.Error("unable to load environment; did you 'zrok enable'?", nil) + } + + zrok, err := root.Client() + if err != nil { + if !panicInstead { + tui.Error("error loading zrokdir", err) + } + panic(err) + } + auth := httptransport.APIKeyAuth("X-TOKEN", "header", root.Environment().Token) + + req := metadata.NewListOrgMembersParams() + req.OrganizationToken = args[0] + + resp, err := zrok.Metadata.ListOrgMembers(req, auth) + if err != nil { + if !panicInstead { + tui.Error("error listing organization members", err) + } + panic(err) + } + + fmt.Println() + t := table.NewWriter() + t.SetOutputMirror(os.Stdout) + t.SetStyle(table.StyleColoredDark) + t.AppendHeader(table.Row{"Email", "Admin?"}) + for _, member := range resp.Payload.Members { + t.AppendRow(table.Row{member.Email, member.Admin}) + } + t.Render() + fmt.Println() +}