github.com/vmware/govmomi@v0.51.0/cli/folder/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 folder 6 7 import ( 8 "context" 9 "flag" 10 "path" 11 12 "github.com/vmware/govmomi/cli" 13 "github.com/vmware/govmomi/cli/flags" 14 ) 15 16 type create struct { 17 *flags.DatacenterFlag 18 19 pod bool 20 } 21 22 func init() { 23 cli.Register("folder.create", &create{}) 24 } 25 26 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 27 cmd.DatacenterFlag, ctx = flags.NewDatacenterFlag(ctx) 28 cmd.DatacenterFlag.Register(ctx, f) 29 30 f.BoolVar(&cmd.pod, "pod", false, "Create folder(s) of type StoragePod (DatastoreCluster)") 31 } 32 33 func (cmd *create) Usage() string { 34 return "PATH..." 35 } 36 37 func (cmd *create) Description() string { 38 return `Create folder with PATH. 39 40 Examples: 41 govc folder.create /dc1/vm/folder-foo 42 govc object.mv /dc1/vm/vm-foo-* /dc1/vm/folder-foo 43 govc folder.create -pod /dc1/datastore/sdrs 44 govc object.mv /dc1/datastore/iscsi-* /dc1/datastore/sdrs` 45 } 46 47 func (cmd *create) Process(ctx context.Context) error { 48 if err := cmd.DatacenterFlag.Process(ctx); err != nil { 49 return err 50 } 51 return nil 52 } 53 54 func (cmd *create) Run(ctx context.Context, f *flag.FlagSet) error { 55 finder, err := cmd.Finder() 56 if err != nil { 57 return err 58 } 59 60 for _, arg := range f.Args() { 61 dir := path.Dir(arg) 62 name := path.Base(arg) 63 64 if dir == "" { 65 dir = "/" 66 } 67 68 folder, err := finder.Folder(ctx, dir) 69 if err != nil { 70 return err 71 } 72 73 var create func() error 74 if cmd.pod { 75 create = func() error { 76 _, err = folder.CreateStoragePod(ctx, name) 77 return err 78 } 79 } else { 80 create = func() error { 81 _, err = folder.CreateFolder(ctx, name) 82 return err 83 } 84 } 85 86 err = create() 87 if err != nil { 88 return err 89 } 90 } 91 92 return nil 93 }