diff --git a/pkg/endpoints/request/context.go b/pkg/endpoints/request/context.go index 03f78fe17..95166f5c4 100644 --- a/pkg/endpoints/request/context.go +++ b/pkg/endpoints/request/context.go @@ -20,7 +20,6 @@ import ( "context" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" "k8s.io/apiserver/pkg/apis/audit" "k8s.io/apiserver/pkg/authentication/user" ) @@ -35,12 +34,6 @@ const ( // userKey is the context key for the request user. userKey - // uidKey is the context key for the uid to assign to an object on create. - uidKey - - // userAgentKey is the context key for the request user agent. - userAgentKey - // auditKey is the context key for the audit event. auditKey ) @@ -77,15 +70,6 @@ func NamespaceValue(ctx context.Context) string { return namespace } -// WithNamespaceDefaultIfNone returns a context whose namespace is the default if and only if the parent context has no namespace value -func WithNamespaceDefaultIfNone(parent context.Context) context.Context { - namespace, ok := NamespaceFrom(parent) - if !ok || len(namespace) == 0 { - return WithNamespace(parent, metav1.NamespaceDefault) - } - return parent -} - // WithUser returns a copy of parent in which the user value is set func WithUser(parent context.Context, user user.Info) context.Context { return WithValue(parent, userKey, user) @@ -97,17 +81,6 @@ func UserFrom(ctx context.Context) (user.Info, bool) { return user, ok } -// WithUID returns a copy of parent in which the uid value is set -func WithUID(parent context.Context, uid types.UID) context.Context { - return WithValue(parent, uidKey, uid) -} - -// UIDFrom returns the value of the uid key on the ctx -func UIDFrom(ctx context.Context) (types.UID, bool) { - uid, ok := ctx.Value(uidKey).(types.UID) - return uid, ok -} - // WithAuditEvent returns set audit event struct. func WithAuditEvent(parent context.Context, ev *audit.Event) context.Context { return WithValue(parent, auditKey, ev) diff --git a/pkg/endpoints/request/context_test.go b/pkg/endpoints/request/context_test.go index 2a311770d..72b3124b4 100644 --- a/pkg/endpoints/request/context_test.go +++ b/pkg/endpoints/request/context_test.go @@ -20,7 +20,6 @@ import ( "testing" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/types" "k8s.io/apiserver/pkg/authentication/user" ) @@ -92,20 +91,3 @@ func TestUserContext(t *testing.T) { } } - -//TestUIDContext validates that a UID can be get/set on a context object -func TestUIDContext(t *testing.T) { - ctx := NewContext() - _, ok := UIDFrom(ctx) - if ok { - t.Fatalf("Should not be ok because there is no UID on the context") - } - ctx = WithUID( - ctx, - types.UID("testUID"), - ) - _, ok = UIDFrom(ctx) - if !ok { - t.Fatalf("Error getting UID") - } -} diff --git a/pkg/registry/rest/create.go b/pkg/registry/rest/create.go index a52c673cc..f399ebdc2 100644 --- a/pkg/registry/rest/create.go +++ b/pkg/registry/rest/create.go @@ -87,7 +87,7 @@ func BeforeCreate(strategy RESTCreateStrategy, ctx context.Context, obj runtime. objectMeta.SetDeletionTimestamp(nil) objectMeta.SetDeletionGracePeriodSeconds(nil) strategy.PrepareForCreate(ctx, obj) - FillObjectMetaSystemFields(ctx, objectMeta) + FillObjectMetaSystemFields(objectMeta) if len(objectMeta.GetGenerateName()) > 0 && len(objectMeta.GetName()) == 0 { objectMeta.SetName(strategy.GenerateName(objectMeta.GetGenerateName())) } diff --git a/pkg/registry/rest/meta.go b/pkg/registry/rest/meta.go index 86f184d0c..add6044ab 100644 --- a/pkg/registry/rest/meta.go +++ b/pkg/registry/rest/meta.go @@ -25,15 +25,9 @@ import ( ) // FillObjectMetaSystemFields populates fields that are managed by the system on ObjectMeta. -func FillObjectMetaSystemFields(ctx context.Context, meta metav1.Object) { +func FillObjectMetaSystemFields(meta metav1.Object) { meta.SetCreationTimestamp(metav1.Now()) - // allows admission controllers to assign a UID earlier in the request processing - // to support tracking resources pending creation. - uid, found := genericapirequest.UIDFrom(ctx) - if !found { - uid = uuid.NewUUID() - } - meta.SetUID(uid) + meta.SetUID(uuid.NewUUID()) meta.SetSelfLink("") } diff --git a/pkg/registry/rest/meta_test.go b/pkg/registry/rest/meta_test.go index a6710423b..cec33b67a 100644 --- a/pkg/registry/rest/meta_test.go +++ b/pkg/registry/rest/meta_test.go @@ -21,34 +21,26 @@ import ( "k8s.io/apimachinery/pkg/api/meta" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "k8s.io/apimachinery/pkg/util/uuid" "k8s.io/apiserver/pkg/apis/example" genericapirequest "k8s.io/apiserver/pkg/endpoints/request" ) // TestFillObjectMetaSystemFields validates that system populated fields are set on an object func TestFillObjectMetaSystemFields(t *testing.T) { - ctx := genericapirequest.NewDefaultContext() resource := metav1.ObjectMeta{} - FillObjectMetaSystemFields(ctx, &resource) + FillObjectMetaSystemFields(&resource) if resource.CreationTimestamp.Time.IsZero() { t.Errorf("resource.CreationTimestamp is zero") } else if len(resource.UID) == 0 { t.Errorf("resource.UID missing") } - // verify we can inject a UID - uid := uuid.NewUUID() - ctx = genericapirequest.WithUID(ctx, uid) - resource = metav1.ObjectMeta{} - FillObjectMetaSystemFields(ctx, &resource) - if resource.UID != uid { - t.Errorf("resource.UID expected: %v, actual: %v", uid, resource.UID) + if len(resource.UID) == 0 { + t.Errorf("resource.UID missing") } } // TestHasObjectMetaSystemFieldValues validates that true is returned if and only if all fields are populated func TestHasObjectMetaSystemFieldValues(t *testing.T) { - ctx := genericapirequest.NewDefaultContext() resource := metav1.ObjectMeta{} objMeta, err := meta.Accessor(&resource) if err != nil { @@ -57,7 +49,7 @@ func TestHasObjectMetaSystemFieldValues(t *testing.T) { if metav1.HasObjectMetaSystemFieldValues(objMeta) { t.Errorf("the resource does not have all fields yet populated, but incorrectly reports it does") } - FillObjectMetaSystemFields(ctx, &resource) + FillObjectMetaSystemFields(&resource) if !metav1.HasObjectMetaSystemFieldValues(objMeta) { t.Errorf("the resource does have all fields populated, but incorrectly reports it does not") }