github.com/vmware/govmomi@v0.51.0/cli/datastore/vsan/rm.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 vsan 6 7 import ( 8 "context" 9 "flag" 10 "fmt" 11 "os" 12 13 "github.com/vmware/govmomi/cli" 14 "github.com/vmware/govmomi/cli/flags" 15 ) 16 17 type rm struct { 18 *flags.DatastoreFlag 19 20 force bool 21 verbose bool 22 } 23 24 func init() { 25 cli.Register("datastore.vsan.dom.rm", &rm{}) 26 } 27 28 func (cmd *rm) Register(ctx context.Context, f *flag.FlagSet) { 29 cmd.DatastoreFlag, ctx = flags.NewDatastoreFlag(ctx) 30 cmd.DatastoreFlag.Register(ctx, f) 31 32 f.BoolVar(&cmd.force, "f", false, "Force delete") 33 f.BoolVar(&cmd.verbose, "v", false, "Print deleted UUIDs to stdout, failed to stderr") 34 } 35 36 func (cmd *rm) Process(ctx context.Context) error { 37 if err := cmd.DatastoreFlag.Process(ctx); err != nil { 38 return err 39 } 40 return nil 41 } 42 43 func (cmd *rm) Usage() string { 44 return "UUID..." 45 } 46 47 func (cmd *rm) Description() string { 48 return `Remove vSAN DOM objects in DS. 49 50 Examples: 51 govc datastore.vsan.dom.rm d85aa758-63f5-500a-3150-0200308e589c 52 govc datastore.vsan.dom.rm -f d85aa758-63f5-500a-3150-0200308e589c 53 govc datastore.vsan.dom.ls -o | xargs govc datastore.vsan.dom.rm` 54 } 55 56 func (cmd *rm) Run(ctx context.Context, f *flag.FlagSet) error { 57 if f.NArg() == 0 { 58 return flag.ErrHelp 59 } 60 61 ds, err := cmd.Datastore() 62 if err != nil { 63 return err 64 } 65 66 hosts, err := ds.AttachedHosts(ctx) 67 if err != nil { 68 return err 69 } 70 71 if len(hosts) == 0 { 72 return flag.ErrHelp 73 } 74 75 m, err := hosts[0].ConfigManager().VsanInternalSystem(ctx) 76 if err != nil { 77 return err 78 } 79 80 res, err := m.DeleteVsanObjects(ctx, f.Args(), &cmd.force) 81 if err != nil { 82 return err 83 } 84 85 if cmd.verbose { 86 for _, r := range res { 87 if r.Success { 88 fmt.Fprintln(cmd.Out, r.Uuid) 89 } else { 90 fmt.Fprintf(os.Stderr, "%s %s\n", r.Uuid, r.FailureReason[0].Message) 91 } 92 } 93 } 94 95 return nil 96 }