Skip to content

Commit

Permalink
Ensure that image/container inspect are specialized
Browse files Browse the repository at this point in the history
We are currently able to inspect images with
`podman container inspect` and containers with
`podman image inspect` and neither of those seem correct. This
ensures that the appropriate flags, and only the appropriate
flags, are available for each specialized exec, and they can only
inspect the specific type they were intended to.

Signed-off-by: Matthew Heon <[email protected]>
  • Loading branch information
mheon committed Jun 3, 2020
1 parent cbfb498 commit d505989
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 3 deletions.
8 changes: 7 additions & 1 deletion cmd/podman/containers/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,15 @@ func init() {
Command: inspectCmd,
Parent: containerCmd,
})
inspectOpts = inspect.AddInspectFlagSet(inspectCmd)
inspectOpts = new(entities.InspectOptions)
flags := inspectCmd.Flags()
flags.BoolVarP(&inspectOpts.Size, "size", "s", false, "Display total file size")
flags.StringVarP(&inspectOpts.Format, "format", "f", "json", "Format the output to a Go template or json")
flags.BoolVarP(&inspectOpts.Latest, "latest", "l", false, "Act on the latest container Podman is aware of")
}

func inspectExec(cmd *cobra.Command, args []string) error {
// Force container type
inspectOpts.Type = inspect.ContainerType
return inspect.Inspect(args, *inspectOpts)
}
5 changes: 3 additions & 2 deletions cmd/podman/images/inspect.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,12 @@ func init() {
Command: inspectCmd,
Parent: imageCmd,
})
inspectOpts = inspect.AddInspectFlagSet(inspectCmd)
inspectOpts = new(entities.InspectOptions)
flags := inspectCmd.Flags()
_ = flags.MarkHidden("latest") // Shared with container-inspect but not wanted here.
flags.StringVarP(&inspectOpts.Format, "format", "f", "json", "Format the output to a Go template or json")
}

func inspectExec(cmd *cobra.Command, args []string) error {
inspectOpts.Type = inspect.ImageType
return inspect.Inspect(args, *inspectOpts)
}
45 changes: 45 additions & 0 deletions test/e2e/inspect_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,4 +179,49 @@ var _ = Describe("Podman inspect", func() {
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Not(Equal(0)))
})

It("podman [image,container] inspect on image", func() {
baseInspect := podmanTest.Podman([]string{"inspect", ALPINE})
baseInspect.WaitWithDefaultTimeout()
Expect(baseInspect.ExitCode()).To(Equal(0))
baseJSON := baseInspect.InspectImageJSON()
Expect(len(baseJSON)).To(Equal(1))

ctrInspect := podmanTest.Podman([]string{"container", "inspect", ALPINE})
ctrInspect.WaitWithDefaultTimeout()
Expect(ctrInspect.ExitCode()).To(Not(Equal(0)))

imageInspect := podmanTest.Podman([]string{"image", "inspect", ALPINE})
imageInspect.WaitWithDefaultTimeout()
Expect(imageInspect.ExitCode()).To(Equal(0))
imageJSON := imageInspect.InspectImageJSON()
Expect(len(imageJSON)).To(Equal(1))

Expect(baseJSON[0].ID).To(Equal(imageJSON[0].ID))
})

It("podman [image, container] inspect on container", func() {
ctrName := "testCtr"
create := podmanTest.Podman([]string{"create", "--name", ctrName, ALPINE, "sh"})
create.WaitWithDefaultTimeout()
Expect(create.ExitCode()).To(Equal(0))

baseInspect := podmanTest.Podman([]string{"inspect", ctrName})
baseInspect.WaitWithDefaultTimeout()
Expect(baseInspect.ExitCode()).To(Equal(0))
baseJSON := baseInspect.InspectContainerToJSON()
Expect(len(baseJSON)).To(Equal(1))

ctrInspect := podmanTest.Podman([]string{"container", "inspect", ctrName})
ctrInspect.WaitWithDefaultTimeout()
Expect(ctrInspect.ExitCode()).To(Equal(0))
ctrJSON := ctrInspect.InspectContainerToJSON()
Expect(len(ctrJSON)).To(Equal(1))

imageInspect := podmanTest.Podman([]string{"image", "inspect", ctrName})
imageInspect.WaitWithDefaultTimeout()
Expect(imageInspect.ExitCode()).To(Not(Equal(0)))

Expect(baseJSON[0].ID).To(Equal(ctrJSON[0].ID))
})
})

0 comments on commit d505989

Please sign in to comment.