MCPcopy Create free account
hub / github.com/dagger/dagger / tryLocalCanonicalConfigMetadata

Method tryLocalCanonicalConfigMetadata

engine/server/resolver/metadata.go:42–84  ·  view source on GitHub ↗
(
	ctx context.Context,
	ref string,
	opts ResolveImageConfigOpts,
)

Source from the content-addressed store, hash-verified

40}
41
42func (r *Resolver) tryLocalCanonicalConfigMetadata(
43 ctx context.Context,
44 ref string,
45 opts ResolveImageConfigOpts,
46) (string, digest.Digest, []byte, bool, error) {
47 parsed, err := reference.ParseNormalizedNamed(ref)
48 if err != nil {
49 return "", "", nil, false, nil //nolint:nilerr // Invalid refs are not local-cache hits; the remote resolver reports the real error.
50 }
51 canonical, ok := parsed.(reference.Canonical)
52 if !ok {
53 return "", "", nil, false, nil
54 }
55
56 rootDesc, found, err := r.localCanonicalRootDescriptor(ctx, canonical.Digest())
57 if err != nil || !found {
58 return "", "", nil, found, err
59 }
60
61 manifestDesc, manifest, found, err := tryResolveLocalManifestDescriptor(ctx, r.contentStore, rootDesc, imageConfigPlatformMatcher(opts.Platform), false)
62 if err != nil || !found {
63 return "", "", nil, false, err
64 }
65
66 configBytes, err := content.ReadBlob(ctx, r.contentStore, manifest.Config)
67 if err != nil {
68 if cerrdefs.IsNotFound(err) {
69 return "", "", nil, false, nil
70 }
71 return "", "", nil, false, err
72 }
73
74 refspec, err := ctdreference.Parse(canonical.String())
75 if err != nil {
76 return "", "", nil, false, err
77 }
78 ok, err = r.localMetadataHasMatchingSource(ctx, refspec, rootDesc, manifestDesc, manifest.Config)
79 if err != nil || !ok {
80 return "", "", nil, false, err
81 }
82
83 return canonical.String(), rootDesc.Digest, configBytes, true, nil
84}
85
86func (r *Resolver) ensureImageConfigMetadata(
87 ctx context.Context,

Callers 1

Calls 7

ParseMethod · 0.80
DigestMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected