|
@@ -72,25 +72,9 @@ func (ir *imageRouter) postImagesCreate(ctx context.Context, w http.ResponseWrit
|
|
} else { // import
|
|
} else { // import
|
|
src := r.Form.Get("fromSrc")
|
|
src := r.Form.Get("fromSrc")
|
|
|
|
|
|
- var ref reference.Named
|
|
|
|
- if repo != "" {
|
|
|
|
- var err error
|
|
|
|
- ref, err = reference.ParseNormalizedNamed(repo)
|
|
|
|
- if err != nil {
|
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
|
- }
|
|
|
|
- if _, isDigested := ref.(reference.Digested); isDigested {
|
|
|
|
- return errdefs.InvalidParameter(errors.New("cannot import digest reference"))
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if tag != "" {
|
|
|
|
- ref, err = reference.WithTag(ref, tag)
|
|
|
|
- if err != nil {
|
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- ref = reference.TagNameOnly(ref)
|
|
|
|
- }
|
|
|
|
|
|
+ tagRef, err := httputils.RepoTagReference(repo, tag)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return errdefs.InvalidParameter(err)
|
|
}
|
|
}
|
|
|
|
|
|
if len(comment) == 0 {
|
|
if len(comment) == 0 {
|
|
@@ -121,7 +105,7 @@ func (ir *imageRouter) postImagesCreate(ctx context.Context, w http.ResponseWrit
|
|
}
|
|
}
|
|
|
|
|
|
var id image.ID
|
|
var id image.ID
|
|
- id, progressErr = ir.backend.ImportImage(ctx, ref, platform, comment, layerReader, r.Form["changes"])
|
|
|
|
|
|
+ id, progressErr = ir.backend.ImportImage(ctx, tagRef, platform, comment, layerReader, r.Form["changes"])
|
|
|
|
|
|
if progressErr == nil {
|
|
if progressErr == nil {
|
|
output.Write(streamformatter.FormatStatus("", id.String()))
|
|
output.Write(streamformatter.FormatStatus("", id.String()))
|
|
@@ -370,26 +354,11 @@ func (ir *imageRouter) postImagesTag(ctx context.Context, w http.ResponseWriter,
|
|
return err
|
|
return err
|
|
}
|
|
}
|
|
|
|
|
|
- repo := r.Form.Get("repo")
|
|
|
|
- tag := r.Form.Get("tag")
|
|
|
|
-
|
|
|
|
- ref, err := reference.ParseNormalizedNamed(repo)
|
|
|
|
- if err != nil {
|
|
|
|
|
|
+ ref, err := httputils.RepoTagReference(r.Form.Get("repo"), r.Form.Get("tag"))
|
|
|
|
+ if ref == nil || err != nil {
|
|
return errdefs.InvalidParameter(err)
|
|
return errdefs.InvalidParameter(err)
|
|
}
|
|
}
|
|
|
|
|
|
- if _, isDigested := ref.(reference.Digested); isDigested {
|
|
|
|
- return errdefs.InvalidParameter(errors.New("tag reference can't have a digest"))
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if tag != "" {
|
|
|
|
- if ref, err = reference.WithTag(reference.TrimNamed(ref), tag); err != nil {
|
|
|
|
- return errdefs.InvalidParameter(err)
|
|
|
|
- }
|
|
|
|
- } else {
|
|
|
|
- ref = reference.TagNameOnly(ref)
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
img, err := ir.backend.GetImage(ctx, vars["name"], opts.GetImageOpts{})
|
|
img, err := ir.backend.GetImage(ctx, vars["name"], opts.GetImageOpts{})
|
|
if err != nil {
|
|
if err != nil {
|
|
return errdefs.NotFound(err)
|
|
return errdefs.NotFound(err)
|