From fdf39e169922dc7dda664316a5d4ad570ab181a3 Mon Sep 17 00:00:00 2001 From: Igor Korolev Date: Wed, 10 Feb 2021 23:15:48 +0400 Subject: [PATCH] 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 --- pkg/api/handlers/compat/images.go | 4 ++-- test/apiv2/10-images.at | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/api/handlers/compat/images.go b/pkg/api/handlers/compat/images.go index 0ae0f3bcf4..88c59b46ad 100644 --- a/pkg/api/handlers/compat/images.go +++ b/pkg/api/handlers/compat/images.go @@ -265,12 +265,12 @@ func CreateImageFromImage(w http.ResponseWriter, r *http.Request) { // Success utils.WriteResponse(w, http.StatusOK, struct { Status string `json:"status"` - Error string `json:"error"` + Error string `json:"error,omitempty"` Progress string `json:"progress"` ProgressDetail map[string]string `json:"progressDetail"` 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{}, Id: img.ID(), }) diff --git a/test/apiv2/10-images.at b/test/apiv2/10-images.at index 7b500bf579..693c34cedf 100644 --- a/test/apiv2/10-images.at +++ b/test/apiv2/10-images.at @@ -41,7 +41,7 @@ t GET images/$iid/json 200 \ .Id=sha256:$iid \ .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