Skip to content

Commit

Permalink
Fix push endpoint stream
Browse files Browse the repository at this point in the history
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 <[email protected]>
  • Loading branch information
umohnani8 committed Dec 13, 2023
1 parent 4582b61 commit 126670d
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 4 deletions.
8 changes: 4 additions & 4 deletions pkg/api/handlers/libpod/images_push.go
Original file line number Diff line number Diff line change
Expand Up @@ -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,
}
Expand Down Expand Up @@ -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
Expand Down
15 changes: 15 additions & 0 deletions test/apiv2/12-imagesMore.at
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 126670d

Please sign in to comment.