EtcdHelper.decodeList was not properly returning errors

This commit is contained in:
Clayton Coleman 2014-10-23 15:38:58 -04:00
parent 02bfcd6b6d
commit 3a89883223

View File

@ -164,8 +164,7 @@ func (h *EtcdHelper) ExtractList(key string, slicePtr interface{}, resourceVersi
if err != nil { if err != nil {
return err return err
} }
h.decodeNodeList(nodes, slicePtr) return h.decodeNodeList(nodes, slicePtr)
return nil
} }
// decodeNodeList walks the tree of each node in the list and decodes into the specified object // decodeNodeList walks the tree of each node in the list and decodes into the specified object
@ -178,18 +177,19 @@ func (h *EtcdHelper) decodeNodeList(nodes []*etcd.Node, slicePtr interface{}) er
v := pv.Elem() v := pv.Elem()
for _, node := range nodes { for _, node := range nodes {
if node.Dir { if node.Dir {
h.decodeNodeList(node.Nodes, slicePtr) if err := h.decodeNodeList(node.Nodes, slicePtr); err != nil {
return err
}
continue continue
} }
obj := reflect.New(v.Type().Elem()) obj := reflect.New(v.Type().Elem())
err := h.Codec.DecodeInto([]byte(node.Value), obj.Interface().(runtime.Object)) if err := h.Codec.DecodeInto([]byte(node.Value), obj.Interface().(runtime.Object)); err != nil {
return err
}
if h.ResourceVersioner != nil { if h.ResourceVersioner != nil {
_ = h.ResourceVersioner.SetResourceVersion(obj.Interface().(runtime.Object), node.ModifiedIndex) _ = h.ResourceVersioner.SetResourceVersion(obj.Interface().(runtime.Object), node.ModifiedIndex)
// being unable to set the version does not prevent the object from being extracted // being unable to set the version does not prevent the object from being extracted
} }
if err != nil {
return err
}
v.Set(reflect.Append(v, obj.Elem())) v.Set(reflect.Append(v, obj.Elem()))
} }
return nil return nil
@ -203,13 +203,11 @@ func (h *EtcdHelper) ExtractToList(key string, listObj runtime.Object) error {
if err != nil { if err != nil {
return err return err
} }
err = h.ExtractList(key, listPtr, &resourceVersion) if err := h.ExtractList(key, listPtr, &resourceVersion); err != nil {
if err != nil {
return err return err
} }
if h.ResourceVersioner != nil { if h.ResourceVersioner != nil {
err = h.ResourceVersioner.SetResourceVersion(listObj, resourceVersion) if err := h.ResourceVersioner.SetResourceVersion(listObj, resourceVersion); err != nil {
if err != nil {
return err return err
} }
} }