mirror of
https://github.com/containers/podman.git
synced 2025-06-19 00:06:43 +08:00
Ensure that image/container inspect are specialized
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 <matthew.heon@pm.me>
This commit is contained in:
@ -26,9 +26,15 @@ func init() {
|
|||||||
Command: inspectCmd,
|
Command: inspectCmd,
|
||||||
Parent: containerCmd,
|
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 {
|
func inspectExec(cmd *cobra.Command, args []string) error {
|
||||||
|
// Force container type
|
||||||
|
inspectOpts.Type = inspect.ContainerType
|
||||||
return inspect.Inspect(args, *inspectOpts)
|
return inspect.Inspect(args, *inspectOpts)
|
||||||
}
|
}
|
||||||
|
@ -27,11 +27,12 @@ func init() {
|
|||||||
Command: inspectCmd,
|
Command: inspectCmd,
|
||||||
Parent: imageCmd,
|
Parent: imageCmd,
|
||||||
})
|
})
|
||||||
inspectOpts = inspect.AddInspectFlagSet(inspectCmd)
|
inspectOpts = new(entities.InspectOptions)
|
||||||
flags := inspectCmd.Flags()
|
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 {
|
func inspectExec(cmd *cobra.Command, args []string) error {
|
||||||
|
inspectOpts.Type = inspect.ImageType
|
||||||
return inspect.Inspect(args, *inspectOpts)
|
return inspect.Inspect(args, *inspectOpts)
|
||||||
}
|
}
|
||||||
|
@ -179,4 +179,49 @@ var _ = Describe("Podman inspect", func() {
|
|||||||
session.WaitWithDefaultTimeout()
|
session.WaitWithDefaultTimeout()
|
||||||
Expect(session.ExitCode()).To(Not(Equal(0)))
|
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))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user