MCPcopy Create free account
hub / github.com/linuxkit/linuxkit / ImageInCache

Method ImageInCache

src/cmd/linuxkit/cache/write.go:385–420  ·  view source on GitHub ↗
(ref *reference.Spec, trustedRef, architecture string)

Source from the content-addressed store, hash-verified

383}
384
385func (p *Provider) ImageInCache(ref *reference.Spec, trustedRef, architecture string) (bool, error) {
386 img, err := p.findImage(ref.String(), imagespec.Platform{OS: linux, Architecture: architecture})
387 if err != nil {
388 return false, err
389 }
390 // findImage only checks if we had the pointer to it; it does not check if it is complete.
391 // We need to do that next.
392
393 // check that all of the layers exist
394 layers, err := img.Layers()
395 if err != nil {
396 return false, fmt.Errorf("layers not found: %v", err)
397 }
398 for _, layer := range layers {
399 dig, err := layer.Digest()
400 if err != nil {
401 return false, fmt.Errorf("unable to get digest of layer: %v", err)
402 }
403 var rc io.ReadCloser
404 if rc, err = p.cache.Blob(dig); err != nil {
405 return false, fmt.Errorf("layer %s not found: %v", dig, err)
406 }
407 _ = rc.Close()
408 }
409 // check that the config exists
410 config, err := img.ConfigName()
411 if err != nil {
412 return false, fmt.Errorf("unable to get config: %v", err)
413 }
414 var rc io.ReadCloser
415 if rc, err = p.cache.Blob(config); err != nil {
416 return false, fmt.Errorf("config %s not found: %v", config, err)
417 }
418 _ = rc.Close()
419 return true, nil
420}
421
422// ImageInRegistry takes an image name and checks that the image manifest or index to which it refers
423// exists in the registry.

Callers

nothing calls this directly

Implementers 11

ProviderCDROMpkg/metadata/provider_cdrom.go
ProviderGCPpkg/metadata/provider_gcp.go
ProviderVMwarepkg/metadata/provider_vmware_unsupport
ProviderEquinixMetalpkg/metadata/provider_equinixmetal.go
ProviderVultrpkg/metadata/provider_vultr.go
ProviderDigitalOceanpkg/metadata/provider_digitalocean.go
ProviderHetznerpkg/metadata/provider_hetzner.go
ProviderMetaldatapkg/metadata/provider_metaldata.go
ProviderOpenstackpkg/metadata/provider_openstack.go
ProviderScalewaypkg/metadata/provider_scaleway.go
ProviderAWSpkg/metadata/provider_aws.go

Calls 4

findImageMethod · 0.95
StringMethod · 0.65
DigestMethod · 0.65
CloseMethod · 0.45

Tested by

no test coverage detected