Browse code

Use TagImage in Commit

Signed-off-by: Daniel Nephin <dnephin@docker.com>

Daniel Nephin authored on 2018/02/10 08:24:57
Showing 4 changed files
... ...
@@ -29,7 +29,7 @@ type imageBackend interface {
29 29
 	ImageHistory(imageName string) ([]*image.HistoryResponseItem, error)
30 30
 	Images(imageFilters filters.Args, all bool, withExtraAttrs bool) ([]*types.ImageSummary, error)
31 31
 	LookupImage(name string) (*types.ImageInspect, error)
32
-	TagImage(imageName, repository, tag string) error
32
+	TagImage(imageName, repository, tag string) (string, error)
33 33
 	ImagesPrune(ctx context.Context, pruneFilters filters.Args) (*types.ImagesPruneReport, error)
34 34
 }
35 35
 
... ...
@@ -303,7 +303,7 @@ func (s *imageRouter) postImagesTag(ctx context.Context, w http.ResponseWriter,
303 303
 	if err := httputils.ParseForm(r); err != nil {
304 304
 		return err
305 305
 	}
306
-	if err := s.backend.TagImage(vars["name"], r.Form.Get("repo"), r.Form.Get("tag")); err != nil {
306
+	if _, err := s.backend.TagImage(vars["name"], r.Form.Get("repo"), r.Form.Get("tag")); err != nil {
307 307
 		return err
308 308
 	}
309 309
 	w.WriteHeader(http.StatusCreated)
... ...
@@ -8,7 +8,6 @@ import (
8 8
 	"strings"
9 9
 	"time"
10 10
 
11
-	"github.com/docker/distribution/reference"
12 11
 	"github.com/docker/docker/api/types/backend"
13 12
 	containertypes "github.com/docker/docker/api/types/container"
14 13
 	"github.com/docker/docker/builder/dockerfile"
... ...
@@ -176,9 +175,12 @@ func (daemon *Daemon) CreateImageFromContainer(name string, c *backend.CreateIma
176 176
 		return "", err
177 177
 	}
178 178
 
179
-	imageRef, err := daemon.tagCommit(c.Repo, c.Tag, id)
180
-	if err != nil {
181
-		return "", err
179
+	var imageRef string
180
+	if c.Repo != "" {
181
+		imageRef, err = daemon.TagImage(string(id), c.Repo, c.Tag)
182
+		if err != nil {
183
+			return "", err
184
+		}
182 185
 	}
183 186
 	daemon.LogContainerEventWithAttributes(container, "commit", map[string]string{
184 187
 		"comment":  c.Comment,
... ...
@@ -247,30 +249,6 @@ func (daemon *Daemon) commitImage(c backend.CommitConfig) (image.ID, error) {
247 247
 	return id, nil
248 248
 }
249 249
 
250
-// TODO: remove from Daemon, move to api backend
251
-func (daemon *Daemon) tagCommit(repo string, tag string, id image.ID) (string, error) {
252
-	imageRef := ""
253
-	if repo != "" {
254
-		newTag, err := reference.ParseNormalizedNamed(repo) // todo: should move this to API layer
255
-		if err != nil {
256
-			return "", err
257
-		}
258
-		if !reference.IsNameOnly(newTag) {
259
-			return "", errors.Errorf("unexpected repository name: %s", repo)
260
-		}
261
-		if tag != "" {
262
-			if newTag, err = reference.WithTag(newTag, tag); err != nil {
263
-				return "", err
264
-			}
265
-		}
266
-		if err := daemon.TagImageWithReference(id, newTag); err != nil {
267
-			return "", err
268
-		}
269
-		imageRef = reference.FamiliarString(newTag)
270
-	}
271
-	return imageRef, nil
272
-}
273
-
274 250
 func exportContainerRw(layerStore layer.Store, id, mountLabel string) (arch io.ReadCloser, err error) {
275 251
 	rwlayer, err := layerStore.GetRWLayer(id)
276 252
 	if err != nil {
... ...
@@ -7,23 +7,24 @@ import (
7 7
 
8 8
 // TagImage creates the tag specified by newTag, pointing to the image named
9 9
 // imageName (alternatively, imageName can also be an image ID).
10
-func (daemon *Daemon) TagImage(imageName, repository, tag string) error {
10
+func (daemon *Daemon) TagImage(imageName, repository, tag string) (string, error) {
11 11
 	imageID, _, err := daemon.GetImageIDAndOS(imageName)
12 12
 	if err != nil {
13
-		return err
13
+		return "", err
14 14
 	}
15 15
 
16 16
 	newTag, err := reference.ParseNormalizedNamed(repository)
17 17
 	if err != nil {
18
-		return err
18
+		return "", err
19 19
 	}
20 20
 	if tag != "" {
21 21
 		if newTag, err = reference.WithTag(reference.TrimNamed(newTag), tag); err != nil {
22
-			return err
22
+			return "", err
23 23
 		}
24 24
 	}
25 25
 
26
-	return daemon.TagImageWithReference(imageID, newTag)
26
+	err = daemon.TagImageWithReference(imageID, newTag)
27
+	return reference.FamiliarString(newTag), err
27 28
 }
28 29
 
29 30
 // TagImageWithReference adds the given reference to the image ID provided.