Skip to content

Commit 8a7aeec

Browse files
committed
fix(daemonset): push
1 parent c723e46 commit 8a7aeec

2 files changed

Lines changed: 17 additions & 18 deletions

File tree

internal/daemonset/resources/oci/create.go

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"encoding/json"
55
"log/slog"
66
"net/http"
7-
"os"
87

98
stove8sv1beta1 "bud.studio/stove8s/api/v1beta1"
109
"bud.studio/stove8s/internal/k8s"
@@ -37,26 +36,22 @@ func (rs Resource) CreateAsync(id uuid.UUID, data *CreateReq) {
3736
}
3837
rs.jobs[id] = &status
3938

40-
var dumpFile *os.File
41-
on_err_exit := func() {
42-
status.State = stove8sv1beta1.Failed
43-
44-
err := dumpFile.Close()
45-
if err != nil {
46-
slog.Error("Closing checkpointDump file", "err", err)
47-
}
48-
}
49-
5039
img, dumpFile, dumpLayer, err := oci.BuildImage(data.CheckpointDumpPath)
5140
if err != nil {
5241
slog.Error("Building oci image", "err", err)
53-
on_err_exit()
42+
status.State = stove8sv1beta1.Failed
5443
return
5544
}
45+
defer func() {
46+
err := dumpFile.Close()
47+
if err != nil {
48+
slog.Error("Closing checkpointDump file", "err", err)
49+
}
50+
}()
5651
ref, err := name.ParseReference(data.ImageReference)
5752
if err != nil {
5853
slog.Error("Creating reference", "err", err)
59-
on_err_exit()
54+
status.State = stove8sv1beta1.Failed
6055
return
6156
}
6257

@@ -71,7 +66,7 @@ func (rs Resource) CreateAsync(id uuid.UUID, data *CreateReq) {
7166
)
7267
if err != nil {
7368
slog.Error("Getting image push secret", "err", err)
74-
on_err_exit()
69+
status.State = stove8sv1beta1.Failed
7570
return
7671
}
7772

@@ -82,8 +77,8 @@ func (rs Resource) CreateAsync(id uuid.UUID, data *CreateReq) {
8277
remote.WithAuth(auth),
8378
)
8479
if err != nil {
85-
slog.Error("Pushing layer to remote", "err", err)
86-
on_err_exit()
80+
slog.Error("Pushing CRIU dump layer to remote", "err", err)
81+
status.State = stove8sv1beta1.Failed
8782
return
8883
} else {
8984
slog.Info("Pushed CRIU dump", "image", data.ImageReference)
@@ -96,7 +91,7 @@ func (rs Resource) CreateAsync(id uuid.UUID, data *CreateReq) {
9691
)
9792
if err != nil {
9893
slog.Error("Pushing image to remote", "err", err)
99-
on_err_exit()
94+
status.State = stove8sv1beta1.Failed
10095
return
10196
} else {
10297
slog.Info("Pushed image", "image", data.ImageReference)

internal/oci/utils.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package oci
33
import (
44
"archive/tar"
55
"bytes"
6+
"compress/gzip"
67
"encoding/json"
78
"errors"
89
"fmt"
@@ -97,7 +98,10 @@ func BuildImage(checkpointDumpPath string) (v1.Image, *os.File, *stream.Layer, e
9798
}
9899
img = mutate.Annotations(img, annotations).(v1.Image)
99100

100-
checkpointDumpLayer := stream.NewLayer(checkpointDump)
101+
checkpointDumpLayer := stream.NewLayer(
102+
io.NopCloser(checkpointDump),
103+
stream.WithCompressionLevel(gzip.BestCompression),
104+
)
101105
img, err = mutate.AppendLayers(img, checkpointDumpLayer)
102106
if err != nil {
103107
on_err_exit()

0 commit comments

Comments
 (0)