mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-12 12:48:51 +00:00
Make ExtractToList, deprecate ExtractList.
This commit is contained in:
@@ -123,6 +123,7 @@ func (h *EtcdHelper) listEtcdNode(key string) ([]*etcd.Node, uint64, error) {
|
||||
}
|
||||
|
||||
// ExtractList extracts a go object per etcd node into a slice with the resource version.
|
||||
// DEPRECATED: Use ExtractToList instead, it's more convenient.
|
||||
func (h *EtcdHelper) ExtractList(key string, slicePtr interface{}, resourceVersion *uint64) error {
|
||||
nodes, index, err := h.listEtcdNode(key)
|
||||
if resourceVersion != nil {
|
||||
@@ -152,6 +153,27 @@ func (h *EtcdHelper) ExtractList(key string, slicePtr interface{}, resourceVersi
|
||||
return nil
|
||||
}
|
||||
|
||||
// ExtractToList is just like ExtractList, but it works on a ThingyList api object.
|
||||
// extracts a go object per etcd node into a slice with the resource version.
|
||||
func (h *EtcdHelper) ExtractToList(key string, listObj runtime.Object) error {
|
||||
var resourceVersion uint64
|
||||
listPtr, err := runtime.GetItemsPtr(listObj)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
err = h.ExtractList(key, listPtr, &resourceVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if h.ResourceVersioner != nil {
|
||||
err = h.ResourceVersioner.SetResourceVersion(listObj, resourceVersion)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// ExtractObj unmarshals json found at key into objPtr. On a not found error, will either return
|
||||
// a zero object of the requested type, or an error, depending on ignoreNotFound. Treats
|
||||
// empty responses and nil response nodes exactly like a not found error.
|
||||
|
@@ -65,7 +65,7 @@ func TestIsEtcdNotFound(t *testing.T) {
|
||||
try(fmt.Errorf("some other kind of error"), false)
|
||||
}
|
||||
|
||||
func TestExtractList(t *testing.T) {
|
||||
func TestExtractToList(t *testing.T) {
|
||||
fakeClient := NewFakeEtcdClient(t)
|
||||
fakeClient.Data["/some/key"] = EtcdResponseWithError{
|
||||
R: &etcd.Response{
|
||||
@@ -88,27 +88,23 @@ func TestExtractList(t *testing.T) {
|
||||
},
|
||||
},
|
||||
}
|
||||
expect := []api.Pod{
|
||||
{JSONBase: api.JSONBase{ID: "foo", ResourceVersion: 1}},
|
||||
{JSONBase: api.JSONBase{ID: "bar", ResourceVersion: 2}},
|
||||
{JSONBase: api.JSONBase{ID: "baz", ResourceVersion: 3}},
|
||||
expect := api.PodList{
|
||||
JSONBase: api.JSONBase{ResourceVersion: 10},
|
||||
Items: []api.Pod{
|
||||
{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
|
||||
var got api.PodList
|
||||
helper := EtcdHelper{fakeClient, latest.Codec, versioner}
|
||||
resourceVersion := uint64(0)
|
||||
err := helper.ExtractList("/some/key", &got, &resourceVersion)
|
||||
err := helper.ExtractToList("/some/key", &got)
|
||||
if err != nil {
|
||||
t.Errorf("Unexpected error %#v", err)
|
||||
t.Errorf("Unexpected error %v", err)
|
||||
}
|
||||
if resourceVersion != 10 {
|
||||
t.Errorf("Unexpected resource version %d", resourceVersion)
|
||||
}
|
||||
|
||||
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])
|
||||
}
|
||||
if e, a := expect, got; !reflect.DeepEqual(e, a) {
|
||||
t.Errorf("Expected %#v, got %#v", e, a)
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user