Merge pull request #15269 from brendandburns/apis
Auto commit by PR queue bot
This commit is contained in:
commit
0e5478efae
@ -71,15 +71,18 @@ func ExtractList(obj Object) ([]Object, error) {
|
|||||||
list := make([]Object, items.Len())
|
list := make([]Object, items.Len())
|
||||||
for i := range list {
|
for i := range list {
|
||||||
raw := items.Index(i)
|
raw := items.Index(i)
|
||||||
var found bool
|
switch item := raw.Interface().(type) {
|
||||||
switch raw.Kind() {
|
case Object:
|
||||||
case reflect.Interface, reflect.Ptr:
|
list[i] = item
|
||||||
list[i], found = raw.Interface().(Object)
|
case RawExtension:
|
||||||
default:
|
list[i] = &Unknown{
|
||||||
list[i], found = raw.Addr().Interface().(Object)
|
RawJSON: item.RawJSON,
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
var found bool
|
||||||
|
if list[i], found = raw.Addr().Interface().(Object); !found {
|
||||||
|
return nil, fmt.Errorf("%v: item[%v]: Expected object, got %#v(%s)", obj, i, raw.Interface(), raw.Kind())
|
||||||
}
|
}
|
||||||
if !found {
|
|
||||||
return nil, fmt.Errorf("item[%v]: Expected object, got %#v(%s)", i, raw.Interface(), raw.Kind())
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return list, nil
|
return list, nil
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
|
|
||||||
@ -87,6 +88,28 @@ func TestExtractListGeneric(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestExtractListGenericV1(t *testing.T) {
|
||||||
|
pl := &v1.List{
|
||||||
|
Items: []runtime.RawExtension{
|
||||||
|
{RawJSON: []byte("foo")},
|
||||||
|
{RawJSON: []byte("bar")},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
list, err := runtime.ExtractList(pl)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("Unexpected error %v", err)
|
||||||
|
}
|
||||||
|
if e, a := len(list), len(pl.Items); e != a {
|
||||||
|
t.Fatalf("Expected %v, got %v", e, a)
|
||||||
|
}
|
||||||
|
if obj, ok := list[0].(*runtime.Unknown); !ok {
|
||||||
|
t.Fatalf("Expected list[0] to be *runtime.Unknown, it is %#v", obj)
|
||||||
|
}
|
||||||
|
if obj, ok := list[1].(*runtime.Unknown); !ok {
|
||||||
|
t.Fatalf("Expected list[1] to be *runtime.Unknown, it is %#v", obj)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
type fakePtrInterfaceList struct {
|
type fakePtrInterfaceList struct {
|
||||||
Items *[]runtime.Object
|
Items *[]runtime.Object
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user