mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-25 11:31:44 +00:00
Apply resource versioning to list extractions from etcd
Set the resource version on lists of objects extracted from etcd to prevent them from always being interpreted as new during updates.
This commit is contained in:
parent
9050c819dc
commit
b986c520a7
@ -140,6 +140,10 @@ func (h *EtcdHelper) ExtractList(key string, slicePtr interface{}) error {
|
||||
for _, node := range nodes {
|
||||
obj := reflect.New(v.Type().Elem())
|
||||
err = h.Codec.DecodeInto([]byte(node.Value), obj.Interface())
|
||||
if h.ResourceVersioner != nil {
|
||||
_ = h.ResourceVersioner.SetResourceVersion(obj.Interface(), node.ModifiedIndex)
|
||||
// being unable to set the version does not prevent the object from being extracted
|
||||
}
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -70,30 +70,37 @@ func TestExtractList(t *testing.T) {
|
||||
Nodes: []*etcd.Node{
|
||||
{
|
||||
Value: `{"id":"foo"}`,
|
||||
ModifiedIndex: 1,
|
||||
},
|
||||
{
|
||||
Value: `{"id":"bar"}`,
|
||||
ModifiedIndex: 2,
|
||||
},
|
||||
{
|
||||
Value: `{"id":"baz"}`,
|
||||
ModifiedIndex: 3,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
expect := []api.Pod{
|
||||
{JSONBase: api.JSONBase{ID: "foo"}},
|
||||
{JSONBase: api.JSONBase{ID: "bar"}},
|
||||
{JSONBase: api.JSONBase{ID: "baz"}},
|
||||
{JSONBase: api.JSONBase{ID: "foo", ResourceVersion: 1}},
|
||||
{JSONBase: api.JSONBase{ID: "bar", ResourceVersion: 2}},
|
||||
{JSONBase: api.JSONBase{ID: "baz", ResourceVersion: 3}},
|
||||
}
|
||||
|
||||
var got []api.Pod
|
||||
helper := EtcdHelper{fakeClient, codec, versioner}
|
||||
err := helper.ExtractList("/some/key", &got)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error %#v", err)
|
||||
}
|
||||
if !reflect.DeepEqual(got, expect) {
|
||||
t.Errorf("Wanted %#v, got %#v", expect, got)
|
||||
|
||||
for i := 0; i < len(expect); i++ {
|
||||
if !reflect.DeepEqual(got[i], expect[i]) {
|
||||
t.Errorf("\nWanted:\n%#v\nGot:\n%#v\n", expect[i], got[i])
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user