apiv2: handle docker-java clients pulling

When docker-java calls images/create?fromImage=x, it expects two things
for a successful response: that both "error" and "errorDetail" are not
set, and that the "progress" message contains one of five hard-coded
strings ("Download complete" being one of them).

Signed-off-by: Igor Korolev <missterr@gmail.com>
This commit is contained in:
Igor Korolev
2021-02-10 23:15:48 +04:00
parent 88ab83d4e0
commit fdf39e1699
2 changed files with 3 additions and 3 deletions

View File

@ -265,12 +265,12 @@ func CreateImageFromImage(w http.ResponseWriter, r *http.Request) {
// Success // Success
utils.WriteResponse(w, http.StatusOK, struct { utils.WriteResponse(w, http.StatusOK, struct {
Status string `json:"status"` Status string `json:"status"`
Error string `json:"error"` Error string `json:"error,omitempty"`
Progress string `json:"progress"` Progress string `json:"progress"`
ProgressDetail map[string]string `json:"progressDetail"` ProgressDetail map[string]string `json:"progressDetail"`
Id string `json:"id"` // nolint Id string `json:"id"` // nolint
}{ }{
Status: fmt.Sprintf("pulling image (%s) from %s", img.Tag, strings.Join(img.Names(), ", ")), Status: fmt.Sprintf("pulling image (%s) from %s (Download complete)", img.Tag, strings.Join(img.Names(), ", ")),
ProgressDetail: map[string]string{}, ProgressDetail: map[string]string{},
Id: img.ID(), Id: img.ID(),
}) })

View File

@ -41,7 +41,7 @@ t GET images/$iid/json 200 \
.Id=sha256:$iid \ .Id=sha256:$iid \
.RepoTags[0]=$IMAGE .RepoTags[0]=$IMAGE
t POST "images/create?fromImage=alpine" '' 200 t POST "images/create?fromImage=alpine" '' 200 .error=null .status~".*Download complete.*"
t POST "images/create?fromImage=alpine&tag=latest" '' 200 t POST "images/create?fromImage=alpine&tag=latest" '' 200