github.com/vmware/govmomi@v0.51.0/cli/object/mv.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 object 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 ) 15 16 type mv struct { 17 *flags.DatacenterFlag 18 } 19 20 func init() { 21 cli.Register("object.mv", &mv{}) 22 } 23 24 func (cmd *mv) Register(ctx context.Context, f *flag.FlagSet) { 25 cmd.DatacenterFlag, ctx = flags.NewDatacenterFlag(ctx) 26 cmd.DatacenterFlag.Register(ctx, f) 27 } 28 29 func (cmd *mv) Usage() string { 30 return "PATH... FOLDER" 31 } 32 33 func (cmd *mv) Description() string { 34 return `Move managed entities to FOLDER. 35 36 Examples: 37 govc folder.create /dc1/host/example 38 govc object.mv /dc2/host/*.example.com /dc1/host/example` 39 } 40 41 func (cmd *mv) Process(ctx context.Context) error { 42 if err := cmd.DatacenterFlag.Process(ctx); err != nil { 43 return err 44 } 45 return nil 46 } 47 48 func (cmd *mv) Run(ctx context.Context, f *flag.FlagSet) error { 49 if f.NArg() < 2 { 50 return flag.ErrHelp 51 } 52 53 finder, err := cmd.Finder() 54 if err != nil { 55 return err 56 } 57 58 n := f.NArg() - 1 59 60 folder, err := finder.Folder(ctx, f.Arg(n)) 61 if err != nil { 62 return err 63 } 64 65 objs, err := cmd.ManagedObjects(ctx, f.Args()[:n]) 66 if err != nil { 67 return err 68 } 69 70 task, err := folder.MoveInto(ctx, objs) 71 if err != nil { 72 return err 73 } 74 75 logger := cmd.ProgressLogger(fmt.Sprintf("moving %d objects to %s... ", len(objs), folder.InventoryPath)) 76 _, err = task.WaitForResult(ctx, logger) 77 logger.Wait() 78 79 return err 80 }