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

Method ensureImageConfigMetadata

engine/server/resolver/metadata.go:86–158  ·  view source on GitHub ↗
(
	ctx context.Context,
	resolvedRef string,
	rootDesc ocispecs.Descriptor,
	fetcher remotes.Fetcher,
	matcher platforms.MatchComparer,
	checkRootManifestPlatform bool,
)

Source from the content-addressed store, hash-verified

84}
85
86func (r *Resolver) ensureImageConfigMetadata(
87 ctx context.Context,
88 resolvedRef string,
89 rootDesc ocispecs.Descriptor,
90 fetcher remotes.Fetcher,
91 matcher platforms.MatchComparer,
92 checkRootManifestPlatform bool,
93) (_ *imageConfigMetadata, rerr error) {
94 ctx = contentutil.RegisterContentPayloadTypes(ctx)
95 leaseCtx, release, err := bkcache.WithLease(ctx, r.leaseManager, leases.WithExpiration(imageMetadataLeaseTTL), bkcache.MakeTemporary)
96 if err != nil {
97 return nil, err
98 }
99 success := false
100 defer func() {
101 if !success {
102 _ = release(context.WithoutCancel(leaseCtx))
103 }
104 }()
105
106 sourceLabelHandler, err := docker.AppendDistributionSourceLabel(r.contentStore, resolvedRef)
107 if err != nil {
108 return nil, err
109 }
110
111 var metadataMu sync.Mutex
112 var metadataDescs []ocispecs.Descriptor
113 recordMetadata := images.HandlerFunc(func(ctx context.Context, desc ocispecs.Descriptor) ([]ocispecs.Descriptor, error) {
114 if !images.IsLayerType(desc.MediaType) {
115 metadataMu.Lock()
116 metadataDescs = append(metadataDescs, desc)
117 metadataMu.Unlock()
118 }
119 return nil, nil
120 })
121
122 fetchHandler := remotes.FetchHandler(r.contentStore, fetcher)
123 fetchMetadata := images.HandlerFunc(func(ctx context.Context, desc ocispecs.Descriptor) ([]ocispecs.Descriptor, error) {
124 if images.IsLayerType(desc.MediaType) {
125 return nil, images.ErrSkipDesc
126 }
127 return fetchHandler(ctx, desc)
128 })
129
130 handler := images.Handlers(
131 recordMetadata,
132 fetchMetadata,
133 sourceLabelHandler,
134 imageConfigMetadataChildrenHandler(r.contentStore, matcher),
135 )
136 if err := images.Dispatch(leaseCtx, handler, nil, rootDesc); err != nil {
137 return nil, err
138 }
139 if err := r.attachContentToLease(leaseCtx, metadataDescs); err != nil {
140 return nil, err
141 }
142
143 manifestDesc, manifest, err := resolveManifestDescriptor(leaseCtx, r.contentStore, rootDesc, matcher, checkRootManifestPlatform)

Callers 2

ResolveImageConfigMethod · 0.95
PullMethod · 0.95

Tested by

no test coverage detected