diff --git a/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go b/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go index c95f1ff9ff7..1e799c6e2cc 100644 --- a/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go +++ b/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store.go @@ -373,7 +373,7 @@ func (e *Store) Create(ctx context.Context, obj runtime.Object, createValidation } } if e.Decorator != nil { - if err := e.Decorator(obj); err != nil { + if err := e.Decorator(out); err != nil { return nil, err } } diff --git a/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store_test.go b/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store_test.go index 76ed138af81..328ddca12d3 100644 --- a/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store_test.go +++ b/staging/src/k8s.io/apiserver/pkg/registry/generic/registry/store_test.go @@ -311,6 +311,11 @@ func TestStoreCreate(t *testing.T) { // re-define delete strategy to have graceful delete capability defaultDeleteStrategy := testRESTStrategy{scheme, names.SimpleNameGenerator, true, false, true} registry.DeleteStrategy = testGracefulStrategy{defaultDeleteStrategy} + registry.Decorator = func(obj runtime.Object) error { + pod := obj.(*example.Pod) + pod.Status.Phase = example.PodPhase("Testing") + return nil + } // create the object with denying admission objA, err := registry.Create(testContext, podA, denyCreateValidation, false) @@ -324,6 +329,11 @@ func TestStoreCreate(t *testing.T) { t.Errorf("Unexpected error: %v", err) } + // verify the decorator was called + if objA.(*example.Pod).Status.Phase != example.PodPhase("Testing") { + t.Errorf("Decorator was not called: %#v", objA) + } + // get the object checkobj, err := registry.Get(testContext, podA.Name, &metav1.GetOptions{}) if err != nil {