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:
		
							parent
							
								
									cbfb4980ce
								
							
						
					
					
						commit
						d505989b0e
					
				|  | @ -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)) | ||||||
|  | 	}) | ||||||
| }) | }) | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue