github.com/vmware/govmomi@v0.51.0/cli/vm/markasvm.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 vm 6 7 import ( 8 "context" 9 "flag" 10 11 "github.com/vmware/govmomi/cli" 12 "github.com/vmware/govmomi/cli/flags" 13 ) 14 15 type markasvm struct { 16 *flags.SearchFlag 17 *flags.ResourcePoolFlag 18 *flags.HostSystemFlag 19 } 20 21 func init() { 22 cli.Register("vm.markasvm", &markasvm{}) 23 } 24 25 func (cmd *markasvm) Register(ctx context.Context, f *flag.FlagSet) { 26 cmd.SearchFlag, ctx = flags.NewSearchFlag(ctx, flags.SearchVirtualMachines) 27 cmd.SearchFlag.Register(ctx, f) 28 cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) 29 cmd.ResourcePoolFlag.Register(ctx, f) 30 cmd.HostSystemFlag, ctx = flags.NewHostSystemFlag(ctx) 31 cmd.HostSystemFlag.Register(ctx, f) 32 } 33 34 func (cmd *markasvm) Process(ctx context.Context) error { 35 if err := cmd.SearchFlag.Process(ctx); err != nil { 36 return err 37 } 38 if err := cmd.ResourcePoolFlag.Process(ctx); err != nil { 39 return err 40 } 41 if err := cmd.HostSystemFlag.Process(ctx); err != nil { 42 return err 43 } 44 return nil 45 } 46 47 func (cmd *markasvm) Usage() string { 48 return "VM..." 49 } 50 51 func (cmd *markasvm) Description() string { 52 return `Mark VM template as a virtual machine. 53 54 Examples: 55 govc vm.markasvm -host host1 $name 56 govc vm.markasvm -host host1 $name` 57 } 58 59 func (cmd *markasvm) Run(ctx context.Context, f *flag.FlagSet) error { 60 vms, err := cmd.VirtualMachines(f.Args()) 61 if err != nil { 62 return err 63 } 64 65 pool, err := cmd.ResourcePoolIfSpecified() 66 if err != nil { 67 return err 68 } 69 70 host, err := cmd.HostSystemFlag.HostSystemIfSpecified() 71 if err != nil { 72 return err 73 } 74 75 if pool == nil { 76 if host == nil { 77 return flag.ErrHelp 78 } 79 80 pool, err = host.ResourcePool(ctx) 81 if err != nil { 82 return err 83 } 84 } 85 86 for _, vm := range vms { 87 err := vm.MarkAsVirtualMachine(ctx, *pool, host) 88 if err != nil { 89 return err 90 } 91 } 92 93 return nil 94 }