From 4cb2d48ca42ee697c6dda3b00752059cc655e0a8 Mon Sep 17 00:00:00 2001 From: Matej Vasek Date: Thu, 10 Aug 2023 23:31:54 +0200 Subject: [PATCH] Revert "compat,build: pull must accept string" This reverts commit 5b148a0a68360892f57603b77e73c69e32fb7b7e. Reverting to treating the `pull` query parameter as a boolean. Because of deceiving Docker API documentation it was assumed that the parameter is pull-policy, however that is not true. Docker does treat `pull` as a boolean. What is interesting is that Docker indeed accepts strings like `always` or `never` however Docekr both of these strings treat as `true`, not as pull-policy. As matter of the fact it seems there is no such a thing as pull-policy in Docker. More context https://github.com/containers/podman/issues/17778#issuecomment-1673931925 Signed-off-by: Matej Vasek --- pkg/api/handlers/compat/images_build.go | 15 ++------------- pkg/api/server/register_images.go | 8 ++++---- test/apiv2/10-images.at | 5 ----- 3 files changed, 6 insertions(+), 22 deletions(-) diff --git a/pkg/api/handlers/compat/images_build.go b/pkg/api/handlers/compat/images_build.go index 984660c32c..3e18bbc0ee 100644 --- a/pkg/api/handlers/compat/images_build.go +++ b/pkg/api/handlers/compat/images_build.go @@ -121,7 +121,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) { OSVersion string `schema:"osversion"` OutputFormat string `schema:"outputformat"` Platform []string `schema:"platform"` - Pull string `schema:"pull"` + Pull bool `schema:"pull"` PullPolicy string `schema:"pullpolicy"` Quiet bool `schema:"q"` Registry string `schema:"registry"` @@ -580,19 +580,8 @@ func BuildImage(w http.ResponseWriter, r *http.Request) { pullPolicy = buildahDefine.PolicyMap[query.PullPolicy] } else { if _, found := r.URL.Query()["pull"]; found { - switch strings.ToLower(query.Pull) { - case "false": - pullPolicy = buildahDefine.PullIfMissing - case "true": + if query.Pull { pullPolicy = buildahDefine.PullAlways - default: - policyFromMap, foundPolicy := buildahDefine.PolicyMap[query.Pull] - if foundPolicy { - pullPolicy = policyFromMap - } else { - utils.BadRequest(w, "pull", query.Pull, fmt.Errorf("invalid pull policy: %q", query.Pull)) - return - } } } } diff --git a/pkg/api/server/register_images.go b/pkg/api/server/register_images.go index fb9f0d753f..805af97f82 100644 --- a/pkg/api/server/register_images.go +++ b/pkg/api/server/register_images.go @@ -546,8 +546,8 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error { // (As of version 1.xx) // - in: query // name: pull - // type: string - // default: + // type: boolean + // default: false // description: | // Attempt to pull the image even if an older image exists locally // (As of version 1.xx) @@ -1453,8 +1453,8 @@ func (s *APIServer) registerImagesHandlers(r *mux.Router) error { // (As of version 1.xx) // - in: query // name: pull - // type: string - // default: + // type: boolean + // default: false // description: | // Attempt to pull the image even if an older image exists locally // (As of version 1.xx) diff --git a/test/apiv2/10-images.at b/test/apiv2/10-images.at index 94a8bee480..79b2039695 100644 --- a/test/apiv2/10-images.at +++ b/test/apiv2/10-images.at @@ -234,11 +234,6 @@ t POST "build?dockerfile=containerfile" $CONTAINERFILE_TAR application/json 200 response_headers=$(cat "$WORKDIR/curl.headers.out") like "$response_headers" ".*application/json.*" "header does not contain application/json" -# Build api response header must contain Content-type: application/json -t POST "build?dockerfile=containerfile&pull=never" $CONTAINERFILE_TAR application/json 200 -response_headers=$(cat "$WORKDIR/curl.headers.out") -like "$response_headers" ".*application/json.*" "header does not contain application/json" - # PR #12091: output from compat API must now include {"aux":{"ID":"sha..."}} t POST "build?dockerfile=containerfile" $CONTAINERFILE_TAR 200 \ '.aux|select(has("ID")).ID~^sha256:[0-9a-f]\{64\}$'