Skip to content

Commit

Permalink
Use Subresource client for shoots/binding and drop generated clientset
Browse files Browse the repository at this point in the history
  • Loading branch information
shafeeqes committed Jan 27, 2023
1 parent 6e17c0f commit e05e8c1
Show file tree
Hide file tree
Showing 15 changed files with 20 additions and 117 deletions.
1 change: 0 additions & 1 deletion pkg/apis/core/v1alpha1/types_shoot.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
1 change: 0 additions & 1 deletion pkg/apis/core/v1beta1/types_shoot.go
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 0 additions & 16 deletions pkg/client/core/clientset/versioned/typed/core/v1alpha1/shoot.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

16 changes: 0 additions & 16 deletions pkg/client/core/clientset/versioned/typed/core/v1beta1/shoot.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

13 changes: 3 additions & 10 deletions pkg/scheduler/controller/add.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,21 +19,14 @@ import (

"sigs.k8s.io/controller-runtime/pkg/manager"

gardencoreversionedclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned"
"github.com/gardener/gardener/pkg/scheduler/apis/config"
shootcontroller "github.com/gardener/gardener/pkg/scheduler/controller/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 := gardencoreversionedclientset.NewForConfig(mgr.GetConfig())
if err != nil {
return fmt.Errorf("unable to create versioned garden API client: %w", err)
}

if err := (&shootcontroller.Reconciler{
Config: cfg.Schedulers.Shoot,
VersionedGardenerClient: versionedGardenerClient,
if err := (&shoot.Reconciler{
Config: cfg.Schedulers.Shoot,
}).AddToManager(mgr); err != nil {
return fmt.Errorf("failed adding Shoot controller: %w", err)
}
Expand Down
10 changes: 4 additions & 6 deletions pkg/scheduler/controller/shoot/reconciler.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,18 +31,16 @@ import (

gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper"
gardencoreversionedclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned"
"github.com/gardener/gardener/pkg/scheduler/apis/config"
kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes"
cidrvalidation "github.com/gardener/gardener/pkg/utils/validation/cidr"
)

// Reconciler schedules shoots to seeds.
type Reconciler struct {
Client client.Client
Config *config.ShootSchedulerConfiguration
VersionedGardenerClient *gardencoreversionedclientset.Clientset
Recorder record.EventRecorder
Client client.Client
Config *config.ShootSchedulerConfiguration
Recorder record.EventRecorder
}

// Reconcile schedules shoots to seeds.
Expand Down Expand Up @@ -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
Expand Down
9 changes: 1 addition & 8 deletions test/framework/gardener_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (

gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants"
gardencoreversionedclientset "github.com/gardener/gardener/pkg/client/core/clientset/versioned"
"github.com/gardener/gardener/pkg/client/kubernetes"
gardenerutils "github.com/gardener/gardener/pkg/utils/gardener"
kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes"
Expand Down Expand Up @@ -413,14 +412,8 @@ func (f *GardenerFramework) MigrateShoot(ctx context.Context, shoot *gardencorev
return err
}

restConfig := f.GardenClient.RESTConfig()
versionedCoreClient, err := gardencoreversionedclientset.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)
}

Expand Down
14 changes: 5 additions & 9 deletions test/integration/controllermanager/bastion/bastion_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/manager"

"github.com/gardener/gardener/pkg/api/indexer"
gardencoreversionedclientset "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"
Expand All @@ -56,12 +55,11 @@ var (
ctx = context.Background()
log logr.Logger

restConfig *rest.Config
testEnv *gardenerenvtest.GardenerTestEnvironment
testClient client.Client
mgrClient client.Reader
testCoreClient *gardencoreversionedclientset.Clientset
logBuffer *gbytes.Buffer
restConfig *rest.Config
testEnv *gardenerenvtest.GardenerTestEnvironment
testClient client.Client
mgrClient client.Reader
logBuffer *gbytes.Buffer

testNamespace *corev1.Namespace

Expand Down Expand Up @@ -97,8 +95,6 @@ var _ = BeforeSuite(func() {
By("Create test clients")
testClient, err = client.New(restConfig, client.Options{Scheme: kubernetes.GardenScheme})
Expect(err).NotTo(HaveOccurred())
testCoreClient, err = gardencoreversionedclientset.NewForConfig(restConfig)
Expect(err).NotTo(HaveOccurred())

By("Create test Namespace")
testNamespace = &corev1.Namespace{
Expand Down
2 changes: 1 addition & 1 deletion test/integration/controllermanager/bastion/bastion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,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())
})

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,6 @@ import (
"sigs.k8s.io/controller-runtime/pkg/manager"

gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
gardencoreversionedclientset "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"
Expand All @@ -62,11 +61,10 @@ var (
log logr.Logger
fakeClock *testclock.FakeClock

restConfig *rest.Config
testEnv *gardenerenvtest.GardenerTestEnvironment
testClient client.Client
testCoreClient *gardencoreversionedclientset.Clientset
testRunID string
restConfig *rest.Config
testEnv *gardenerenvtest.GardenerTestEnvironment
testClient client.Client
testRunID string

seed *gardencorev1beta1.Seed
testNamespace *corev1.Namespace
Expand Down Expand Up @@ -103,8 +101,6 @@ var _ = BeforeSuite(func() {
By("Create test client")
testClient, err = client.New(restConfig, client.Options{Scheme: kubernetes.GardenScheme})
Expect(err).NotTo(HaveOccurred())
testCoreClient, err = gardencoreversionedclientset.NewForConfig(restConfig)
Expect(err).NotTo(HaveOccurred())

testRunID = testID + "-" + utils.ComputeSHA256Hex([]byte(uuid.NewUUID()))[:8]
log.Info("Using test run ID for test", "testRunID", testRunID)
Expand Down
3 changes: 1 addition & 2 deletions test/integration/gardenlet/shoot/migration/migration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
})

Expand Down
3 changes: 1 addition & 2 deletions test/integration/scheduler/shoot/shoot_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -243,8 +243,7 @@ func createAndStartManager(config *config.ShootSchedulerConfiguration) {

By("Register controller")
Expect((&shootcontroller.Reconciler{
Config: config,
VersionedGardenerClient: versionedTestClient,
Config: config,
}).AddToManager(mgr)).To(Succeed())

By("Start manager")
Expand Down

0 comments on commit e05e8c1

Please sign in to comment.