From 86103226826bb36135c41d62d53c26fef71ea373 Mon Sep 17 00:00:00 2001 From: Pavel Sviderski Date: Mon, 17 Feb 2025 16:12:37 +1000 Subject: [PATCH] fix: panic when pulling non-existent image --- internal/cli/client/container.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/cli/client/container.go b/internal/cli/client/container.go index 1b016ea1..794786b4 100644 --- a/internal/cli/client/container.go +++ b/internal/cli/client/container.go @@ -10,6 +10,7 @@ import ( dockerclient "github.com/docker/docker/client" "github.com/docker/docker/pkg/jsonmessage" "github.com/docker/go-connections/nat" + "google.golang.org/grpc/status" "strconv" "strings" "uncloud/internal/api" @@ -127,14 +128,15 @@ func (cli *Client) pullImageWithProgress(ctx context.Context, image, machineName pullCh, err := cli.Docker.PullImage(ctx, image) if err != nil { + statusErr := status.Convert(err) pw.Event(progress.Event{ ID: eventID, ParentID: parentEventID, Text: "Error", Status: progress.Error, - StatusText: errors.Unwrap(err).Error(), + StatusText: statusErr.Message(), }) - return fmt.Errorf("pull image: %w", err) + return fmt.Errorf("pull image: %w", errors.New(statusErr.Message())) } // Wait for pull to complete by reading all progress messages and converting them to events. @@ -147,14 +149,15 @@ func (cli *Client) pullImageWithProgress(ctx context.Context, image, machineName } } if err != nil { + statusErr := status.Convert(err) pw.Event(progress.Event{ ID: eventID, ParentID: parentEventID, Text: "Error", Status: progress.Error, - StatusText: errors.Unwrap(err).Error(), + StatusText: statusErr.Message(), }) - return fmt.Errorf("pull image: %w", err) + return fmt.Errorf("pull image: %w", errors.New(statusErr.Message())) } // TODO: add like in compose: --quiet-pull Pull without printing progress information