Signed-off-by: Daniel Nephin <dnephin@docker.com>
| ... | ... |
@@ -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. |