Skip to content

Commit bb6e241

Browse files
Handle the context in webhook
Signed-off-by: Michel Hollands <[email protected]>
1 parent 02ea947 commit bb6e241

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

pkg/admission/annotations.go

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@ const (
1818
)
1919

2020
func addDownscaledAnnotationToStatefulSet(ctx context.Context, api kubernetes.Interface, namespace, stsName string) error {
21+
select {
22+
case <-ctx.Done():
23+
return fmt.Errorf("context cancelled")
24+
default:
25+
}
26+
2127
client := api.AppsV1().StatefulSets(namespace)
2228
patch := fmt.Sprintf(`{"metadata":{"annotations":{"%v":"%v"}}}`, LastDownscaleAnnotationKey, time.Now().UTC().Format(time.RFC3339))
2329
_, err := client.Patch(ctx, stsName, types.StrategicMergePatchType, []byte(patch), v1.PatchOptions{})
@@ -31,6 +37,11 @@ type statefulSet struct {
3137
}
3238

3339
func findDownscalesDoneMinTimeAgo(ctx context.Context, api kubernetes.Interface, namespace, stsName, rolloutGroup string) (*statefulSet, error) {
40+
select {
41+
case <-ctx.Done():
42+
return nil, fmt.Errorf("context cancelled")
43+
default:
44+
}
3445
client := api.AppsV1().StatefulSets(namespace)
3546
groupReq, err := labels.NewRequirement(RolloutGroupLabelKey, selection.Equals, []string{rolloutGroup})
3647
if err != nil {

pkg/admission/no_downscale.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,12 @@ func allowErr(logger log.Logger, msg string, err error) *v1.AdmissionResponse {
140140
}
141141

142142
func getResourceLabels(ctx context.Context, ar v1.AdmissionReview, api kubernetes.Interface) (map[string]string, error) {
143+
select {
144+
case <-ctx.Done():
145+
return nil, fmt.Errorf("context cancelled")
146+
default:
147+
}
148+
143149
switch ar.Request.Resource.Resource {
144150
case "statefulsets":
145151
obj, err := api.AppsV1().StatefulSets(ar.Request.Namespace).Get(ctx, ar.Request.Name, metav1.GetOptions{})

pkg/admission/prep_downscale.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ type httpClient interface {
3939
}
4040

4141
func prepareDownscale(ctx context.Context, logger log.Logger, ar v1.AdmissionReview, api kubernetes.Interface, client httpClient) *v1.AdmissionResponse {
42+
select {
43+
case <-ctx.Done():
44+
return deny("context cancelled")
45+
default:
46+
}
47+
4248
logger = log.With(logger, "name", ar.Request.Name, "resource", ar.Request.Resource.Resource, "namespace", ar.Request.Namespace)
4349

4450
oldObj, oldGVK, err := codecs.UniversalDeserializer().Decode(ar.Request.OldObject.Raw, nil, nil)
@@ -253,11 +259,17 @@ func deny(msg string, args ...any) *v1.AdmissionResponse {
253259
}
254260

255261
func getResourceAnnotations(ctx context.Context, ar v1.AdmissionReview, api kubernetes.Interface) (map[string]string, error) {
262+
select {
263+
case <-ctx.Done():
264+
return nil, fmt.Errorf("context cancelled")
265+
default:
266+
}
267+
256268
switch ar.Request.Resource.Resource {
257269
case "statefulsets":
258270
obj, err := api.AppsV1().StatefulSets(ar.Request.Namespace).Get(ctx, ar.Request.Name, metav1.GetOptions{})
259271
if err != nil {
260-
return nil, err
272+
return nil, err
261273
}
262274
return obj.Annotations, nil
263275
}

0 commit comments

Comments
 (0)