Just a refactor of the previous commit to reduce duplication.
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
| ... | ... |
@@ -143,21 +143,6 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, p |
| 143 | 143 |
realStore := store |
| 144 | 144 |
wrapped := wrapWithFakeMountableBlobs(store, mountableBlobs) |
| 145 | 145 |
store = wrapped |
| 146 |
- |
|
| 147 |
- // Annotate ref with digest to push only push tag for single digest |
|
| 148 |
- ref := targetRef |
|
| 149 |
- if _, digested := ref.(reference.Digested); !digested {
|
|
| 150 |
- ref, err = reference.WithDigest(ref, target.Digest) |
|
| 151 |
- if err != nil {
|
|
| 152 |
- return err |
|
| 153 |
- } |
|
| 154 |
- } |
|
| 155 |
- |
|
| 156 |
- pusher, err := resolver.Pusher(ctx, ref.String()) |
|
| 157 |
- if err != nil {
|
|
| 158 |
- return err |
|
| 159 |
- } |
|
| 160 |
- |
|
| 161 | 146 |
addLayerJobs := c8dimages.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
|
| 162 | 147 |
if showBlobProgress(desc) {
|
| 163 | 148 |
jobsQueue.Add(desc) |
| ... | ... |
@@ -170,7 +155,25 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, p |
| 170 | 170 |
return c8dimages.Handlers(addLayerJobs, h) |
| 171 | 171 |
} |
| 172 | 172 |
|
| 173 |
- err = remotes.PushContent(ctx, pusher, target, store, limiter, platforms.All, handlerWrapper) |
|
| 173 |
+ push := func(ctx context.Context, desc ocispec.Descriptor) error {
|
|
| 174 |
+ ref := targetRef |
|
| 175 |
+ |
|
| 176 |
+ if _, digested := ref.(reference.Digested); !digested {
|
|
| 177 |
+ // Annotate ref with digest to push only push tag for single digest |
|
| 178 |
+ ref, err = reference.WithDigest(ref, target.Digest) |
|
| 179 |
+ if err != nil {
|
|
| 180 |
+ return err |
|
| 181 |
+ } |
|
| 182 |
+ } |
|
| 183 |
+ pusher, err := resolver.Pusher(ctx, ref.String()) |
|
| 184 |
+ if err != nil {
|
|
| 185 |
+ return err |
|
| 186 |
+ } |
|
| 187 |
+ |
|
| 188 |
+ return remotes.PushContent(ctx, pusher, desc, store, limiter, platforms.All, handlerWrapper) |
|
| 189 |
+ } |
|
| 190 |
+ |
|
| 191 |
+ err = push(ctx, target) |
|
| 174 | 192 |
if err != nil {
|
| 175 | 193 |
// If push failed because of a missing content, no specific platform was requested |
| 176 | 194 |
// and the target is an index, select a platform-specific manifest to push instead. |
| ... | ... |
@@ -186,20 +189,7 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, p |
| 186 | 186 |
orgTarget := target |
| 187 | 187 |
target = newTarget |
| 188 | 188 |
pp.TurnNotStartedIntoUnavailable() |
| 189 |
- |
|
| 190 |
- // Annotate ref with digest to push only push tag for single digest |
|
| 191 |
- ref := targetRef |
|
| 192 |
- if _, digested := ref.(reference.Digested); !digested {
|
|
| 193 |
- ref, err = reference.WithDigest(ref, target.Digest) |
|
| 194 |
- if err != nil {
|
|
| 195 |
- return err |
|
| 196 |
- } |
|
| 197 |
- } |
|
| 198 |
- pusher, err := resolver.Pusher(ctx, ref.String()) |
|
| 199 |
- if err != nil {
|
|
| 200 |
- return err |
|
| 201 |
- } |
|
| 202 |
- err = remotes.PushContent(ctx, pusher, target, store, limiter, platforms.All, handlerWrapper) |
|
| 189 |
+ err = push(ctx, target) |
|
| 203 | 190 |
|
| 204 | 191 |
if err == nil {
|
| 205 | 192 |
progress.Aux(out, auxprogress.ManifestPushedInsteadOfIndex{
|