Skip to content

Commit 507f400

Browse files
committed
mockkubeapiserver: set generation on objects
Aiming for a little bit more fidelity, also enables us to test observedGeneration (in future).
1 parent 83bd9c0 commit 507f400

File tree

3 files changed

+20
-0
lines changed

3 files changed

+20
-0
lines changed

mockkubeapiserver/patchresource.go

+11
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"fmt"
2323
"io"
2424
"net/http"
25+
"reflect"
2526
"strconv"
2627

2728
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -79,6 +80,9 @@ func (req *patchResource) Run(ctx context.Context, s *MockKubeAPIServer) error {
7980
// TODO: Should we treat this like an apply to an empty object?
8081

8182
patched := body
83+
84+
patched.SetGeneration(1)
85+
8286
if err := resource.CreateObject(ctx, id, patched); err != nil {
8387
return err
8488
}
@@ -124,6 +128,13 @@ func (req *patchResource) Run(ctx context.Context, s *MockKubeAPIServer) error {
124128
klog.Infof("skipping write, object not changed")
125129
return req.writeResponse(existingObj)
126130
} else {
131+
bumpGeneration := !reflect.DeepEqual(existingObj.Object["spec"], updated.Object["spec"])
132+
if bumpGeneration {
133+
generation := updated.GetGeneration()
134+
generation++
135+
updated.SetGeneration(generation)
136+
}
137+
127138
if err := resource.UpdateObject(ctx, id, updated); err != nil {
128139
return err
129140
}

mockkubeapiserver/putresource.go

+7
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,13 @@ func (req *putResource) Run(ctx context.Context, s *MockKubeAPIServer) error {
8989
return req.writeResponse(original)
9090
}
9191

92+
bumpGeneration := !reflect.DeepEqual(original.Object["spec"], updated.Object["spec"])
93+
if bumpGeneration {
94+
generation := updated.GetGeneration()
95+
generation++
96+
updated.SetGeneration(generation)
97+
}
98+
9299
if err := resource.UpdateObject(ctx, id, updated); err != nil {
93100
return err
94101
}

mockkubeapiserver/storage/memorystorage/memorystorage.go

+2
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,8 @@ func (s *MemoryStorage) AddObject(obj *unstructured.Unstructured) error {
125125
return fmt.Errorf("object group/version/kind %v not known", gvk)
126126
}
127127

128+
obj.SetGeneration(1)
129+
128130
return resource.CreateObject(ctx, id, obj)
129131
}
130132

0 commit comments

Comments
 (0)