diff options
author | Jhon Honce <jhonce@redhat.com> | 2022-05-03 10:51:58 -0700 |
---|---|---|
committer | Jhon Honce <jhonce@redhat.com> | 2022-05-03 16:15:59 -0700 |
commit | 88015cf0d8c62e27452899c870555667d658427f (patch) | |
tree | d9708a4860381b4a29034811c3253c6096d94df8 | |
parent | 1e0c50df38ff955011f7ebb83a0268f3f1cd2841 (diff) | |
download | podman-88015cf0d8c62e27452899c870555667d658427f.tar.gz podman-88015cf0d8c62e27452899c870555667d658427f.tar.bz2 podman-88015cf0d8c62e27452899c870555667d658427f.zip |
Implement --format for machine inspect
* Fix issue of nil pointer derefence
Signed-off-by: Jhon Honce <jhonce@redhat.com>
-rw-r--r-- | cmd/podman/machine/inspect.go | 31 | ||||
-rw-r--r-- | pkg/machine/e2e/inspect_test.go | 12 | ||||
-rw-r--r-- | pkg/machine/e2e/machine_test.go | 11 | ||||
-rw-r--r-- | pkg/machine/qemu/machine.go | 3 |
4 files changed, 42 insertions, 15 deletions
diff --git a/cmd/podman/machine/inspect.go b/cmd/podman/machine/inspect.go index 21e5074b7..a1f467bbb 100644 --- a/cmd/podman/machine/inspect.go +++ b/cmd/podman/machine/inspect.go @@ -7,10 +7,10 @@ import ( "encoding/json" "os" + "github.com/containers/common/pkg/report" "github.com/containers/podman/v4/cmd/podman/common" "github.com/containers/podman/v4/cmd/podman/registry" "github.com/containers/podman/v4/cmd/podman/utils" - "github.com/containers/podman/v4/libpod/define" "github.com/containers/podman/v4/pkg/machine" "github.com/sirupsen/logrus" "github.com/spf13/cobra" @@ -66,12 +66,29 @@ func inspect(cmd *cobra.Command, args []string) error { } vms = append(vms, *ii) } - if len(inspectFlag.format) > 0 { - // need jhonce to work his template magic - return define.ErrNotImplemented - } - if err := printJSON(vms); err != nil { - logrus.Error(err) + switch { + case cmd.Flag("format").Changed: + row := report.NormalizeFormat(inspectFlag.format) + row = report.EnforceRange(row) + + tmpl, err := report.NewTemplate("Machine inspect").Parse(row) + if err != nil { + return err + } + + w, err := report.NewWriterDefault(os.Stdout) + if err != nil { + return err + } + + if err := tmpl.Execute(w, vms); err != nil { + logrus.Error(err) + } + w.Flush() + default: + if err := printJSON(vms); err != nil { + logrus.Error(err) + } } return errs.PrintErrors() } diff --git a/pkg/machine/e2e/inspect_test.go b/pkg/machine/e2e/inspect_test.go index e282dd21d..b34285dd8 100644 --- a/pkg/machine/e2e/inspect_test.go +++ b/pkg/machine/e2e/inspect_test.go @@ -43,9 +43,11 @@ var _ = Describe("podman machine stop", func() { Expect(foo2).To(Exit(0)) inspect := new(inspectMachine) + inspect = inspect.withFormat("{{.Name}}") inspectSession, err := mb.setName("foo1").setCmd(inspect).run() Expect(err).To(BeNil()) Expect(inspectSession).To(Exit(0)) + Expect(inspectSession.Bytes()).To(ContainSubstring("foo1")) type fakeInfos struct { Status string @@ -56,13 +58,13 @@ var _ = Describe("podman machine stop", func() { Expect(err).ToNot(HaveOccurred()) Expect(len(infos)).To(Equal(2)) - //rm := new(rmMachine) - //// Must manually clean up due to multiple names - //for _, name := range []string{"foo1", "foo2"} { + // rm := new(rmMachine) + // // Must manually clean up due to multiple names + // for _, name := range []string{"foo1", "foo2"} { // mb.setName(name).setCmd(rm.withForce()).run() // mb.names = []string{} - //} - //mb.names = []string{} + // } + // mb.names = []string{} }) }) diff --git a/pkg/machine/e2e/machine_test.go b/pkg/machine/e2e/machine_test.go index 2b3b60b2b..657014b05 100644 --- a/pkg/machine/e2e/machine_test.go +++ b/pkg/machine/e2e/machine_test.go @@ -23,14 +23,20 @@ func TestMain(m *testing.M) { const ( defaultStream string = "podman-testing" - tmpDir string = "/var/tmp" ) var ( + tmpDir = "/var/tmp" fqImageName string suiteImageName string ) +func init() { + if value, ok := os.LookupEnv("TMPDIR"); ok { + tmpDir = value + } +} + // TestLibpod ginkgo master function func TestMachine(t *testing.T) { RegisterFailHandler(Fail) @@ -70,7 +76,8 @@ var _ = SynchronizedAfterSuite(func() {}, }) func setup() (string, *machineTestBuilder) { - homeDir, err := ioutil.TempDir("/var/tmp", "podman_test") + // Set TMPDIR if this needs a new directory + homeDir, err := ioutil.TempDir("", "podman_test") if err != nil { Fail(fmt.Sprintf("failed to create home directory: %q", err)) } diff --git a/pkg/machine/qemu/machine.go b/pkg/machine/qemu/machine.go index 91e15c2af..fe33e580c 100644 --- a/pkg/machine/qemu/machine.go +++ b/pkg/machine/qemu/machine.go @@ -525,10 +525,11 @@ func (v *MachineVM) Start(name string, _ machine.StartOptions) error { time.Sleep(wait) wait++ } - defer qemuSocketConn.Close() if err != nil { return err } + defer qemuSocketConn.Close() + fd, err := qemuSocketConn.(*net.UnixConn).File() if err != nil { return err |