github.com/vmware/govmomi@v0.51.0/cli/pool/destroy.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 pool 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/find" 14 ) 15 16 type destroy struct { 17 *flags.DatacenterFlag 18 19 children bool 20 } 21 22 func init() { 23 cli.Register("pool.destroy", &destroy{}) 24 } 25 26 func (cmd *destroy) 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.children, "children", false, "Remove all children pools") 31 } 32 33 func (cmd *destroy) Process(ctx context.Context) error { 34 if err := cmd.DatacenterFlag.Process(ctx); err != nil { 35 return err 36 } 37 return nil 38 } 39 40 func (cmd *destroy) Usage() string { 41 return "POOL..." 42 } 43 44 func (cmd *destroy) Description() string { 45 return "Destroy one or more resource POOLs.\n" + poolNameHelp 46 } 47 48 func (cmd *destroy) Run(ctx context.Context, f *flag.FlagSet) error { 49 if f.NArg() == 0 { 50 return flag.ErrHelp 51 } 52 53 finder, err := cmd.Finder() 54 if err != nil { 55 return err 56 } 57 58 for _, arg := range f.Args() { 59 pools, err := finder.ResourcePoolList(ctx, arg) 60 if err != nil { 61 if _, ok := err.(*find.NotFoundError); ok { 62 // Ignore if pool cannot be found 63 continue 64 } 65 66 return err 67 } 68 69 for _, pool := range pools { 70 if cmd.children { 71 err = pool.DestroyChildren(ctx) 72 if err != nil { 73 return err 74 } 75 } else { 76 task, err := pool.Destroy(ctx) 77 if err != nil { 78 return err 79 } 80 err = task.Wait(ctx) 81 if err != nil { 82 return err 83 } 84 } 85 } 86 } 87 88 return nil 89 }