Skip to content
This repository was archived by the owner on Nov 4, 2024. It is now read-only.

Commit 37834ce

Browse files
committed
refactor(CNV-47217): use golang gzip library
Use golang's gzip library directly from the source code, in order to be able to test this functionality as well. Signed-off-by: Ben Oukhanov <[email protected]>
1 parent d828cd2 commit 37834ce

File tree

2 files changed

+28
-6
lines changed

2 files changed

+28
-6
lines changed

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ FROM quay.io/fedora/fedora-minimal:39
1111
RUN cd /usr/bin && \
1212
curl -L https://github.com/kubevirt/kubevirt/releases/download/v1.0.0/virtctl-v1.0.0-linux-amd64 --output virtctl && \
1313
chmod +x virtctl && \
14-
microdnf install -y gzip qemu-img libguestfs-tools-c && \
14+
microdnf install -y qemu-img libguestfs-tools-c && \
1515
microdnf clean all -y
1616
COPY --from=builder /app/kubevirt-disk-uploader /usr/local/bin/kubevirt-disk-uploader
1717

main.go

Lines changed: 27 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package main
22

33
import (
4+
"compress/gzip"
45
"context"
56
"fmt"
7+
"io"
68
"log"
79
"os"
810
"os/exec"
@@ -88,15 +90,35 @@ func downloadVirtualMachineDiskImage(vmName, volumeName string) error {
8890
func decompressVirtualMachineDiskImage() error {
8991
log.Println("Decompressing downloaded disk image...")
9092

91-
cmd := exec.Command("gunzip", diskPath)
92-
cmd.Stdout = os.Stdout
93-
cmd.Stderr = os.Stderr
93+
diskImg, err := os.Open(diskPath)
94+
if err != nil {
95+
return err
96+
}
97+
defer diskImg.Close()
9498

95-
if err := cmd.Run(); err != nil {
99+
gzipReader, err := gzip.NewReader(diskImg)
100+
if err != nil {
101+
return err
102+
}
103+
defer gzipReader.Close()
104+
105+
newDiskImg, err := os.Create(diskPathDecompressed)
106+
if err != nil {
107+
return err
108+
}
109+
defer newDiskImg.Close()
110+
111+
_, err = io.Copy(newDiskImg, gzipReader)
112+
if err != nil {
113+
return err
114+
}
115+
116+
err = os.Chmod(diskPathDecompressed, 0666) // Grants read and write permission to everyone.
117+
if err != nil {
96118
return err
97119
}
98120

99-
log.Println("Decompressed completed successfully.")
121+
log.Println("Decompression completed successfully.")
100122
return nil
101123
}
102124

0 commit comments

Comments
 (0)