GC: Add check for nil interface

pull/6/head
Jordan Liggitt 2017-10-05 22:43:08 -04:00
parent fef3b03188
commit 34ed25cf52
No known key found for this signature in database
GPG Key ID: 39928704103C7229
2 changed files with 19 additions and 0 deletions

View File

@ -17,6 +17,8 @@ limitations under the License.
package rbac
import (
"reflect"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/conversion"
"k8s.io/apimachinery/pkg/runtime"
@ -25,6 +27,10 @@ import (
// IsOnlyMutatingGCFields checks finalizers and ownerrefs which GC manipulates
// and indicates that only those fields are changing
func IsOnlyMutatingGCFields(obj, old runtime.Object, equalities conversion.Equalities) bool {
if old == nil || reflect.ValueOf(old).IsNil() {
return false
}
// make a copy of the newObj so that we can stomp for comparison
copied := obj.DeepCopyObject()
copiedMeta, err := meta.Accessor(copied)

View File

@ -128,6 +128,19 @@ func TestIsOnlyMutatingGCFields(t *testing.T) {
},
expected: false,
},
{
name: "and nil",
obj: func() runtime.Object {
obj := newPod()
obj.OwnerReferences = append(obj.OwnerReferences, metav1.OwnerReference{Name: "foo"})
obj.Spec.RestartPolicy = kapi.RestartPolicyAlways
return obj
},
old: func() runtime.Object {
return (*kapi.Pod)(nil)
},
expected: false,
},
}
for _, tc := range tests {