mirror of
https://github.com/containers/podman.git
synced 2025-06-22 01:48:54 +08:00
create: do not calculate image size
calculating the image size can be an expensive operation. Avoid doing it when creating a new container since the size is not needed. Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
This commit is contained in:
@ -101,7 +101,7 @@ func CreateContainer(ctx context.Context, c *GenericCLIResults, runtime *libpod.
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
imageData, err = newImage.Inspect(ctx)
|
imageData, err = newImage.InspectNoSize(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
@ -916,12 +916,7 @@ func (i *Image) imageInspectInfo(ctx context.Context) (*types.ImageInspectInfo,
|
|||||||
return i.inspectInfo, nil
|
return i.inspectInfo, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Inspect returns an image's inspect data
|
func (i *Image) inspect(ctx context.Context, calculateSize bool) (*inspect.ImageData, error) {
|
||||||
func (i *Image) Inspect(ctx context.Context) (*inspect.ImageData, error) {
|
|
||||||
span, _ := opentracing.StartSpanFromContext(ctx, "imageInspect")
|
|
||||||
span.SetTag("type", "image")
|
|
||||||
defer span.Finish()
|
|
||||||
|
|
||||||
ociv1Img, err := i.ociv1Image(ctx)
|
ociv1Img, err := i.ociv1Image(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ociv1Img = &ociv1.Image{}
|
ociv1Img = &ociv1.Image{}
|
||||||
@ -936,8 +931,10 @@ func (i *Image) Inspect(ctx context.Context) (*inspect.ImageData, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
size := int64(-1)
|
size := int64(-1)
|
||||||
if usize, err := i.Size(ctx); err == nil {
|
if calculateSize {
|
||||||
size = int64(*usize)
|
if usize, err := i.Size(ctx); err == nil {
|
||||||
|
size = int64(*usize)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
repoTags, err := i.RepoTags()
|
repoTags, err := i.RepoTags()
|
||||||
@ -1002,6 +999,26 @@ func (i *Image) Inspect(ctx context.Context) (*inspect.ImageData, error) {
|
|||||||
return data, nil
|
return data, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Inspect returns an image's inspect data
|
||||||
|
func (i *Image) Inspect(ctx context.Context) (*inspect.ImageData, error) {
|
||||||
|
span, _ := opentracing.StartSpanFromContext(ctx, "imageInspect")
|
||||||
|
|
||||||
|
span.SetTag("type", "image")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
return i.inspect(ctx, true)
|
||||||
|
}
|
||||||
|
|
||||||
|
// InspectNoSize returns an image's inspect data without calculating the size for the image
|
||||||
|
func (i *Image) InspectNoSize(ctx context.Context) (*inspect.ImageData, error) {
|
||||||
|
span, _ := opentracing.StartSpanFromContext(ctx, "imageInspectNoSize")
|
||||||
|
|
||||||
|
span.SetTag("type", "image")
|
||||||
|
defer span.Finish()
|
||||||
|
|
||||||
|
return i.inspect(ctx, false)
|
||||||
|
}
|
||||||
|
|
||||||
// Import imports and image into the store and returns an image
|
// Import imports and image into the store and returns an image
|
||||||
func (ir *Runtime) Import(ctx context.Context, path, reference string, writer io.Writer, signingOptions SigningOptions, imageConfig ociv1.Image) (*Image, error) {
|
func (ir *Runtime) Import(ctx context.Context, path, reference string, writer io.Writer, signingOptions SigningOptions, imageConfig ociv1.Image) (*Image, error) {
|
||||||
src, err := tarball.Transport.ParseReference(path)
|
src, err := tarball.Transport.ParseReference(path)
|
||||||
|
@ -147,7 +147,7 @@ func (r *Runtime) createInfraContainer(ctx context.Context, p *Pod) (*Container,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
data, err := newImage.Inspect(ctx)
|
data, err := newImage.InspectNoSize(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user