From 686b7ef7bf5b60c50b45307d548518c9709da87e Mon Sep 17 00:00:00 2001 From: Valentin Rothberg Date: Thu, 30 Sep 2021 16:42:45 +0200 Subject: pkg/specgen: cache image in generator To prevent expensive redundant lookups and inspects on the same image, cache the image in the generator. Note that once a given image has been inspected, subsequent calls will use the libimage-internal cache. [NO TESTS NEEDED] since it is no functional change. Signed-off-by: Valentin Rothberg --- pkg/specgen/generate/container_create.go | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'pkg/specgen/generate/container_create.go') diff --git a/pkg/specgen/generate/container_create.go b/pkg/specgen/generate/container_create.go index 6100e7a5b..d0db9f35d 100644 --- a/pkg/specgen/generate/container_create.go +++ b/pkg/specgen/generate/container_create.go @@ -102,20 +102,15 @@ func MakeContainer(ctx context.Context, rt *libpod.Runtime, s *specgen.SpecGener options = append(options, libpod.WithCreateCommand(s.ContainerCreateCommand)) } - var newImage *libimage.Image - var imageData *libimage.ImageData if s.Rootfs != "" { options = append(options, libpod.WithRootFS(s.Rootfs, s.RootfsOverlay)) - } else { - var resolvedImageName string - newImage, resolvedImageName, err = rt.LibimageRuntime().LookupImage(s.Image, nil) - if err != nil { - return nil, nil, nil, err - } - imageData, err = newImage.Inspect(ctx, false) - if err != nil { - return nil, nil, nil, err - } + } + + newImage, resolvedImageName, imageData, err := getImageFromSpec(ctx, rt, s) + if err != nil { + return nil, nil, nil, err + } + if newImage != nil { // If the input name changed, we could properly resolve the // image. Otherwise, it must have been an ID where we're // defaulting to the first name or an empty one if no names are -- cgit v1.2.3-54-g00ecf