github.com/vmware/govmomi@v0.51.0/cli/task/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 task 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/session" 15 "github.com/vmware/govmomi/task" 16 "github.com/vmware/govmomi/vim25/methods" 17 "github.com/vmware/govmomi/vim25/types" 18 ) 19 20 type create struct { 21 *flags.ClientFlag 22 23 obj string 24 } 25 26 func init() { 27 cli.Register("task.create", &create{}, true) 28 } 29 30 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 31 cmd.ClientFlag, ctx = flags.NewClientFlag(ctx) 32 cmd.ClientFlag.Register(ctx, f) 33 34 f.StringVar(&cmd.obj, "o", "", "ManagedObject with which Task will be associated") 35 } 36 37 func (cmd *create) Description() string { 38 return `Create task of type ID. 39 40 ID must be one of: 41 govc extension.info -json | jq -r '.extensions[].taskList | select(. != null) | .[].taskID' 42 43 Examples: 44 govc task.create $ID` 45 } 46 47 func (cmd *create) Usage() string { 48 return "ID" 49 } 50 51 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 52 c, err := cmd.Client() 53 if err != nil { 54 return err 55 } 56 57 if f.NArg() != 1 { 58 return flag.ErrHelp 59 } 60 61 m := task.NewManager(c) 62 63 req := types.CreateTask{ 64 This: m.Reference(), 65 Obj: c.ServiceContent.RootFolder, 66 TaskTypeId: f.Arg(0), 67 Cancelable: true, 68 } 69 70 if cmd.obj != "" { 71 req.Obj.FromString(cmd.obj) 72 } 73 74 s, err := session.NewManager(c).UserSession(ctx) 75 if err != nil { 76 return err 77 } 78 req.InitiatedBy = s.UserName 79 80 res, err := methods.CreateTask(ctx, c, &req) 81 if err != nil { 82 return err 83 } 84 85 fmt.Println(res.Returnval.Task.Value) 86 87 return nil 88 }