automation-tests/cmd/podman/machine/os/apply.go

61 lines
1.5 KiB
Go

//go:build amd64 || arm64
// +build amd64 arm64
package os
import (
"github.com/containers/podman/v4/cmd/podman/common"
"github.com/containers/podman/v4/cmd/podman/machine"
"github.com/containers/podman/v4/cmd/podman/registry"
"github.com/containers/podman/v4/cmd/podman/validate"
"github.com/containers/podman/v4/pkg/machine/os"
"github.com/spf13/cobra"
)
var (
applyCmd = &cobra.Command{
Use: "apply [options] IMAGE [NAME]",
Short: "Apply an OCI image to a Podman Machine's OS",
Long: "Apply custom layers from a containerized Fedora CoreOS OCI image on top of an existing VM",
PersistentPreRunE: validate.NoOp,
Args: cobra.RangeArgs(1, 2),
RunE: apply,
ValidArgsFunction: common.AutocompleteImages,
Example: `podman machine os apply myimage`,
}
)
var restart bool
func init() {
registry.Commands = append(registry.Commands, registry.CliCommand{
Command: applyCmd,
Parent: machine.OSCmd,
})
flags := applyCmd.Flags()
restartFlagName := "restart"
flags.BoolVar(&restart, restartFlagName, false, "Restart VM to apply changes")
}
func apply(cmd *cobra.Command, args []string) error {
vmName := ""
if len(args) == 2 {
vmName = args[1]
}
managerOpts := ManagerOpts{
VMName: vmName,
CLIArgs: args,
Restart: restart,
}
osManager, err := NewOSManager(managerOpts)
if err != nil {
return err
}
applyOpts := os.ApplyOptions{
Image: args[0],
}
return osManager.Apply(args[0], applyOpts)
}