Skip to content

Commit cd02ea8

Browse files
committed
exporter: simplify unlazy references to reduce duplication
Signed-off-by: Justin Chadwell <[email protected]>
1 parent cdf28d6 commit cd02ea8

File tree

2 files changed

+27
-51
lines changed

2 files changed

+27
-51
lines changed

exporter/containerimage/export.go

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -277,8 +277,15 @@ func (e *imageExporterInstance) Export(ctx context.Context, src *exporter.Source
277277
}
278278

279279
if !e.storeAllowIncomplete {
280+
var refs []cache.ImmutableRef
280281
if src.Ref != nil {
281-
remotes, err := src.Ref.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
282+
refs = append(refs, src.Ref)
283+
}
284+
for _, ref := range src.Refs {
285+
refs = append(refs, ref)
286+
}
287+
for _, ref := range refs {
288+
remotes, err := ref.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
282289
if err != nil {
283290
return nil, nil, err
284291
}
@@ -289,20 +296,6 @@ func (e *imageExporterInstance) Export(ctx context.Context, src *exporter.Source
289296
}
290297
}
291298
}
292-
if len(src.Refs) > 0 {
293-
for _, r := range src.Refs {
294-
remotes, err := r.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
295-
if err != nil {
296-
return nil, nil, err
297-
}
298-
remote := remotes[0]
299-
if unlazier, ok := remote.Provider.(cache.Unlazier); ok {
300-
if err := unlazier.Unlazy(ctx); err != nil {
301-
return nil, nil, err
302-
}
303-
}
304-
}
305-
}
306299
}
307300
}
308301
if e.push {
@@ -331,10 +324,18 @@ func (e *imageExporterInstance) Export(ctx context.Context, src *exporter.Source
331324
}
332325

333326
func (e *imageExporterInstance) pushImage(ctx context.Context, src *exporter.Source, sessionID string, targetName string, dgst digest.Digest) error {
327+
var refs []cache.ImmutableRef
328+
if src.Ref != nil {
329+
refs = append(refs, src.Ref)
330+
}
331+
for _, ref := range src.Refs {
332+
refs = append(refs, ref)
333+
}
334+
334335
annotations := map[digest.Digest]map[string]string{}
335336
mprovider := contentutil.NewMultiProvider(e.opt.ImageWriter.ContentStore())
336-
if src.Ref != nil {
337-
remotes, err := src.Ref.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
337+
for _, ref := range refs {
338+
remotes, err := ref.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
338339
if err != nil {
339340
return err
340341
}
@@ -344,19 +345,6 @@ func (e *imageExporterInstance) pushImage(ctx context.Context, src *exporter.Sou
344345
addAnnotations(annotations, desc)
345346
}
346347
}
347-
if len(src.Refs) > 0 {
348-
for _, r := range src.Refs {
349-
remotes, err := r.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
350-
if err != nil {
351-
return err
352-
}
353-
remote := remotes[0]
354-
for _, desc := range remote.Descriptors {
355-
mprovider.Add(desc.Digest, remote.Provider)
356-
addAnnotations(annotations, desc)
357-
}
358-
}
359-
}
360348
return push.Push(ctx, e.opt.SessionManager, sessionID, mprovider, e.opt.ImageWriter.ContentStore(), dgst, targetName, e.insecure, e.opt.RegistryHosts, e.pushByDigest, annotations)
361349
}
362350

exporter/oci/export.go

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -205,15 +205,20 @@ func (e *imageExporterInstance) Export(ctx context.Context, src *exporter.Source
205205
return nil, nil, err
206206
}
207207

208-
mprovider := contentutil.NewMultiProvider(e.opt.ImageWriter.ContentStore())
208+
var refs []cache.ImmutableRef
209209
if src.Ref != nil {
210-
remotes, err := src.Ref.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
210+
refs = append(refs, src.Ref)
211+
}
212+
for _, ref := range src.Refs {
213+
refs = append(refs, ref)
214+
}
215+
mprovider := contentutil.NewMultiProvider(e.opt.ImageWriter.ContentStore())
216+
for _, ref := range refs {
217+
remotes, err := ref.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
211218
if err != nil {
212219
return nil, nil, err
213220
}
214221
remote := remotes[0]
215-
// unlazy before tar export as the tar writer does not handle
216-
// layer blobs in parallel (whereas unlazy does)
217222
if unlazier, ok := remote.Provider.(cache.Unlazier); ok {
218223
if err := unlazier.Unlazy(ctx); err != nil {
219224
return nil, nil, err
@@ -223,23 +228,6 @@ func (e *imageExporterInstance) Export(ctx context.Context, src *exporter.Source
223228
mprovider.Add(desc.Digest, remote.Provider)
224229
}
225230
}
226-
if len(src.Refs) > 0 {
227-
for _, r := range src.Refs {
228-
remotes, err := r.GetRemotes(ctx, false, e.opts.RefCfg, false, session.NewGroup(sessionID))
229-
if err != nil {
230-
return nil, nil, err
231-
}
232-
remote := remotes[0]
233-
if unlazier, ok := remote.Provider.(cache.Unlazier); ok {
234-
if err := unlazier.Unlazy(ctx); err != nil {
235-
return nil, nil, err
236-
}
237-
}
238-
for _, desc := range remote.Descriptors {
239-
mprovider.Add(desc.Digest, remote.Provider)
240-
}
241-
}
242-
}
243231

244232
if e.tar {
245233
w, err := filesync.CopyFileWriter(ctx, resp, caller)

0 commit comments

Comments
 (0)