auto-update: make output more user friendly

The rather raw and scarce output of `podman auto-update` has been a
thorn in my eyes for a longer while.  So far, Podman would only print
updated systemd units, one per line, without further formatting.

Motivated by issue #9949 which is asking for some more useful
information in combination with a dry-run feature, I sat down and
reflected which information may come in handy.

Running `podman auto-update` will now look as follows:

```
$ podman auto-update
Trying to pull [...]

UNIT                    CONTAINER            IMAGE                   POLICY      UPDATED
container-test.service  08fd34e533fd (test)  localhost:5000/busybox  registry    false
```

Also refactor the spaghetti code in the backend a bit to make it easier
to digest and maintain.

For easier testing and for the sake of consistency with other commands
listing output, add a `--format` flag.

The man page will get an overhaul in a follow up commit.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
Valentin Rothberg
2021-06-25 15:58:39 +02:00
parent 6fcf0b2f32
commit 01cfb51fe9
9 changed files with 265 additions and 86 deletions

View File

@ -119,7 +119,7 @@ function service_cleanup() {
# Run auto-update and check that it restarted the container
run_podman commit --change "CMD=/bin/bash" $cname $IMAGE
run_podman auto-update
is $output $SERVICE_NAME "autoupdate local restarted container"
is "$output" ".*$SERVICE_NAME.*" "autoupdate local restarted container"
# All good. Stop service, clean up.
service_cleanup

View File

@ -121,10 +121,10 @@ function _confirm_update() {
generate_service alpine image
_wait_service_ready container-$cname.service
run_podman auto-update
run_podman auto-update --format "{{.Unit}},{{.Image}},{{.Updated}},{{.Policy}}"
is "$output" "Trying to pull.*" "Image is updated."
is "$output" ".*Restarted the following systemd units:
container-$cname.service" "Systemd unit has been restarted"
is "$output" ".*container-$cname.service,quay.io/libpod/alpine:latest,true,registry.*" "Image is updated."
_confirm_update $cname $ori_image
}
@ -153,10 +153,15 @@ container-$cname.service" "Systemd unit has been restarted"
@test "podman auto-update - label io.containers.autoupdate=local" {
generate_service localtest local
podman commit --change CMD=/bin/bash $cname quay.io/libpod/localtest:latest
image=quay.io/libpod/localtest:latest
podman commit --change CMD=/bin/bash $cname $image
podman image inspect --format "{{.ID}}" $image
imageID="$output"
_wait_service_ready container-$cname.service
run_podman auto-update
run_podman auto-update --format "{{.Unit}},{{.Image}},{{.Updated}},{{.Policy}}"
is "$output" ".*container-$cname.service,quay.io/libpod/localtest:latest,true,local.*" "Image is updated."
_confirm_update $cname $ori_image
}