MCPcopy
hub / github.com/containerd/containerd / push

Method push

core/transfer/local/push.go:35–112  ·  view source on GitHub ↗
(ctx context.Context, ig transfer.ImageGetter, p transfer.ImagePusher, tops *transfer.Config)

Source from the content-addressed store, hash-verified

33)
34
35func (ts *localTransferService) push(ctx context.Context, ig transfer.ImageGetter, p transfer.ImagePusher, tops *transfer.Config) error {
36 matcher := platforms.All
37 if ipg, ok := ig.(transfer.ImagePlatformsGetter); ok {
38 if ps := ipg.Platforms(); len(ps) > 0 {
39 matcher = platforms.Any(ps...)
40 }
41 }
42
43 img, err := ig.Get(ctx, ts.images)
44 if err != nil {
45 return err
46 }
47
48 if tops.Progress != nil {
49 tops.Progress(transfer.Progress{
50 Event: fmt.Sprintf("Pushing to %s", p),
51 })
52 tops.Progress(transfer.Progress{
53 Event: "pushing content",
54 Name: img.Name,
55 //Digest: img.Target.Digest.String(),
56 Desc: &img.Target,
57 })
58 }
59
60 var pusher remotes.Pusher
61 pusher, err = p.Pusher(ctx, img.Target)
62 if err != nil {
63 return err
64 }
65
66 var wrapper func(images.Handler) images.Handler
67
68 ctx, cancel := context.WithCancel(ctx)
69 if tops.Progress != nil {
70 progressTracker := NewProgressTracker(img.Name, "uploading") //Pass in first name as root
71
72 p := newProgressPusher(pusher, progressTracker)
73 go progressTracker.HandleProgress(ctx, tops.Progress, p)
74 defer progressTracker.Wait()
75 wrapper = p.WrapHandler
76 pusher = p
77 }
78 defer cancel()
79
80 // TODO: Add handler to track parents
81 /*
82 // TODO: Add handlers
83 if len(pushCtx.BaseHandlers) > 0 {
84 wrapper = func(h images.Handler) images.Handler {
85 h = images.Handlers(append(pushCtx.BaseHandlers, h)...)
86 if pushCtx.HandlerWrapper != nil {
87 h = pushCtx.HandlerWrapper(h)
88 }
89 return h
90 }
91 } else if pushCtx.HandlerWrapper != nil {
92 wrapper = pushCtx.HandlerWrapper

Callers 1

TransferMethod · 0.95

Calls 9

HandleProgressMethod · 0.95
WaitMethod · 0.95
PushContentFunction · 0.92
NewProgressTrackerFunction · 0.85
newProgressPusherFunction · 0.85
ProgressMethod · 0.80
PlatformsMethod · 0.65
GetMethod · 0.65
PusherMethod · 0.65

Tested by

no test coverage detected