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

Method ResolveImageConfig

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

Source from the content-addressed store, hash-verified

153}
154
155func (r *Resolver) ResolveImageConfig(
156 ctx context.Context,
157 ref string,
158 opts ResolveImageConfigOpts,
159) (_ string, _ digest.Digest, _ []byte, rerr error) {
160 span, ctx := tracing.StartSpan(ctx, "resolving "+ref, telemetry.Encapsulated())
161 defer func() {
162 tracing.FinishWithError(span, rerr)
163 }()
164
165 key := ref
166 if opts.Platform != nil {
167 key += platforms.Format(platforms.Normalize(*opts.Platform))
168 }
169 key += fmt.Sprintf(":%d", opts.ResolveMode)
170
171 resolve := func(ctx context.Context) (*resolveImageConfigResult, error) {
172 if opts.ResolveMode == ResolveModeDefault {
173 if resolvedRef, dgst, configBytes, found, err := r.tryLocalCanonicalConfig(ctx, ref, opts); err != nil {
174 return nil, err
175 } else if found {
176 return &resolveImageConfigResult{
177 ref: resolvedRef,
178 digest: dgst,
179 config: configBytes,
180 }, nil
181 }
182 }
183
184 resolvedRef, rootDesc, resolver, err := r.resolveRemoteRootDescriptor(ctx, ref, opts.Network)
185 if err != nil {
186 return nil, err
187 }
188 fetcher, err := resolver.Fetcher(ctx, resolvedRef)
189 if err != nil {
190 return nil, err
191 }
192
193 platformMatcher := imageConfigPlatformMatcher(opts.Platform)
194 if opts.ResolveMode == ResolveModeDefault {
195 metadata, err := r.ensureImageConfigMetadata(ctx, resolvedRef, rootDesc, fetcher, platformMatcher, false)
196 if err != nil {
197 return nil, err
198 }
199 return &resolveImageConfigResult{
200 ref: resolvedRef,
201 digest: rootDesc.Digest,
202 config: metadata.configBytes,
203 }, nil
204 }
205
206 provider := contentutil.FromFetcher(fetcher)
207 configDesc, err := images.Config(ctx, provider, rootDesc, platformMatcher)
208 if err != nil {
209 return nil, err
210 }
211 configBytes, err := content.ReadBlob(ctx, provider, configDesc)
212 if err != nil {

Callers

nothing calls this directly

Calls 11

StartSpanFunction · 0.92
FinishWithErrorFunction · 0.92
FromFetcherFunction · 0.92
FetcherMethod · 0.80
ConfigMethod · 0.65
FormatMethod · 0.45
DoMethod · 0.45

Tested by

no test coverage detected