diff --git a/Makefile b/Makefile index bcbe37e912..62c08d159e 100644 --- a/Makefile +++ b/Makefile @@ -385,6 +385,15 @@ bin/rootlessport: $(SOURCES) go.mod go.sum .PHONY: rootlessport rootlessport: bin/rootlessport +.PHONY: podman-remote-experimental +podman-remote-experimental: $(SRCBINDIR)/experimental/podman$(BINSFX) +$(SRCBINDIR)/experimental/podman$(BINSFX): $(SOURCES) go.mod go.sum | $(SRCBINDIR) + $(GOCMD) build \ + $(BUILDFLAGS) \ + $(GO_LDFLAGS) '$(LDFLAGS_PODMAN)' \ + -tags "${REMOTETAGS} experimental" \ + -o $@ ./cmd/podman + ### ### Secondary binary-build targets ### diff --git a/cmd/podman/machine/os.go b/cmd/podman/machine/os.go new file mode 100644 index 0000000000..78d1c92072 --- /dev/null +++ b/cmd/podman/machine/os.go @@ -0,0 +1,28 @@ +//go:build (amd64 || arm64) && experimental +// +build amd64 arm64 +// +build experimental + +package machine + +import ( + "github.com/containers/podman/v4/cmd/podman/registry" + "github.com/containers/podman/v4/cmd/podman/validate" + "github.com/spf13/cobra" +) + +var ( + OSCmd = &cobra.Command{ + Use: "os", + Short: "Manage a virtual machine's os", + Long: "Manage a virtual machine's operating system", + PersistentPreRunE: validate.NoOp, + RunE: validate.SubCommandExists, + } +) + +func init() { + registry.Commands = append(registry.Commands, registry.CliCommand{ + Command: OSCmd, + Parent: machineCmd, + }) +} diff --git a/cmd/podman/machine/os/apply.go b/cmd/podman/machine/os/apply.go new file mode 100644 index 0000000000..35d65b0efc --- /dev/null +++ b/cmd/podman/machine/os/apply.go @@ -0,0 +1,38 @@ +//go:build (amd64 || arm64) && experimental +// +build amd64 arm64 +// +build experimental + +package machineos + +import ( + "fmt" + + "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/spf13/cobra" +) + +var ( + applyCmd = &cobra.Command{ + Use: "apply", + Short: "Apply OCI image to existing VM", + Long: "Apply custom layers from a containerized Fedora CoreOS image on top of an existing VM", + PersistentPreRunE: validate.NoOp, + RunE: apply, + Example: `podman machine os apply myimage`, + } +) + +func init() { + registry.Commands = append(registry.Commands, registry.CliCommand{ + Command: applyCmd, + Parent: machine.OSCmd, + }) + +} + +func apply(cmd *cobra.Command, args []string) error { + fmt.Println("Applying..") + return nil +} diff --git a/cmd/podman/main_experimental.go b/cmd/podman/main_experimental.go new file mode 100644 index 0000000000..08ad953567 --- /dev/null +++ b/cmd/podman/main_experimental.go @@ -0,0 +1,8 @@ +//go:build experimental +// +build experimental + +package main + +import ( + _ "github.com/containers/podman/v4/cmd/podman/machine/os" +)