summaryrefslogtreecommitdiff
path: root/cmd/podman/images.go
diff options
context:
space:
mode:
authorbaude <bbaude@redhat.com>2019-02-08 17:09:00 -0600
committerbaude <bbaude@redhat.com>2019-02-08 17:09:00 -0600
commite071ac20f8531a50612c6fd240c90f008a4b2a19 (patch)
tree6ba0251ba7cbb9ec7c3339f793c2491897ff05be /cmd/podman/images.go
parentafd4d5f4a4b05f421e6f336b4d74a0d808be57ed (diff)
downloadpodman-e071ac20f8531a50612c6fd240c90f008a4b2a19.tar.gz
podman-e071ac20f8531a50612c6fd240c90f008a4b2a19.tar.bz2
podman-e071ac20f8531a50612c6fd240c90f008a4b2a19.zip
do not crash when displaying dangling images
the previous method required a populated image template to create the headers and always selected the first image in the slice. when dealing with dangling images, they are not populated and therefore would panic. Resolves: #2246 Signed-off-by: baude <bbaude@redhat.com>
Diffstat (limited to 'cmd/podman/images.go')
-rw-r--r--cmd/podman/images.go13
1 files changed, 8 insertions, 5 deletions
diff --git a/cmd/podman/images.go b/cmd/podman/images.go
index 6afc2d042..6f5a3e9f1 100644
--- a/cmd/podman/images.go
+++ b/cmd/podman/images.go
@@ -305,6 +305,7 @@ func getImagesJSONOutput(ctx context.Context, images []*adapter.ContainerImage)
// generateImagesOutput generates the images based on the format provided
func generateImagesOutput(ctx context.Context, images []*adapter.ContainerImage, opts imagesOptions) error {
+ templateMap := GenImageOutputMap()
if len(images) == 0 {
return nil
}
@@ -316,15 +317,17 @@ func generateImagesOutput(ctx context.Context, images []*adapter.ContainerImage,
out = formats.JSONStructArray{Output: imagesToGeneric([]imagesTemplateParams{}, imagesOutput)}
default:
imagesOutput := getImagesTemplateOutput(ctx, images, opts)
- out = formats.StdoutTemplateArray{Output: imagesToGeneric(imagesOutput, []imagesJSONParams{}), Template: opts.outputformat, Fields: imagesOutput[0].HeaderMap()}
+ out = formats.StdoutTemplateArray{Output: imagesToGeneric(imagesOutput, []imagesJSONParams{}), Template: opts.outputformat, Fields: templateMap}
}
return formats.Writer(out).Out()
}
-// HeaderMap produces a generic map of "headers" based on a line
-// of output
-func (i *imagesTemplateParams) HeaderMap() map[string]string {
- v := reflect.Indirect(reflect.ValueOf(i))
+// GenImageOutputMap generates the map used for outputting the images header
+// without requiring a populated image. This replaces the previous HeaderMap
+// call.
+func GenImageOutputMap() map[string]string {
+ io := imagesTemplateParams{}
+ v := reflect.Indirect(reflect.ValueOf(io))
values := make(map[string]string)
for i := 0; i < v.NumField(); i++ {