github.com/vmware/govmomi@v0.51.0/cli/role/ls.go (about)

     1  // © Broadcom. All Rights Reserved.
     2  // The term “Broadcom” refers to Broadcom Inc. and/or its subsidiaries.
     3  // SPDX-License-Identifier: Apache-2.0
     4  
     5  package role
     6  
     7  import (
     8  	"context"
     9  	"flag"
    10  	"fmt"
    11  	"io"
    12  	"text/tabwriter"
    13  
    14  	"github.com/vmware/govmomi/cli"
    15  	"github.com/vmware/govmomi/cli/permissions"
    16  	"github.com/vmware/govmomi/object"
    17  	"github.com/vmware/govmomi/vim25/types"
    18  )
    19  
    20  type ls struct {
    21  	*permissions.PermissionFlag
    22  }
    23  
    24  func init() {
    25  	cli.Register("role.ls", &ls{})
    26  }
    27  
    28  func (cmd *ls) Register(ctx context.Context, f *flag.FlagSet) {
    29  	cmd.PermissionFlag, ctx = permissions.NewPermissionFlag(ctx)
    30  	cmd.PermissionFlag.Register(ctx, f)
    31  }
    32  
    33  func (cmd *ls) Process(ctx context.Context) error {
    34  	if err := cmd.PermissionFlag.Process(ctx); err != nil {
    35  		return err
    36  	}
    37  	return nil
    38  }
    39  
    40  func (cmd *ls) Usage() string {
    41  	return "[NAME]"
    42  }
    43  
    44  func (cmd *ls) Description() string {
    45  	return `List authorization roles.
    46  
    47  If NAME is provided, list privileges for the role.
    48  
    49  Examples:
    50    govc role.ls
    51    govc role.ls Admin`
    52  }
    53  
    54  type lsRoleList object.AuthorizationRoleList
    55  
    56  func (rl lsRoleList) Write(w io.Writer) error {
    57  	tw := tabwriter.NewWriter(w, 2, 0, 2, ' ', 0)
    58  
    59  	for _, role := range rl {
    60  		fmt.Fprintf(tw, "%s\t%s\n", role.Name, role.Info.GetDescription().Summary)
    61  	}
    62  
    63  	return tw.Flush()
    64  }
    65  
    66  type lsRole types.AuthorizationRole
    67  
    68  func (r lsRole) Write(w io.Writer) error {
    69  	for _, p := range r.Privilege {
    70  		fmt.Println(p)
    71  	}
    72  	return nil
    73  }
    74  
    75  func (cmd *ls) Run(ctx context.Context, f *flag.FlagSet) error {
    76  	if f.NArg() > 1 {
    77  		return flag.ErrHelp
    78  	}
    79  
    80  	_, err := cmd.Manager(ctx)
    81  	if err != nil {
    82  		return err
    83  	}
    84  
    85  	if f.NArg() == 1 {
    86  		role, err := cmd.Role(f.Arg(0))
    87  		if err != nil {
    88  			return err
    89  		}
    90  
    91  		return cmd.WriteResult(lsRole(*role))
    92  	}
    93  
    94  	return cmd.WriteResult(lsRoleList(cmd.Roles))
    95  }