diff --git a/pkg/apis/core/v1alpha1/types_shoot.go b/pkg/apis/core/v1alpha1/types_shoot.go index 34bc4a0be06..07977c9f2ea 100644 --- a/pkg/apis/core/v1alpha1/types_shoot.go +++ b/pkg/apis/core/v1alpha1/types_shoot.go @@ -28,7 +28,6 @@ import ( // +genclient // +genclient:method=CreateAdminKubeconfigRequest,verb=create,subresource=adminkubeconfig,input=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest,result=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest -// +genclient:method=UpdateBinding,verb=update,subresource=binding // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Shoot represents a Shoot cluster created and managed by Gardener. diff --git a/pkg/apis/core/v1beta1/types_shoot.go b/pkg/apis/core/v1beta1/types_shoot.go index 9d2a690e077..e1433bcf015 100644 --- a/pkg/apis/core/v1beta1/types_shoot.go +++ b/pkg/apis/core/v1beta1/types_shoot.go @@ -28,7 +28,6 @@ import ( // +genclient // +genclient:method=CreateAdminKubeconfigRequest,verb=create,subresource=adminkubeconfig,input=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest,result=github.com/gardener/gardener/pkg/apis/authentication/v1alpha1.AdminKubeconfigRequest -// +genclient:method=UpdateBinding,verb=update,subresource=binding // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // Shoot represents a Shoot cluster created and managed by Gardener. diff --git a/pkg/client/core/clientset/versioned/typed/core/v1alpha1/fake/fake_shoot.go b/pkg/client/core/clientset/versioned/typed/core/v1alpha1/fake/fake_shoot.go index 00d64f79897..08849e3cab0 100644 --- a/pkg/client/core/clientset/versioned/typed/core/v1alpha1/fake/fake_shoot.go +++ b/pkg/client/core/clientset/versioned/typed/core/v1alpha1/fake/fake_shoot.go @@ -152,14 +152,3 @@ func (c *FakeShoots) CreateAdminKubeconfigRequest(ctx context.Context, shootName } return obj.(*authenticationv1alpha1.AdminKubeconfigRequest), err } - -// UpdateBinding takes the representation of a shoot and updates it. Returns the server's representation of the shoot, and an error, if there is any. -func (c *FakeShoots) UpdateBinding(ctx context.Context, shootName string, shoot *v1alpha1.Shoot, opts v1.UpdateOptions) (result *v1alpha1.Shoot, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(shootsResource, "binding", c.ns, shoot), &v1alpha1.Shoot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1alpha1.Shoot), err -} diff --git a/pkg/client/core/clientset/versioned/typed/core/v1alpha1/shoot.go b/pkg/client/core/clientset/versioned/typed/core/v1alpha1/shoot.go index 187a4d06535..e7dc7d37b19 100644 --- a/pkg/client/core/clientset/versioned/typed/core/v1alpha1/shoot.go +++ b/pkg/client/core/clientset/versioned/typed/core/v1alpha1/shoot.go @@ -49,7 +49,6 @@ type ShootInterface interface { Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1alpha1.Shoot, err error) CreateAdminKubeconfigRequest(ctx context.Context, shootName string, adminKubeconfigRequest *authenticationv1alpha1.AdminKubeconfigRequest, opts v1.CreateOptions) (*authenticationv1alpha1.AdminKubeconfigRequest, error) - UpdateBinding(ctx context.Context, shootName string, shoot *v1alpha1.Shoot, opts v1.UpdateOptions) (*v1alpha1.Shoot, error) ShootExpansion } @@ -212,18 +211,3 @@ func (c *shoots) CreateAdminKubeconfigRequest(ctx context.Context, shootName str Into(result) return } - -// UpdateBinding takes the top resource name and the representation of a shoot and updates it. Returns the server's representation of the shoot, and an error, if there is any. -func (c *shoots) UpdateBinding(ctx context.Context, shootName string, shoot *v1alpha1.Shoot, opts v1.UpdateOptions) (result *v1alpha1.Shoot, err error) { - result = &v1alpha1.Shoot{} - err = c.client.Put(). - Namespace(c.ns). - Resource("shoots"). - Name(shootName). - SubResource("binding"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(shoot). - Do(ctx). - Into(result) - return -} diff --git a/pkg/client/core/clientset/versioned/typed/core/v1beta1/fake/fake_shoot.go b/pkg/client/core/clientset/versioned/typed/core/v1beta1/fake/fake_shoot.go index a04f2b34148..b2cad6c5814 100644 --- a/pkg/client/core/clientset/versioned/typed/core/v1beta1/fake/fake_shoot.go +++ b/pkg/client/core/clientset/versioned/typed/core/v1beta1/fake/fake_shoot.go @@ -152,14 +152,3 @@ func (c *FakeShoots) CreateAdminKubeconfigRequest(ctx context.Context, shootName } return obj.(*v1alpha1.AdminKubeconfigRequest), err } - -// UpdateBinding takes the representation of a shoot and updates it. Returns the server's representation of the shoot, and an error, if there is any. -func (c *FakeShoots) UpdateBinding(ctx context.Context, shootName string, shoot *v1beta1.Shoot, opts v1.UpdateOptions) (result *v1beta1.Shoot, err error) { - obj, err := c.Fake. - Invokes(testing.NewUpdateSubresourceAction(shootsResource, "binding", c.ns, shoot), &v1beta1.Shoot{}) - - if obj == nil { - return nil, err - } - return obj.(*v1beta1.Shoot), err -} diff --git a/pkg/client/core/clientset/versioned/typed/core/v1beta1/mock/mocks.go b/pkg/client/core/clientset/versioned/typed/core/v1beta1/mock/mocks.go index 489816bbeb8..257fd4ef882 100644 --- a/pkg/client/core/clientset/versioned/typed/core/v1beta1/mock/mocks.go +++ b/pkg/client/core/clientset/versioned/typed/core/v1beta1/mock/mocks.go @@ -355,21 +355,6 @@ func (mr *MockShootInterfaceMockRecorder) Update(arg0, arg1, arg2 interface{}) * return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Update", reflect.TypeOf((*MockShootInterface)(nil).Update), arg0, arg1, arg2) } -// UpdateBinding mocks base method. -func (m *MockShootInterface) UpdateBinding(arg0 context.Context, arg1 string, arg2 *v1beta1.Shoot, arg3 v1.UpdateOptions) (*v1beta1.Shoot, error) { - m.ctrl.T.Helper() - ret := m.ctrl.Call(m, "UpdateBinding", arg0, arg1, arg2, arg3) - ret0, _ := ret[0].(*v1beta1.Shoot) - ret1, _ := ret[1].(error) - return ret0, ret1 -} - -// UpdateBinding indicates an expected call of UpdateBinding. -func (mr *MockShootInterfaceMockRecorder) UpdateBinding(arg0, arg1, arg2, arg3 interface{}) *gomock.Call { - mr.mock.ctrl.T.Helper() - return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateBinding", reflect.TypeOf((*MockShootInterface)(nil).UpdateBinding), arg0, arg1, arg2, arg3) -} - // UpdateStatus mocks base method. func (m *MockShootInterface) UpdateStatus(arg0 context.Context, arg1 *v1beta1.Shoot, arg2 v1.UpdateOptions) (*v1beta1.Shoot, error) { m.ctrl.T.Helper() diff --git a/pkg/client/core/clientset/versioned/typed/core/v1beta1/shoot.go b/pkg/client/core/clientset/versioned/typed/core/v1beta1/shoot.go index 52748caa147..6bc5f648724 100644 --- a/pkg/client/core/clientset/versioned/typed/core/v1beta1/shoot.go +++ b/pkg/client/core/clientset/versioned/typed/core/v1beta1/shoot.go @@ -49,7 +49,6 @@ type ShootInterface interface { Watch(ctx context.Context, opts v1.ListOptions) (watch.Interface, error) Patch(ctx context.Context, name string, pt types.PatchType, data []byte, opts v1.PatchOptions, subresources ...string) (result *v1beta1.Shoot, err error) CreateAdminKubeconfigRequest(ctx context.Context, shootName string, adminKubeconfigRequest *v1alpha1.AdminKubeconfigRequest, opts v1.CreateOptions) (*v1alpha1.AdminKubeconfigRequest, error) - UpdateBinding(ctx context.Context, shootName string, shoot *v1beta1.Shoot, opts v1.UpdateOptions) (*v1beta1.Shoot, error) ShootExpansion } @@ -212,18 +211,3 @@ func (c *shoots) CreateAdminKubeconfigRequest(ctx context.Context, shootName str Into(result) return } - -// UpdateBinding takes the top resource name and the representation of a shoot and updates it. Returns the server's representation of the shoot, and an error, if there is any. -func (c *shoots) UpdateBinding(ctx context.Context, shootName string, shoot *v1beta1.Shoot, opts v1.UpdateOptions) (result *v1beta1.Shoot, err error) { - result = &v1beta1.Shoot{} - err = c.client.Put(). - Namespace(c.ns). - Resource("shoots"). - Name(shootName). - SubResource("binding"). - VersionedParams(&opts, scheme.ParameterCodec). - Body(shoot). - Do(ctx). - Into(result) - return -} diff --git a/pkg/scheduler/controller/add.go b/pkg/scheduler/controller/add.go index 9ed72cb5896..ec9e5c9e836 100644 --- a/pkg/scheduler/controller/add.go +++ b/pkg/scheduler/controller/add.go @@ -19,21 +19,14 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" - gardenversionedcoreclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned" "github.com/gardener/gardener/pkg/scheduler/apis/config" shoot "github.com/gardener/gardener/pkg/scheduler/controller/shoot" ) // AddToManager adds all scheduler controllers to the given manager. func AddToManager(mgr manager.Manager, cfg *config.SchedulerConfiguration) error { - versionedGardenerClient, err := gardenversionedcoreclientset.NewForConfig(mgr.GetConfig()) - if err != nil { - return fmt.Errorf("unable to create versioned garden API client: %w", err) - } - if err := (&shoot.Reconciler{ - Config: cfg.Schedulers.Shoot, - VersionedGardenerClient: versionedGardenerClient, + Config: cfg.Schedulers.Shoot, }).AddToManager(mgr); err != nil { return fmt.Errorf("failed adding Shoot controller: %w", err) } diff --git a/pkg/scheduler/controller/shoot/reconciler.go b/pkg/scheduler/controller/shoot/reconciler.go index d309069e021..9b29f547ac3 100644 --- a/pkg/scheduler/controller/shoot/reconciler.go +++ b/pkg/scheduler/controller/shoot/reconciler.go @@ -21,7 +21,6 @@ import ( gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" gardencorev1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper" - gardenversionedcoreclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned" "github.com/gardener/gardener/pkg/scheduler/apis/config" kutil "github.com/gardener/gardener/pkg/utils/kubernetes" cidrvalidation "github.com/gardener/gardener/pkg/utils/validation/cidr" @@ -39,10 +38,9 @@ import ( // Reconciler schedules shoots to seeds. type Reconciler struct { - Client client.Client - Config *config.ShootSchedulerConfiguration - VersionedGardenerClient *gardenversionedcoreclientset.Clientset - Recorder record.EventRecorder + Client client.Client + Config *config.ShootSchedulerConfiguration + Recorder record.EventRecorder } // Reconcile schedules shoots to seeds. @@ -76,7 +74,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, request reconcile.Request) ( } shoot.Spec.SeedName = &seed.Name - if _, err = r.VersionedGardenerClient.CoreV1beta1().Shoots(shoot.GetNamespace()).UpdateBinding(ctx, shoot.GetName(), shoot, metav1.UpdateOptions{}); err != nil { + if err = r.Client.SubResource("binding").Update(ctx, shoot); err != nil { log.Error(err, "Failed to bind shoot to seed") r.reportFailedScheduling(shoot, err) return reconcile.Result{}, err diff --git a/test/framework/gardener_utils.go b/test/framework/gardener_utils.go index e8729e62239..c9ab957bcdb 100644 --- a/test/framework/gardener_utils.go +++ b/test/framework/gardener_utils.go @@ -21,7 +21,6 @@ import ( gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants" - gardenversionedcoreclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned" "github.com/gardener/gardener/pkg/client/kubernetes" gutil "github.com/gardener/gardener/pkg/utils/gardener" kutil "github.com/gardener/gardener/pkg/utils/kubernetes" @@ -413,14 +412,8 @@ func (f *GardenerFramework) MigrateShoot(ctx context.Context, shoot *gardencorev return err } - restConfig := f.GardenClient.RESTConfig() - versionedCoreClient, err := gardenversionedcoreclientset.NewForConfig(restConfig) - if err != nil { - return fmt.Errorf("failed create versioned core client: %w", err) - } - shoot.Spec.SeedName = &seed.Name - if _, err = versionedCoreClient.CoreV1beta1().Shoots(shoot.GetNamespace()).UpdateBinding(ctx, shoot.GetName(), shoot, metav1.UpdateOptions{}); err != nil { + if err := f.GardenClient.Client().SubResource("binding").Update(ctx, shoot); err != nil { return fmt.Errorf("failed updating binding for shoot %q: %w", client.ObjectKeyFromObject(shoot), err) } diff --git a/test/integration/controllermanager/bastion/bastion_suite_test.go b/test/integration/controllermanager/bastion/bastion_suite_test.go index f6b9a6891b6..8adf8ebf16c 100644 --- a/test/integration/controllermanager/bastion/bastion_suite_test.go +++ b/test/integration/controllermanager/bastion/bastion_suite_test.go @@ -25,7 +25,6 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" "github.com/gardener/gardener/pkg/api/indexer" - gardenversionedcoreclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned" "github.com/gardener/gardener/pkg/client/kubernetes" "github.com/gardener/gardener/pkg/controllermanager/apis/config" "github.com/gardener/gardener/pkg/controllermanager/controller/bastion" @@ -57,12 +56,11 @@ var ( ctx = context.Background() log logr.Logger - restConfig *rest.Config - testEnv *gardenerenvtest.GardenerTestEnvironment - testClient client.Client - mgrClient client.Reader - testCoreClient *gardenversionedcoreclientset.Clientset - logBuffer *gbytes.Buffer + restConfig *rest.Config + testEnv *gardenerenvtest.GardenerTestEnvironment + testClient client.Client + mgrClient client.Reader + logBuffer *gbytes.Buffer testNamespace *corev1.Namespace @@ -98,8 +96,6 @@ var _ = BeforeSuite(func() { By("creating test clients") testClient, err = client.New(restConfig, client.Options{Scheme: kubernetes.GardenScheme}) Expect(err).NotTo(HaveOccurred()) - testCoreClient, err = gardenversionedcoreclientset.NewForConfig(restConfig) - Expect(err).NotTo(HaveOccurred()) By("creating test namespace") testNamespace = &corev1.Namespace{ diff --git a/test/integration/controllermanager/bastion/bastion_test.go b/test/integration/controllermanager/bastion/bastion_test.go index c16312015d3..e4360a7aefa 100644 --- a/test/integration/controllermanager/bastion/bastion_test.go +++ b/test/integration/controllermanager/bastion/bastion_test.go @@ -178,7 +178,7 @@ var _ = Describe("Bastion controller tests", func() { By("Change Shoot's .spec.seedName") shoot.Spec.SeedName = pointer.String("another-seed") - shoot, err = testCoreClient.CoreV1beta1().Shoots(shoot.GetNamespace()).UpdateBinding(ctx, shoot.GetName(), shoot, metav1.UpdateOptions{}) + err = testClient.SubResource("binding").Update(ctx, shoot) Expect(err).NotTo(HaveOccurred()) }) diff --git a/test/integration/gardenlet/shoot/migration/migration_suite_test.go b/test/integration/gardenlet/shoot/migration/migration_suite_test.go index 34588a48471..0501112dc84 100644 --- a/test/integration/gardenlet/shoot/migration/migration_suite_test.go +++ b/test/integration/gardenlet/shoot/migration/migration_suite_test.go @@ -37,7 +37,6 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1" - gardenversionedcoreclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned" "github.com/gardener/gardener/pkg/client/kubernetes" gardenerenvtest "github.com/gardener/gardener/pkg/envtest" "github.com/gardener/gardener/pkg/features" @@ -62,11 +61,10 @@ var ( log logr.Logger fakeClock *testclock.FakeClock - restConfig *rest.Config - testEnv *gardenerenvtest.GardenerTestEnvironment - testClient client.Client - testCoreClient *gardenversionedcoreclientset.Clientset - testRunID string + restConfig *rest.Config + testEnv *gardenerenvtest.GardenerTestEnvironment + testClient client.Client + testRunID string seed *gardencorev1beta1.Seed testNamespace *corev1.Namespace @@ -103,8 +101,6 @@ var _ = BeforeSuite(func() { By("creating test client") testClient, err = client.New(restConfig, client.Options{Scheme: kubernetes.GardenScheme}) Expect(err).NotTo(HaveOccurred()) - testCoreClient, err = gardenversionedcoreclientset.NewForConfig(restConfig) - Expect(err).NotTo(HaveOccurred()) testRunID = testID + "-" + utils.ComputeSHA256Hex([]byte(uuid.NewUUID()))[:8] log.Info("Using test run ID for test", "testRunID", testRunID) diff --git a/test/integration/gardenlet/shoot/migration/migration_test.go b/test/integration/gardenlet/shoot/migration/migration_test.go index 945db3f1b77..4e57b96b160 100644 --- a/test/integration/gardenlet/shoot/migration/migration_test.go +++ b/test/integration/gardenlet/shoot/migration/migration_test.go @@ -122,8 +122,7 @@ var _ = Describe("Shoot migration controller tests", func() { By("Patch .spec.seedName in Shoot to " + seed.Name) shoot.Spec.SeedName = pointer.String(seed.Name) - var err error - shoot, err = testCoreClient.CoreV1beta1().Shoots(shoot.GetNamespace()).UpdateBinding(ctx, shoot.GetName(), shoot, metav1.UpdateOptions{}) + err := testClient.SubResource("binding").Update(ctx, shoot) Expect(err).NotTo(HaveOccurred()) }) diff --git a/test/integration/scheduler/shoot/scheduler_test.go b/test/integration/scheduler/shoot/scheduler_test.go index b1d4b00ae94..d9186b6a754 100644 --- a/test/integration/scheduler/shoot/scheduler_test.go +++ b/test/integration/scheduler/shoot/scheduler_test.go @@ -243,8 +243,7 @@ func createAndStartManager(config *config.ShootSchedulerConfiguration) { By("registering controller") Expect((&shootcontroller.Reconciler{ - Config: config, - VersionedGardenerClient: versionedTestClient, + Config: config, }).AddToManager(mgr)).To(Succeed()) By("starting manager")