// +build amd64,linux arm64,linux amd64,darwin arm64,darwin package machine import ( "github.com/containers/podman/v3/cmd/podman/registry" "github.com/containers/podman/v3/pkg/domain/entities" "github.com/containers/podman/v3/pkg/machine" "github.com/containers/podman/v3/pkg/machine/qemu" "github.com/spf13/cobra" ) var ( stopCmd = &cobra.Command{ Use: "stop [MACHINE]", Short: "Stop an existing machine", Long: "Stop a managed virtual machine ", RunE: stop, Args: cobra.MaximumNArgs(1), Example: `podman machine stop myvm`, ValidArgsFunction: autocompleteMachine, } ) func init() { registry.Commands = append(registry.Commands, registry.CliCommand{ Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode}, Command: stopCmd, Parent: machineCmd, }) } // TODO Name shouldn't be required, need to create a default vm func stop(cmd *cobra.Command, args []string) error { var ( err error vm machine.VM vmType string ) vmName := defaultMachineName if len(args) > 0 && len(args[0]) > 0 { vmName = args[0] } switch vmType { default: vm, err = qemu.LoadVMByName(vmName) } if err != nil { return err } return vm.Stop(vmName, machine.StopOptions{}) }