Commit 67f6754e authored by AdoHe's avatar AdoHe

kubectl resource filter convert unstructured obj before apply filter func

parent 1de096bd
......@@ -58,6 +58,17 @@ func filterPods(obj runtime.Object, options PrintOptions) bool {
// Filter loops through a collection of FilterFuncs until it finds one that can filter the given resource
func (f Filters) Filter(obj runtime.Object, opts *PrintOptions) (bool, error) {
// check if the object is unstructured. If so, let's attempt to convert it to a type we can understand
// before apply filter func.
switch obj.(type) {
case *runtime.UnstructuredList, *runtime.Unstructured, *runtime.Unknown:
if objBytes, err := runtime.Encode(api.Codecs.LegacyCodec(), obj); err == nil {
if decodedObj, err := runtime.Decode(api.Codecs.UniversalDecoder(), objBytes); err == nil {
obj = decodedObj
}
}
}
for _, filter := range f {
if ok := filter(obj, *opts); ok {
return true, nil
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment