From aac099e7c271086f758b71f3d9f7ce389bc667b3 Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Fri, 23 Jan 2026 11:20:40 +0100 Subject: [PATCH] fake client-go: un-deprecate NewSimpleClientset NewSimpleClientset was marked as deprecated when NewClientset was introduced. This has caused some confusion: - Not all packages have NewClientset (https://github.com/kubernetes/kubernetes/issues/135980). - Tests that work with NewSimpleClientset fail when switched to NewClientset (https://github.com/kubernetes/kubernetes/issues/136327) because of missing CRD support (https://github.com/kubernetes/kubernetes/issues/126850). It doesn't seem burdensome to keep NewSimpleClientset around forever. Some unit tests may even prefer to use it when they don't need server-side apply (less overhead). Therefore there is no need to deprecate it. This avoids churn in the eco system because contributors no longer create PRs "because the linter complains about the usage of a deprecated function". Kubernetes-commit: e80da21868059f789c90105a00481fa8cef169e1 --- kubernetes/fake/clientset_generated.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/kubernetes/fake/clientset_generated.go b/kubernetes/fake/clientset_generated.go index f7d284de2..f748ccc6a 100644 --- a/kubernetes/fake/clientset_generated.go +++ b/kubernetes/fake/clientset_generated.go @@ -139,10 +139,6 @@ import ( // It's backed by a very simple object tracker that processes creates, updates and deletions as-is, // without applying any field management, validations and/or defaults. It shouldn't be considered a replacement // for a real clientset and is mostly useful in simple unit tests. -// -// Deprecated: NewClientset replaces this with support for field management, which significantly improves -// server side apply testing. NewClientset is only available when apply configurations are generated (e.g. -// via --with-applyconfig). func NewSimpleClientset(objects ...runtime.Object) *Clientset { o := testing.NewObjectTracker(scheme, codecs.UniversalDecoder()) for _, obj := range objects { @@ -203,6 +199,10 @@ func (c *Clientset) IsWatchListSemanticsUnSupported() bool { // It's backed by a very simple object tracker that processes creates, updates and deletions as-is, // without applying any validations and/or defaults. It shouldn't be considered a replacement // for a real clientset and is mostly useful in simple unit tests. +// +// Compared to NewSimpleClientset, the Clientset returned here supports field tracking and thus +// server-side apply. Beware though that support in that for CRDs is missing +// (https://github.com/kubernetes/kubernetes/issues/126850). func NewClientset(objects ...runtime.Object) *Clientset { o := testing.NewFieldManagedObjectTracker( scheme,