mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-13 13:14:05 +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.
|
// 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 {
|
func (h *EtcdHelper) ExtractList(key string, slicePtr interface{}, resourceVersion *uint64) error {
|
||||||
nodes, index, err := h.listEtcdNode(key)
|
nodes, index, err := h.listEtcdNode(key)
|
||||||
if resourceVersion != nil {
|
if resourceVersion != nil {
|
||||||
@@ -152,6 +153,27 @@ func (h *EtcdHelper) ExtractList(key string, slicePtr interface{}, resourceVersi
|
|||||||
return nil
|
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
|
// 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
|
// 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.
|
// 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)
|
try(fmt.Errorf("some other kind of error"), false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestExtractList(t *testing.T) {
|
func TestExtractToList(t *testing.T) {
|
||||||
fakeClient := NewFakeEtcdClient(t)
|
fakeClient := NewFakeEtcdClient(t)
|
||||||
fakeClient.Data["/some/key"] = EtcdResponseWithError{
|
fakeClient.Data["/some/key"] = EtcdResponseWithError{
|
||||||
R: &etcd.Response{
|
R: &etcd.Response{
|
||||||
@@ -88,27 +88,23 @@ func TestExtractList(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
expect := []api.Pod{
|
expect := api.PodList{
|
||||||
{JSONBase: api.JSONBase{ID: "foo", ResourceVersion: 1}},
|
JSONBase: api.JSONBase{ResourceVersion: 10},
|
||||||
{JSONBase: api.JSONBase{ID: "bar", ResourceVersion: 2}},
|
Items: []api.Pod{
|
||||||
{JSONBase: api.JSONBase{ID: "baz", ResourceVersion: 3}},
|
{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}
|
helper := EtcdHelper{fakeClient, latest.Codec, versioner}
|
||||||
resourceVersion := uint64(0)
|
err := helper.ExtractToList("/some/key", &got)
|
||||||
err := helper.ExtractList("/some/key", &got, &resourceVersion)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("Unexpected error %#v", err)
|
t.Errorf("Unexpected error %v", err)
|
||||||
}
|
}
|
||||||
if resourceVersion != 10 {
|
if e, a := expect, got; !reflect.DeepEqual(e, a) {
|
||||||
t.Errorf("Unexpected resource version %d", resourceVersion)
|
t.Errorf("Expected %#v, got %#v", e, a)
|
||||||
}
|
|
||||||
|
|
||||||
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])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user