github.com/vmware/govmomi@v0.51.0/cli/license/remove.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 license 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 "github.com/vmware/govmomi/license" 15 ) 16 17 type remove struct { 18 *flags.ClientFlag 19 *flags.OutputFlag 20 } 21 22 func init() { 23 cli.Register("license.remove", &remove{}) 24 } 25 26 func (cmd *remove) Register(ctx context.Context, f *flag.FlagSet) { 27 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 28 cmd.ClientFlag.Register(ctx, f) 29 30 cmd.OutputFlag, ctx = flags.NewOutputFlag(ctx) 31 cmd.OutputFlag.Register(ctx, f) 32 } 33 34 func (cmd *remove) Process(ctx context.Context) error { 35 if err := cmd.ClientFlag.Process(ctx); err != nil { 36 return err 37 } 38 if err := cmd.OutputFlag.Process(ctx); err != nil { 39 return err 40 } 41 return nil 42 } 43 44 func (cmd *remove) Usage() string { 45 return "KEY..." 46 } 47 48 func (cmd *remove) Run(ctx context.Context, f *flag.FlagSet) error { 49 client, err := cmd.Client() 50 if err != nil { 51 return err 52 } 53 54 m := license.NewManager(client) 55 for _, v := range f.Args() { 56 err = m.Remove(ctx, v) 57 if err != nil { 58 return err 59 } 60 } 61 62 list, err := m.List(ctx) 63 if err != nil { 64 return err 65 } 66 67 for _, v := range f.Args() { 68 for _, l := range list { 69 if v == l.LicenseKey { 70 return fmt.Errorf("cannot remove license %q", v) 71 } 72 } 73 } 74 75 return nil 76 }