Skip to content

Commit c40a235

Browse files
committed
chore(go): clean up state handling
1 parent f58d9e7 commit c40a235

5 files changed

Lines changed: 30 additions & 40 deletions

File tree

internal/controller/snapshot_controller.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -250,8 +250,8 @@ func (r *SnapShotReconciler) Reconcile(ctx context.Context, req ctrl.Request) (c
250250
log.Error(err, "unable fetch daemonset job status")
251251
return ctrl.Result{}, err
252252
}
253-
snapshot.Status.Stage = stove8sv1beta1.SnapShotStatusStage(ociStatus.Stage)
254-
snapshot.Status.State = stove8sv1beta1.SnapShotStatusState(ociStatus.State)
253+
snapshot.Status.Stage = ociStatus.Stage
254+
snapshot.Status.State = ociStatus.State
255255
if err := r.Status().Update(ctx, snapshot); err != nil {
256256
log.Error(err, "unable to update Snapshot status with daemonset status")
257257
return ctrl.Result{}, err
@@ -310,7 +310,7 @@ func (r *SnapShotReconciler) PodImageUpdate(
310310
func daemonsetStausFetch(
311311
jobID string,
312312
node stove8sv1beta1.SnapShotStatusNode,
313-
) (*oci.OciStatus, error) {
313+
) (*oci.Status, error) {
314314
ociEndpoint := fmt.Sprintf("http://%s:%v/oci/%s", node.Addr, node.DeamonsetPort, jobID)
315315
req, err := http.NewRequest(http.MethodGet, ociEndpoint, nil)
316316
if err != nil {
@@ -324,7 +324,7 @@ func daemonsetStausFetch(
324324
return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode)
325325
}
326326

327-
var ociStatus oci.OciStatus
327+
var ociStatus oci.Status
328328
err = json.NewDecoder(resp.Body).Decode(&ociStatus)
329329
if err != nil {
330330
return nil, err
@@ -372,7 +372,7 @@ func daemonsetInit(
372372
return "", err
373373
}
374374

375-
return createResp.JobId, nil
375+
return createResp.JobID, nil
376376
}
377377

378378
func (r *SnapShotReconciler) kubeletEndpointFromPod(ctx context.Context, pod *corev1.Pod) (string, string, int32, error) {

internal/daemonset/daemonset.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ func routerInit() (*chi.Mux, error) {
3232
router.Use(middlewareServerHeader)
3333
router.Use(middleware.Recoverer)
3434

35-
ociHandler, err := oci.OciResource{}.Init()
35+
ociHandler, err := oci.Resource{}.Init()
3636
if err != nil {
3737
return nil, err
3838
}

internal/daemonset/resources/oci/create.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"log/slog"
66
"net/http"
77

8+
stove8sv1beta1 "bud.studio/stove8s/api/v1beta1"
89
"bud.studio/stove8s/internal/k8s"
910
"bud.studio/stove8s/internal/oci"
1011
"github.com/go-playground/validator/v10"
@@ -28,28 +29,28 @@ type CreateResp struct {
2829
JobID string `json:"job_id"`
2930
}
3031

31-
func (rs OciResource) CreateAsync(id uuid.UUID, data *CreateReq) {
32-
status := OciStatus{
33-
Stage: Fromating,
34-
State: Started,
32+
func (rs Resource) CreateAsync(id uuid.UUID, data *CreateReq) {
33+
status := Status{
34+
Stage: stove8sv1beta1.Fromating,
35+
State: stove8sv1beta1.Started,
3536
}
3637
rs.jobs[id] = &status
3738

3839
img, err := oci.BuildImage(data.CheckpointDumpPath)
3940
if err != nil {
4041
slog.Error("Building oci image", "err", err)
41-
status.State = Failed
42+
status.State = stove8sv1beta1.Failed
4243
return
4344
}
4445
ref, err := name.ParseReference(data.ImageReference)
4546
if err != nil {
4647
slog.Error("Creating reference", "err", err)
47-
status.State = Failed
48+
status.State = stove8sv1beta1.Failed
4849
return
4950
}
5051

51-
status.Stage = Pushing
52-
status.State = Started
52+
status.Stage = stove8sv1beta1.Pushing
53+
status.State = stove8sv1beta1.Started
5354

5455
auth, err := k8s.ImagePushSecretGet(
5556
rs.k8sClient,
@@ -59,7 +60,7 @@ func (rs OciResource) CreateAsync(id uuid.UUID, data *CreateReq) {
5960
)
6061
if err != nil {
6162
slog.Error("Getting image push secret", "err", err)
62-
status.State = Failed
63+
status.State = stove8sv1beta1.Failed
6364
return
6465
}
6566
err = remote.Write(
@@ -69,14 +70,14 @@ func (rs OciResource) CreateAsync(id uuid.UUID, data *CreateReq) {
6970
)
7071
if err != nil {
7172
slog.Error("Pushing to remote", "err", err)
72-
status.State = Failed
73+
status.State = stove8sv1beta1.Failed
7374
return
7475
}
7576

76-
status.State = Success
77+
status.State = stove8sv1beta1.Success
7778
}
7879

79-
func (rs OciResource) Create(rw http.ResponseWriter, req *http.Request) {
80+
func (rs Resource) Create(rw http.ResponseWriter, req *http.Request) {
8081
var data CreateReq
8182
err := json.NewDecoder(req.Body).Decode(&data)
8283
if err != nil {

internal/daemonset/resources/oci/get.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ import (
1010
)
1111

1212
type listResp struct {
13-
Jobs map[uuid.UUID]*OciStatus `json:"jobs"`
13+
Jobs map[uuid.UUID]*Status `json:"jobs"`
1414
}
1515

16-
func (rs OciResource) List(rw http.ResponseWriter, req *http.Request) {
16+
func (rs Resource) List(rw http.ResponseWriter, req *http.Request) {
1717
resp, err := json.Marshal(listResp{
1818
Jobs: rs.jobs,
1919
})
@@ -29,7 +29,7 @@ func (rs OciResource) List(rw http.ResponseWriter, req *http.Request) {
2929
}
3030
}
3131

32-
func (rs OciResource) Get(rw http.ResponseWriter, req *http.Request) {
32+
func (rs Resource) Get(rw http.ResponseWriter, req *http.Request) {
3333
idString := chi.URLParam(req, "id")
3434
if idString == "" {
3535
http.Error(rw, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)

internal/daemonset/resources/oci/oci.go

Lines changed: 8 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,21 @@ import (
44
"fmt"
55
"os"
66

7+
stove8sv1beta1 "bud.studio/stove8s/api/v1beta1"
78
"github.com/go-chi/chi/v5"
89
"github.com/google/uuid"
910
"k8s.io/client-go/kubernetes"
1011
"k8s.io/client-go/rest"
1112
"k8s.io/client-go/tools/clientcmd"
1213
)
1314

14-
type ociStatusStage string
15-
type ociStatusState string
16-
17-
const (
18-
Fromating ociStatusStage = "Fromating"
19-
Pushing ociStatusStage = "Pushing"
20-
21-
Started ociStatusState = "Started"
22-
Failed ociStatusState = "Failed"
23-
Success ociStatusState = "Success"
24-
)
25-
26-
type OciStatus struct {
27-
Stage ociStatusStage `json:"stage"`
28-
State ociStatusState `json:"state"`
15+
type Status struct {
16+
Stage stove8sv1beta1.SnapShotStatusStage `json:"stage"`
17+
State stove8sv1beta1.SnapShotStatusState `json:"state"`
2918
}
3019

31-
type OciResource struct {
32-
jobs map[uuid.UUID]*OciStatus
20+
type Resource struct {
21+
jobs map[uuid.UUID]*Status
3322
k8sClient *kubernetes.Clientset
3423
}
3524

@@ -54,14 +43,14 @@ func k8sClientInit() (*kubernetes.Clientset, error) {
5443
return clientset, nil
5544
}
5645

57-
func (rs OciResource) Init() (chi.Router, error) {
46+
func (rs Resource) Init() (chi.Router, error) {
5847
k8sClient, err := k8sClientInit()
5948
if err != nil {
6049
return nil, err
6150
}
6251

6352
rs.k8sClient = k8sClient
64-
rs.jobs = make(map[uuid.UUID]*OciStatus)
53+
rs.jobs = make(map[uuid.UUID]*Status)
6554

6655
r := chi.NewRouter()
6756

0 commit comments

Comments
 (0)