MCPcopy Create free account
hub / github.com/containers/common / storageReferencesReferencesFromArchiveReader

Method storageReferencesReferencesFromArchiveReader

libimage/pull.go:271–308  ·  view source on GitHub ↗

storageReferencesFromArchiveReader returns a slice of image references inside the archive reader. A docker archive may include more than one image and this method allows for extracting them into containers storage references which can later be used from copying.

(ctx context.Context, readerRef types.ImageReference, reader *dockerArchiveTransport.Reader)

Source from the content-addressed store, hash-verified

269// method allows for extracting them into containers storage references which
270// can later be used from copying.
271func (r *Runtime) storageReferencesReferencesFromArchiveReader(ctx context.Context, readerRef types.ImageReference, reader *dockerArchiveTransport.Reader) ([]types.ImageReference, []string, error) {
272 destNames, err := reader.ManifestTagsForReference(readerRef)
273 if err != nil {
274 return nil, nil, err
275 }
276
277 var imageNames []string
278 if len(destNames) == 0 {
279 destName, err := getImageID(ctx, readerRef, &r.systemContext)
280 if err != nil {
281 return nil, nil, err
282 }
283 destNames = append(destNames, destName)
284 // Make sure the image can be loaded after the pull by
285 // replacing the @ with sha256:.
286 imageNames = append(imageNames, "sha256:"+destName[1:])
287 } else {
288 for i := range destNames {
289 ref, err := NormalizeName(destNames[i])
290 if err != nil {
291 return nil, nil, err
292 }
293 destNames[i] = ref.String()
294 }
295 imageNames = destNames
296 }
297
298 references := []types.ImageReference{}
299 for _, destName := range destNames {
300 destRef, err := storageTransport.Transport.ParseStoreReference(r.store, destName)
301 if err != nil {
302 return nil, nil, errors.Wrapf(err, "error parsing dest reference name %#v", destName)
303 }
304 references = append(references, destRef)
305 }
306
307 return references, imageNames, nil
308}
309
310// copyFromDockerArchive copies one image from the specified reference.
311func (r *Runtime) copyFromDockerArchive(ctx context.Context, ref types.ImageReference, options *CopyOptions) ([]string, error) {

Calls 3

getImageIDFunction · 0.85
NormalizeNameFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected