Browse code

daemon: Pass ctx to image tagging operations

Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>

Nicolas De Loof authored on 2022/07/11 17:58:39
Showing 9 changed files
... ...
@@ -21,7 +21,7 @@ import (
21 21
 // ImageComponent provides an interface for working with images
22 22
 type ImageComponent interface {
23 23
 	SquashImage(from string, to string) (string, error)
24
-	TagImageWithReference(image.ID, reference.Named) error
24
+	TagImageWithReference(context.Context, image.ID, reference.Named) error
25 25
 }
26 26
 
27 27
 // Builder defines interface for running a build
... ...
@@ -93,7 +93,7 @@ func (b *Backend) Build(ctx context.Context, config backend.BuildConfig) (string
93 93
 		fmt.Fprintf(stdout, "Successfully built %s\n", stringid.TruncateID(imageID))
94 94
 	}
95 95
 	if imageID != "" {
96
-		err = tagImages(b.imageComponent, config.ProgressWriter.StdoutFormatter, image.ID(imageID), tags)
96
+		err = tagImages(ctx, b.imageComponent, config.ProgressWriter.StdoutFormatter, image.ID(imageID), tags)
97 97
 	}
98 98
 	return imageID, err
99 99
 }
... ...
@@ -1,6 +1,7 @@
1 1
 package build // import "github.com/docker/docker/api/server/backend/build"
2 2
 
3 3
 import (
4
+	"context"
4 5
 	"fmt"
5 6
 	"io"
6 7
 
... ...
@@ -10,9 +11,9 @@ import (
10 10
 )
11 11
 
12 12
 // tagImages creates image tags for the imageID.
13
-func tagImages(ic ImageComponent, stdout io.Writer, imageID image.ID, repoAndTags []reference.Named) error {
13
+func tagImages(ctx context.Context, ic ImageComponent, stdout io.Writer, imageID image.ID, repoAndTags []reference.Named) error {
14 14
 	for _, rt := range repoAndTags {
15
-		if err := ic.TagImageWithReference(imageID, rt); err != nil {
15
+		if err := ic.TagImageWithReference(ctx, imageID, rt); err != nil {
16 16
 			return err
17 17
 		}
18 18
 		_, _ = fmt.Fprintln(stdout, "Successfully tagged", reference.FamiliarString(rt))
... ...
@@ -26,7 +26,7 @@ type imageBackend interface {
26 26
 	ImageHistory(ctx context.Context, imageName string) ([]*image.HistoryResponseItem, error)
27 27
 	Images(ctx context.Context, opts types.ImageListOptions) ([]*types.ImageSummary, error)
28 28
 	GetImage(ctx context.Context, refOrID string, options image.GetImageOpts) (*dockerimage.Image, error)
29
-	TagImage(imageName, repository, tag string) (string, error)
29
+	TagImage(ctx context.Context, imageName, repository, tag string) (string, error)
30 30
 	ImagesPrune(ctx context.Context, pruneFilters filters.Args) (*types.ImagesPruneReport, error)
31 31
 }
32 32
 
... ...
@@ -369,7 +369,7 @@ func (ir *imageRouter) postImagesTag(ctx context.Context, w http.ResponseWriter,
369 369
 	if err := httputils.ParseForm(r); err != nil {
370 370
 		return err
371 371
 	}
372
-	if _, err := ir.backend.TagImage(vars["name"], r.Form.Get("repo"), r.Form.Get("tag")); err != nil {
372
+	if _, err := ir.backend.TagImage(ctx, vars["name"], r.Form.Get("repo"), r.Form.Get("tag")); err != nil {
373 373
 		return err
374 374
 	}
375 375
 	w.WriteHeader(http.StatusCreated)
... ...
@@ -171,7 +171,7 @@ func (daemon *Daemon) CreateImageFromContainer(ctx context.Context, name string,
171 171
 
172 172
 	var imageRef string
173 173
 	if c.Repo != "" {
174
-		imageRef, err = daemon.imageService.TagImage(string(id), c.Repo, c.Tag)
174
+		imageRef, err = daemon.imageService.TagImage(ctx, string(id), c.Repo, c.Tag)
175 175
 		if err != nil {
176 176
 			return "", err
177 177
 		}
... ...
@@ -1,20 +1,21 @@
1 1
 package containerd
2 2
 
3 3
 import (
4
-	"errors"
4
+	"context"
5 5
 
6 6
 	"github.com/docker/distribution/reference"
7 7
 	"github.com/docker/docker/errdefs"
8 8
 	"github.com/docker/docker/image"
9
+	"github.com/pkg/errors"
9 10
 )
10 11
 
11 12
 // TagImage creates the tag specified by newTag, pointing to the image named
12 13
 // imageName (alternatively, imageName can also be an image ID).
13
-func (i *ImageService) TagImage(imageName, repository, tag string) (string, error) {
14
+func (i *ImageService) TagImage(ctx context.Context, imageName, repository, tag string) (string, error) {
14 15
 	return "", errdefs.NotImplemented(errors.New("not implemented"))
15 16
 }
16 17
 
17 18
 // TagImageWithReference adds the given reference to the image ID provided.
18
-func (i *ImageService) TagImageWithReference(imageID image.ID, newTag reference.Named) error {
19
+func (i *ImageService) TagImageWithReference(ctx context.Context, imageID image.ID, newTag reference.Named) error {
19 20
 	return errdefs.NotImplemented(errors.New("not implemented"))
20 21
 }
... ...
@@ -37,8 +37,8 @@ type ImageService interface {
37 37
 	CountImages() int
38 38
 	ImagesPrune(ctx context.Context, pruneFilters filters.Args) (*types.ImagesPruneReport, error)
39 39
 	ImportImage(ctx context.Context, ref reference.Named, platform *v1.Platform, msg string, layerReader io.Reader, changes []string) (image.ID, error)
40
-	TagImage(imageName, repository, tag string) (string, error)
41
-	TagImageWithReference(imageID image.ID, newTag reference.Named) error
40
+	TagImage(ctx context.Context, imageName, repository, tag string) (string, error)
41
+	TagImageWithReference(ctx context.Context, imageID image.ID, newTag reference.Named) error
42 42
 	GetImage(ctx context.Context, refOrID string, options imagetype.GetImageOpts) (*image.Image, error)
43 43
 	ImageHistory(ctx context.Context, name string) ([]*imagetype.HistoryResponseItem, error)
44 44
 	CommitImage(ctx context.Context, c backend.CommitConfig) (image.ID, error)
... ...
@@ -80,7 +80,7 @@ func (i *ImageService) ImportImage(ctx context.Context, newRef reference.Named,
80 80
 	}
81 81
 
82 82
 	if newRef != nil {
83
-		if err := i.TagImageWithReference(id, newRef); err != nil {
83
+		if err := i.TagImageWithReference(ctx, id, newRef); err != nil {
84 84
 			return "", err
85 85
 		}
86 86
 	}
... ...
@@ -10,8 +10,7 @@ import (
10 10
 
11 11
 // TagImage creates the tag specified by newTag, pointing to the image named
12 12
 // imageName (alternatively, imageName can also be an image ID).
13
-func (i *ImageService) TagImage(imageName, repository, tag string) (string, error) {
14
-	ctx := context.TODO()
13
+func (i *ImageService) TagImage(ctx context.Context, imageName, repository, tag string) (string, error) {
15 14
 	img, err := i.GetImage(ctx, imageName, imagetypes.GetImageOpts{})
16 15
 	if err != nil {
17 16
 		return "", err
... ...
@@ -27,12 +26,12 @@ func (i *ImageService) TagImage(imageName, repository, tag string) (string, erro
27 27
 		}
28 28
 	}
29 29
 
30
-	err = i.TagImageWithReference(img.ID(), newTag)
30
+	err = i.TagImageWithReference(ctx, img.ID(), newTag)
31 31
 	return reference.FamiliarString(newTag), err
32 32
 }
33 33
 
34 34
 // TagImageWithReference adds the given reference to the image ID provided.
35
-func (i *ImageService) TagImageWithReference(imageID image.ID, newTag reference.Named) error {
35
+func (i *ImageService) TagImageWithReference(ctx context.Context, imageID image.ID, newTag reference.Named) error {
36 36
 	if err := i.referenceStore.AddTag(newTag, imageID.Digest(), true); err != nil {
37 37
 		return err
38 38
 	}