From 9d41c0099adc9a9328209075421eb42681bd4b09 Mon Sep 17 00:00:00 2001 From: David Eads Date: Tue, 26 Feb 2019 14:37:58 -0500 Subject: [PATCH] make audit metadata work for custom resources --- staging/src/k8s.io/apiserver/pkg/audit/BUILD | 1 + staging/src/k8s.io/apiserver/pkg/audit/request.go | 9 +++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/staging/src/k8s.io/apiserver/pkg/audit/BUILD b/staging/src/k8s.io/apiserver/pkg/audit/BUILD index f71da4d4243..f6923a2828a 100644 --- a/staging/src/k8s.io/apiserver/pkg/audit/BUILD +++ b/staging/src/k8s.io/apiserver/pkg/audit/BUILD @@ -19,6 +19,7 @@ go_library( importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/audit", importpath = "k8s.io/apiserver/pkg/audit", deps = [ + "//staging/src/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", diff --git a/staging/src/k8s.io/apiserver/pkg/audit/request.go b/staging/src/k8s.io/apiserver/pkg/audit/request.go index d4b12770eab..7ddf764ba6d 100644 --- a/staging/src/k8s.io/apiserver/pkg/audit/request.go +++ b/staging/src/k8s.io/apiserver/pkg/audit/request.go @@ -20,13 +20,13 @@ import ( "bytes" "fmt" "net/http" + "reflect" "time" "github.com/pborman/uuid" "k8s.io/klog" - "reflect" - + "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime/schema" @@ -117,8 +117,9 @@ func LogRequestObject(ae *auditinternal.Event, obj runtime.Object, gvr schema.Gr if ae.ObjectRef == nil { ae.ObjectRef = &auditinternal.ObjectReference{} } - if acc, ok := obj.(metav1.ObjectMetaAccessor); ok { - meta := acc.GetObjectMeta() + + // meta.Accessor is more general than ObjectMetaAccessor, but if it fails, we can just skip setting these bits + if meta, err := meta.Accessor(obj); err == nil { if len(ae.ObjectRef.Namespace) == 0 { ae.ObjectRef.Namespace = meta.GetNamespace() }