From eb8428df59523622a2229ffa5e0c35462fee4af6 Mon Sep 17 00:00:00 2001 From: Gordon Messmer Date: Mon, 29 Jan 2024 15:18:33 -0800 Subject: [PATCH] podman-image-scp: Load images without the use of a temporary file. The default location for temporary files created by mktemp may not have enough space for an image. Use the new SSH functions which support an input reader to make the code simpler, more reliable, and more efficient. [NO NEW TESTS NEEDED] Signed-off-by: Gordon Messmer --- pkg/domain/utils/scp.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkg/domain/utils/scp.go b/pkg/domain/utils/scp.go index 9d50bdc252..b5b5ed9f33 100644 --- a/pkg/domain/utils/scp.go +++ b/pkg/domain/utils/scp.go @@ -210,17 +210,13 @@ func LoadToRemote(dest entities.ImageScpOptions, localFile string, tag string, u return "", "", err } - remoteFile, err := ssh.Exec(&ssh.ConnectionExecOptions{Host: url.String(), Identity: iden, Port: port, User: url.User, Args: []string{"mktemp"}}, sshEngine) + input, err := os.Open(localFile) if err != nil { return "", "", err } + defer input.Close() - opts := ssh.ConnectionScpOptions{User: url.User, Identity: iden, Port: port, Source: localFile, Destination: "ssh://" + url.User.String() + "@" + url.Hostname() + ":" + remoteFile} - scpRep, err := ssh.Scp(&opts, sshEngine) - if err != nil { - return "", "", err - } - out, err := ssh.Exec(&ssh.ConnectionExecOptions{Host: url.String(), Identity: iden, Port: port, User: url.User, Args: []string{"podman", "image", "load", "--input=" + scpRep + ";", "rm", scpRep}}, sshEngine) + out, err := ssh.ExecWithInput(&ssh.ConnectionExecOptions{Host: url.String(), Identity: iden, Port: port, User: url.User, Args: []string{"podman", "image", "load"}}, sshEngine, input) if err != nil { return "", "", err }