github.com/vmware/govmomi@v0.51.0/cli/host/disconnect.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 host 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/object" 15 ) 16 17 type disconnect struct { 18 *flags.HostSystemFlag 19 } 20 21 func init() { 22 cli.Register("host.disconnect", &disconnect{}) 23 } 24 25 func (cmd *disconnect) Register(ctx context.Context, f *flag.FlagSet) { 26 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 27 cmd.HostSystemFlag.Register(ctx, f) 28 } 29 30 func (cmd *disconnect) Process(ctx context.Context) error { 31 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 32 return err 33 } 34 return nil 35 } 36 37 func (cmd *disconnect) Description() string { 38 return `Disconnect HOST from vCenter.` 39 } 40 41 func (cmd *disconnect) Disconnect(ctx context.Context, host *object.HostSystem) error { 42 task, err := host.Disconnect(ctx) 43 if err != nil { 44 return err 45 } 46 47 logger := cmd.ProgressLogger(fmt.Sprintf("%s disconnecting... ", host.InventoryPath)) 48 defer logger.Wait() 49 50 _, err = task.WaitForResult(ctx, logger) 51 return err 52 } 53 54 func (cmd *disconnect) Run(ctx context.Context, f *flag.FlagSet) error { 55 hosts, err := cmd.HostSystems(f.Args()) 56 if err != nil { 57 return err 58 } 59 60 for _, host := range hosts { 61 err = cmd.Disconnect(ctx, host) 62 if err != nil { 63 return err 64 } 65 } 66 67 return nil 68 }