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

Method Pull

engine/server/resolver/resolver.go:241–377  ·  view source on GitHub ↗
(ctx context.Context, ref string, opts PullOpts)

Source from the content-addressed store, hash-verified

239}
240
241func (r *Resolver) Pull(ctx context.Context, ref string, opts PullOpts) (_ *PulledImage, rerr error) {
242 span, ctx := tracing.StartSpan(ctx, "pulling "+ref, telemetry.Encapsulated())
243 defer func() {
244 tracing.FinishWithError(span, rerr)
245 }()
246
247 platformMatcher := platforms.Only(platforms.Normalize(opts.Platform))
248 if opts.ResolveMode == ResolveModeDefault {
249 if parsed, err := reference.ParseNormalizedNamed(ref); err == nil {
250 if canonical, ok := parsed.(reference.Canonical); ok {
251 rootDesc, found, err := r.localCanonicalRootDescriptor(ctx, canonical.Digest())
252 if err != nil {
253 return nil, err
254 }
255 if found {
256 closure, found, release, err := r.tryLocalCanonicalClosure(ctx, canonical.String(), rootDesc, platformMatcher, opts.LayerLimit)
257 if err != nil {
258 return nil, err
259 }
260 if found {
261 return &PulledImage{
262 Ref: canonical.String(),
263 ManifestDesc: closure.ManifestDesc,
264 ConfigDesc: closure.ConfigDesc,
265 Layers: closure.Layers,
266 Nonlayers: closure.Nonlayers,
267 release: release,
268 }, nil
269 }
270 }
271 }
272 }
273 }
274
275 resolvedRef, rootDesc, resolver, err := r.resolveRemoteRootDescriptor(ctx, ref, opts.Network)
276 if err != nil {
277 return nil, err
278 }
279 fetcher, err := resolver.Fetcher(ctx, resolvedRef)
280 if err != nil {
281 return nil, err
282 }
283 var manifestDesc ocispecs.Descriptor
284 var manifest ocispecs.Manifest
285 if opts.ResolveMode == ResolveModeDefault {
286 metadata, err := r.ensureImageConfigMetadata(ctx, resolvedRef, rootDesc, fetcher, platformMatcher, true)
287 if err != nil {
288 return nil, err
289 }
290 manifestDesc = metadata.manifestDesc
291 manifest = metadata.manifest
292 } else {
293 provider := contentutil.FromFetcher(fetcher)
294 var err error
295 manifestDesc, manifest, err = resolveManifestDescriptor(ctx, provider, rootDesc, platformMatcher, true)
296 if err != nil {
297 return nil, err
298 }

Callers

nothing calls this directly

Calls 13

StartSpanFunction · 0.92
FinishWithErrorFunction · 0.92
FromFetcherFunction · 0.92
hydratePulledDescriptorFunction · 0.85
FetcherMethod · 0.80
DigestMethod · 0.65
StringMethod · 0.65

Tested by

no test coverage detected