MCPcopy
hub / github.com/containerd/containerd / UnmarshalAny

Method UnmarshalAny

core/transfer/registry/registry.go:351–432  ·  view source on GitHub ↗
(ctx context.Context, sm streaming.StreamGetter, a typeurl.Any)

Source from the content-addressed store, hash-verified

349}
350
351func (r *OCIRegistry) UnmarshalAny(ctx context.Context, sm streaming.StreamGetter, a typeurl.Any) error {
352 var s transfertypes.OCIRegistry
353 if err := typeurl.UnmarshalTo(a, &s); err != nil {
354 return err
355 }
356
357 hostOptions := config.HostOptions{}
358 if s.Resolver != nil {
359 if s.Resolver.HostDir != "" {
360 hostOptions.HostDir = config.HostDirFromRoot(s.Resolver.HostDir)
361 }
362 if s.Resolver.DefaultScheme != "" {
363 hostOptions.DefaultScheme = s.Resolver.DefaultScheme
364 }
365 if sid := s.Resolver.AuthStream; sid != "" {
366 stream, err := sm.Get(ctx, sid)
367 if err != nil {
368 log.G(ctx).WithError(err).WithField("stream", sid).Debug("failed to get auth stream")
369 return err
370 }
371 r.creds = &credCallback{
372 stream: stream,
373 }
374 hostOptions.Credentials = func(host string) (string, string, error) {
375 c, err := r.creds.GetCredentials(context.Background(), s.Reference, host)
376 if err != nil {
377 return "", "", err
378 }
379
380 return c.Username, c.Secret, nil
381 }
382 }
383 r.headers = http.Header{}
384 for k, v := range s.Resolver.Headers {
385 r.headers.Add(k, v)
386 }
387
388 if s.Resolver.HttpDebug != transfertypes.HTTPDebug_DISABLED {
389 var writer io.WriteCloser
390
391 // Stream to local client.
392 if sid := s.Resolver.LogsStream; sid != "" {
393 stream, err := sm.Get(ctx, sid)
394 if err != nil {
395 return fmt.Errorf("failed to get stream for HTTP debug logs: %w", err)
396 }
397
398 writer = tstreaming.WriteByteStream(ctx, stream)
399 } else {
400 writer = log.G(ctx).Writer()
401 }
402
403 go func() {
404 <-ctx.Done()
405 if err := writer.Close(); err != nil {
406 log.G(ctx).Errorf("failed to close HTTP debug logs stream: %v", err)
407 }
408 }()

Callers

nothing calls this directly

Calls 11

HostDirFromRootFunction · 0.92
DumpRequestsFunction · 0.92
DumpTracesFunction · 0.92
NewResolverFunction · 0.92
ConfigureHostsFunction · 0.92
GetMethod · 0.65
GetCredentialsMethod · 0.65
AddMethod · 0.65
WriterMethod · 0.65
DoneMethod · 0.65
CloseMethod · 0.65

Tested by

no test coverage detected