github.com/vmware/govmomi@v0.51.0/cli/tags/create.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 tags 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/vapi/tags" 15 ) 16 17 type create struct { 18 *flags.ClientFlag 19 tag tags.Tag 20 } 21 22 func init() { 23 cli.Register("tags.create", &create{}) 24 } 25 26 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 27 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 28 cmd.ClientFlag.Register(ctx, f) 29 f.StringVar(&cmd.tag.TagID, "id", "", "Tag ID") 30 f.StringVar(&cmd.tag.CategoryID, "c", "", "Category name") 31 f.StringVar(&cmd.tag.Description, "d", "", "Description of tag") 32 } 33 34 func (cmd *create) Process(ctx context.Context) error { 35 if err := cmd.ClientFlag.Process(ctx); err != nil { 36 return err 37 } 38 return nil 39 } 40 41 func (cmd *create) Usage() string { 42 return "NAME" 43 } 44 45 func (cmd *create) Description() string { 46 return `Create tag. 47 48 The '-c' option to specify a tag category is required. 49 This command will output the ID of the new tag. 50 51 Examples: 52 govc tags.create -d "Kubernetes Zone US CA1" -c k8s-zone k8s-zone-us-ca1` 53 } 54 55 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 56 if f.NArg() != 1 || cmd.tag.CategoryID == "" { 57 return flag.ErrHelp 58 } 59 60 cmd.tag.Name = f.Arg(0) 61 62 c, err := cmd.RestClient() 63 if err != nil { 64 return err 65 } 66 67 id, err := tags.NewManager(c).CreateTag(ctx, &cmd.tag) 68 if err != nil { 69 return err 70 } 71 72 fmt.Println(id) 73 return nil 74 }