Skip to content

Commit 4254c64

Browse files
fix: Handle errors for failed to retreive user spec.  Don't return an error for invalid chart config in spec. (#96)
* fix: Handle errors for failed to retreive user spec. Don't return an error for invalid chart config in spec. * fix: Bump helm package for CVE
1 parent 78f3c23 commit 4254c64

6 files changed

Lines changed: 50 additions & 37 deletions

File tree

controllers/weightsandbiases_controller.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,8 @@ package controllers
1818

1919
import (
2020
"context"
21-
"reflect"
22-
2321
rbacv1 "k8s.io/api/rbac/v1"
22+
"reflect"
2423

2524
"github.com/wandb/operator/pkg/wandb/spec/state"
2625
appsv1 "k8s.io/api/apps/v1"
@@ -116,19 +115,23 @@ func (r *WeightsAndBiasesReconciler) Reconcile(ctx context.Context, req ctrl.Req
116115

117116
r.Recorder.Event(wandb, corev1.EventTypeNormal, "LoadingConfig", "Loading desired configuration")
118117

119-
userInputSpec, _ := specManager.GetUserInput()
120-
if userInputSpec == nil {
121-
log.Info("No user spec found, creating a new one")
122-
userInputSpec := &spec.Spec{Values: map[string]interface{}{}}
123-
specManager.SetUserInput(userInputSpec)
118+
userInputSpec, err := specManager.GetUserInput()
119+
if errors.IsNotFound(err) {
120+
log.Info("No user input spec found, creating a new one")
121+
userInputSpec = &spec.Spec{Values: map[string]interface{}{}}
122+
err = specManager.SetUserInput(userInputSpec)
123+
if err != nil {
124+
return ctrlqueue.RequeueWithError(err)
125+
}
126+
} else if err != nil {
127+
log.Error(err, "error retrieving user input spec")
128+
return ctrlqueue.RequeueWithError(err)
124129
}
125130

126131
var releaseID string
127-
if userInputSpec != nil {
128-
if releaseIDValue, ok := userInputSpec.Values["_releaseId"].(string); ok {
129-
releaseID = releaseIDValue
130-
log.Info("Version Pinning is enabled", "releaseId:", releaseID)
131-
}
132+
if releaseIDValue, ok := userInputSpec.Values["_releaseId"].(string); ok {
133+
releaseID = releaseIDValue
134+
log.Info("Version Pinning is enabled", "releaseId:", releaseID)
132135
}
133136

134137
crdSpec := operator.Spec(wandb)
@@ -204,6 +207,7 @@ func (r *WeightsAndBiasesReconciler) Reconcile(ctx context.Context, req ctrl.Req
204207
log.Error(err, "Failed to merge deployer spec into desired spec")
205208
return ctrlqueue.RequeueWithError(err)
206209
}
210+
207211
if r.Debug {
208212
log.Info("Desired spec after merging deployerSpec", "spec", desiredSpec.SensitiveValuesMasked())
209213
}

controllers/weightsandbiases_controller_test.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,18 @@ var _ = Describe("WeightsandbiasesController", func() {
140140
event = <-recorder.Events
141141
Expect(event).To(ContainSubstring("Completed reconcile successfully"))
142142
})
143+
It("Should create an empty User Spec", func() {
144+
ctx := context.Background()
145+
wandb := wandbcomv1.WeightsAndBiases{}
146+
err := k8sClient.Get(ctx, types.NamespacedName{Name: "test", Namespace: "default"}, &wandb)
147+
Expect(err).ToNot(HaveOccurred())
148+
specManager := state.New(ctx, k8sClient, &wandb, scheme.Scheme, secrets.New(ctx, k8sClient, &wandb, scheme.Scheme))
149+
userSpec, err := specManager.GetUserInput()
150+
Expect(err).ToNot(HaveOccurred())
151+
Expect(userSpec.Values).To(BeEmpty())
152+
Expect(userSpec.Chart).To(BeNil())
153+
Expect(userSpec.Metadata).To(BeNil())
154+
})
143155
})
144156
})
145157
Describe("Reconcile with _releaseId set", func() {

go.mod

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ require (
99
github.com/onsi/ginkgo/v2 v2.22.2
1010
github.com/onsi/gomega v1.36.2
1111
github.com/pkg/errors v0.9.1
12-
helm.sh/helm/v3 v3.17.1
12+
helm.sh/helm/v3 v3.17.4
1313
k8s.io/api v0.32.2
1414
k8s.io/apimachinery v0.32.2
1515
k8s.io/client-go v0.32.2
@@ -133,14 +133,14 @@ require (
133133
go.opentelemetry.io/otel/trace v1.34.0 // indirect
134134
go.uber.org/multierr v1.11.0 // indirect
135135
go.uber.org/zap v1.27.0 // indirect
136-
golang.org/x/crypto v0.35.0 // indirect
136+
golang.org/x/crypto v0.36.0 // indirect
137137
golang.org/x/mod v0.23.0 // indirect
138-
golang.org/x/net v0.36.0 // indirect
138+
golang.org/x/net v0.37.0 // indirect
139139
golang.org/x/oauth2 v0.27.0 // indirect
140-
golang.org/x/sync v0.11.0 // indirect
141-
golang.org/x/sys v0.30.0 // indirect
142-
golang.org/x/term v0.29.0 // indirect
143-
golang.org/x/text v0.22.0 // indirect
140+
golang.org/x/sync v0.12.0 // indirect
141+
golang.org/x/sys v0.31.0 // indirect
142+
golang.org/x/term v0.30.0 // indirect
143+
golang.org/x/text v0.23.0 // indirect
144144
golang.org/x/time v0.10.0 // indirect
145145
golang.org/x/tools v0.30.0 // indirect
146146
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect

go.sum

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -413,8 +413,8 @@ golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnf
413413
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
414414
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
415415
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
416-
golang.org/x/crypto v0.35.0 h1:b15kiHdrGCHrP6LvwaQ3c03kgNhhiMgvlhxHQhmg2Xs=
417-
golang.org/x/crypto v0.35.0/go.mod h1:dy7dXNW32cAb/6/PRuTNsix8T+vJAqvuIy5Bli/x0YQ=
416+
golang.org/x/crypto v0.36.0 h1:AnAEvhDddvBdpY+uR+MyHmuZzzNqXSe/GvuDeob5L34=
417+
golang.org/x/crypto v0.36.0/go.mod h1:Y4J0ReaxCR1IMaabaSMugxJES1EpwhBHhv2bDHklZvc=
418418
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
419419
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
420420
golang.org/x/mod v0.23.0 h1:Zb7khfcRGKk+kqfxFaP5tZqCnDZMjC5VtUBs87Hr6QM=
@@ -425,17 +425,17 @@ golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLL
425425
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
426426
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
427427
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
428-
golang.org/x/net v0.36.0 h1:vWF2fRbw4qslQsQzgFqZff+BItCvGFQqKzKIzx1rmoA=
429-
golang.org/x/net v0.36.0/go.mod h1:bFmbeoIPfrw4sMHNhb4J9f6+tPziuGjq7Jk/38fxi1I=
428+
golang.org/x/net v0.37.0 h1:1zLorHbz+LYj7MQlSf1+2tPIIgibq2eL5xkrGk6f+2c=
429+
golang.org/x/net v0.37.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
430430
golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M=
431431
golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
432432
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
433433
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
434434
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
435435
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
436436
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
437-
golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w=
438-
golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
437+
golang.org/x/sync v0.12.0 h1:MHc5BpPuC30uJk597Ri8TV3CNZcTLu6B6z4lJy+g6Jw=
438+
golang.org/x/sync v0.12.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
439439
golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
440440
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
441441
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -445,14 +445,14 @@ golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7w
445445
golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
446446
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
447447
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
448-
golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc=
449-
golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
450-
golang.org/x/term v0.29.0 h1:L6pJp37ocefwRRtYPKSWOWzOtWSxVajvz2ldH/xi3iU=
451-
golang.org/x/term v0.29.0/go.mod h1:6bl4lRlvVuDgSf3179VpIxBF0o10JUpXWOnI7nErv7s=
448+
golang.org/x/sys v0.31.0 h1:ioabZlmFYtWhL+TRYpcnNlLwhyxaM9kWTDEmfnprqik=
449+
golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
450+
golang.org/x/term v0.30.0 h1:PQ39fJZ+mfadBm0y5WlL4vlM7Sx1Hgf13sMIY2+QS9Y=
451+
golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g=
452452
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
453453
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
454-
golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM=
455-
golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY=
454+
golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
455+
golang.org/x/text v0.23.0/go.mod h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
456456
golang.org/x/time v0.10.0 h1:3usCWA8tQn0L8+hFJQNgzpWbd89begxN66o1Ojdn5L4=
457457
golang.org/x/time v0.10.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
458458
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -492,8 +492,8 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
492492
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
493493
gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
494494
gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
495-
helm.sh/helm/v3 v3.17.1 h1:gzVoAD+qVuoJU6KDMSAeo0xRJ6N1znRxz3wyuXRmJDk=
496-
helm.sh/helm/v3 v3.17.1/go.mod h1:nvreuhuR+j78NkQcLC3TYoprCKStLyw5P4T7E5itv2w=
495+
helm.sh/helm/v3 v3.17.4 h1:GK+vgn9gKCyoH44+f3B5zpA78iH3AK4ywIInDEmmn/g=
496+
helm.sh/helm/v3 v3.17.4/go.mod h1:+uJKMH/UiMzZQOALR3XUf3BLIoczI2RKKD6bMhPh4G8=
497497
k8s.io/api v0.32.2 h1:bZrMLEkgizC24G9eViHGOPbW+aRo9duEISRIJKfdJuw=
498498
k8s.io/api v0.32.2/go.mod h1:hKlhk4x1sJyYnHENsrdCWw31FEmCijNGPJO5WzHiJ6Y=
499499
k8s.io/apiextensions-apiserver v0.32.2 h1:2YMk285jWMk2188V2AERy5yDwBYrjgWYggscghPCvV4=

pkg/wandb/spec/state/secrets/manager_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ var _ = Describe("Manager", func() {
8484
Values: map[string]interface{}{"foo": "bar"},
8585
}
8686
result, err := state.Get("default", "test-name")
87-
Expect(err.Error()).To(Equal("could not find a matching release in config map default/test-name"))
87+
Expect(err).To(BeNil())
8888
Expect(result).To(Equal(expectedSpec))
8989
})
9090
It("should return the spec when the secret and has proper values", func() {

pkg/wandb/spec/state/secrets/secrets.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,6 @@ func read(
6464

6565
chart := charts.Get(maybeChart)
6666
spec.SetChart(chart)
67-
if chart == nil {
68-
return spec, fmt.Errorf("could not find a matching release in config map %s/%s", objKey.Namespace, objKey.Name)
69-
}
7067

7168
return spec, nil
7269
}

0 commit comments

Comments
 (0)