From 96c208efb5fb005f90f47114503ca15145eab47b Mon Sep 17 00:00:00 2001 From: Ashley Cui Date: Wed, 23 Nov 2022 22:48:07 -0500 Subject: [PATCH] Introduce podman machine os commands Introduce machine os and machine os apply. Note that these are both stubs at the current moment, and do not introduce functionality. In order to build them, you must use the `experimental` build tag, or use `make podman-remote-experimental` [NO NEW TESTS NEEDED] as there is no actual functionality and this is a WIP. Signed-off-by: Ashley Cui --- Makefile | 9 ++++++++ cmd/podman/machine/os.go | 28 ++++++++++++++++++++++++ cmd/podman/machine/os/apply.go | 38 +++++++++++++++++++++++++++++++++ cmd/podman/main_experimental.go | 8 +++++++ 4 files changed, 83 insertions(+) create mode 100644 cmd/podman/machine/os.go create mode 100644 cmd/podman/machine/os/apply.go create mode 100644 cmd/podman/main_experimental.go 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" +)