Fix push endpoint stream

The push binding endpoint wasn't actually writing the
output data to the stream when quiet=false and there
was no push error.
Do not hard code quiet=true anymore, take into account the
user input.

Signed-off-by: Urvashi Mohnani <umohnani@redhat.com>
This commit is contained in:
Urvashi Mohnani 2023-12-13 10:26:45 -05:00
parent 4582b61d7c
commit 126670d5dd
2 changed files with 19 additions and 4 deletions

View File

@ -81,7 +81,7 @@ func PushImage(w http.ResponseWriter, r *http.Request) {
ForceCompressionFormat: query.ForceCompressionFormat,
Format: query.Format,
Password: password,
Quiet: true,
Quiet: query.Quiet,
RemoveSignatures: query.RemoveSignatures,
Username: username,
}
@ -150,9 +150,9 @@ func PushImage(w http.ResponseWriter, r *http.Request) {
}
if pushError != nil {
stream.Error = pushError.Error()
if err := enc.Encode(stream); err != nil {
logrus.Warnf("Failed to encode json: %v", err)
}
}
if err := enc.Encode(stream); err != nil {
logrus.Warnf("Failed to encode json: %v", err)
}
flush()
return

View File

@ -43,8 +43,23 @@ s1=$(jq -r .status <<<"${lines[1]}")
like "$s1" "mytag: digest: sha256:[0-9a-f]\{64\} size: [0-9]\+" \
"Push to local registry: second status line"
# Push to local registry using the libpod endpoint with quiet=false...
# First create a new tag for the image to push
t POST "libpod/images/$IMAGE/tag?repo=localhost:$REGISTRY_PORT/myrepo&tag=quiet-false" 201
t POST "libpod/images/localhost:$REGISTRY_PORT/myrepo:quiet-false/push?tlsVerify=false&quiet=false" 200
# ...and check output. We can't use our built-in checks because this output
# is a sequence of JSON objects, i.e., individual ones, not in a JSON array.
# The lines themselves are valid JSON, but taken together they are not.
readarray lines <<<"$output"
s0=$(jq -r .manifestdigest <<<"${lines[-1]}")
like "$s0" "sha256:[0-9a-f]\{64\}" \
"Push to local registry: last line in push report"
# Untag the image
t POST "libpod/images/$iid/untag?repo=localhost:$REGISTRY_PORT/myrepo&tag=mytag" 201
t POST "libpod/images/$iid/untag?repo=localhost:$REGISTRY_PORT/myrepo&tag=quiet-false" 201
# Try to push non-existing image
t POST "images/localhost:$REGISTRY_PORT/idonotexist/push?tlsVerify=false" 404