mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-27 13:37:30 +00:00
FlattenListVisitor now continues traversal on errors and returns an
aggregate error
This commit is contained in:
parent
d2b553045a
commit
58e7d16fb7
@ -372,10 +372,10 @@ func (v ContinueOnErrorVisitor) Visit(fn VisitorFunc) error {
|
|||||||
|
|
||||||
// FlattenListVisitor flattens any objects that runtime.ExtractList recognizes as a list
|
// FlattenListVisitor flattens any objects that runtime.ExtractList recognizes as a list
|
||||||
// - has an "Items" public field that is a slice of runtime.Objects or objects satisfying
|
// - has an "Items" public field that is a slice of runtime.Objects or objects satisfying
|
||||||
// that interface - into multiple Infos. An error on any sub item (for instance, if a List
|
// that interface - into multiple Infos. Returns nil in the case of no errors.
|
||||||
// contains an object that does not have a registered client or resource) will terminate
|
// When an error is hit on sub items (for instance, if a List contains an object that does
|
||||||
// the visit.
|
// not have a registered client or resource), returns an aggregate error.
|
||||||
// TODO: allow errors to be aggregated?
|
|
||||||
type FlattenListVisitor struct {
|
type FlattenListVisitor struct {
|
||||||
visitor Visitor
|
visitor Visitor
|
||||||
typer runtime.ObjectTyper
|
typer runtime.ObjectTyper
|
||||||
@ -425,20 +425,23 @@ func (v FlattenListVisitor) Visit(fn VisitorFunc) error {
|
|||||||
if info.Mapping != nil && !info.Mapping.GroupVersionKind.Empty() {
|
if info.Mapping != nil && !info.Mapping.GroupVersionKind.Empty() {
|
||||||
preferredGVKs = append(preferredGVKs, info.Mapping.GroupVersionKind)
|
preferredGVKs = append(preferredGVKs, info.Mapping.GroupVersionKind)
|
||||||
}
|
}
|
||||||
|
errs := []error{}
|
||||||
for i := range items {
|
for i := range items {
|
||||||
item, err := v.mapper.infoForObject(items[i], v.typer, preferredGVKs)
|
item, err := v.mapper.infoForObject(items[i], v.typer, preferredGVKs)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
errs = append(errs, err)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
if len(info.ResourceVersion) != 0 {
|
if len(info.ResourceVersion) != 0 {
|
||||||
item.ResourceVersion = info.ResourceVersion
|
item.ResourceVersion = info.ResourceVersion
|
||||||
}
|
}
|
||||||
if err := fn(item, nil); err != nil {
|
if err := fn(item, nil); err != nil {
|
||||||
return err
|
errs = append(errs, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return utilerrors.NewAggregate(errs)
|
||||||
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user