github.com/vmware/govmomi@v0.51.0/cli/vm/snapshot/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 snapshot 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 create struct { 16 *flags.VirtualMachineFlag 17 18 description string 19 memory bool 20 quiesce bool 21 } 22 23 func init() { 24 cli.Register("snapshot.create", &create{}) 25 } 26 27 func (cmd *create) Register(ctx context.Context, f *flag.FlagSet) { 28 cmd.VirtualMachineFlag, ctx = flags.NewVirtualMachineFlag(ctx) 29 cmd.VirtualMachineFlag.Register(ctx, f) 30 31 f.BoolVar(&cmd.memory, "m", true, "Include memory state") 32 f.BoolVar(&cmd.quiesce, "q", false, "Quiesce guest file system") 33 f.StringVar(&cmd.description, "d", "", "Snapshot description") 34 } 35 36 func (cmd *create) Usage() string { 37 return "NAME" 38 } 39 40 func (cmd *create) Description() string { 41 return `Create snapshot of VM with NAME. 42 43 Examples: 44 govc snapshot.create -vm my-vm happy-vm-state` 45 } 46 47 func (cmd *create) Process(ctx context.Context) error { 48 if err := cmd.VirtualMachineFlag.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 if f.NArg() != 1 { 56 return flag.ErrHelp 57 } 58 59 vm, err := cmd.VirtualMachine() 60 if err != nil { 61 return err 62 } 63 64 if vm == nil { 65 return flag.ErrHelp 66 } 67 68 task, err := vm.CreateSnapshot(ctx, f.Arg(0), cmd.description, cmd.memory, cmd.quiesce) 69 if err != nil { 70 return err 71 } 72 73 return task.Wait(ctx) 74 }