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  }