github.com/vmware/govmomi@v0.51.0/cli/disk/tags.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 disk 6 7 import ( 8 "context" 9 "flag" 10 11 "github.com/vmware/govmomi/cli" 12 "github.com/vmware/govmomi/cli/flags" 13 "github.com/vmware/govmomi/vim25/types" 14 ) 15 16 type tags struct { 17 *flags.ClientFlag 18 types.VslmTagEntry 19 attach bool 20 } 21 22 func init() { 23 cli.Register("disk.tags.attach", &tags{attach: true}) 24 cli.Register("disk.tags.detach", &tags{attach: false}) 25 } 26 27 func (cmd *tags) Register(ctx context.Context, f *flag.FlagSet) { 28 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 29 cmd.ClientFlag.Register(ctx, f) 30 31 f.StringVar(&cmd.ParentCategoryName, "c", "", "Tag category") 32 } 33 34 func (cmd *tags) Usage() string { 35 return "NAME ID" 36 } 37 38 func (cmd *tags) name() string { 39 if cmd.attach { 40 return "attach" 41 } 42 return "detach" 43 } 44 45 func (cmd *tags) Description() string { 46 if cmd.attach { 47 return `Attach tag NAME to disk ID. 48 49 Examples: 50 govc disk.tags.attach -c k8s-region k8s-region-us $id` 51 } 52 53 return `Detach tag NAME from disk ID. 54 55 Examples: 56 govc disk.tags.detach -c k8s-region k8s-region-us $id` 57 } 58 59 func (cmd *tags) Run(ctx context.Context, f *flag.FlagSet) error { 60 c, err := cmd.Client() 61 if err != nil { 62 return err 63 } 64 65 m, err := NewManager(ctx, c, nil) 66 if err != nil { 67 return err 68 } 69 70 cmd.TagName = f.Arg(0) 71 method := m.DetachTag 72 if cmd.attach { 73 method = m.AttachTag 74 } 75 return method(ctx, f.Arg(1), cmd.VslmTagEntry) 76 }