Skip to content

Commit

Permalink
Cleanup obsolete IsBeingMigratedPredicate predicate
Browse files Browse the repository at this point in the history
  • Loading branch information
dimitar-kostadinov committed May 9, 2023
1 parent e2cbab2 commit c573792
Show file tree
Hide file tree
Showing 4 changed files with 0 additions and 198 deletions.
43 changes: 0 additions & 43 deletions pkg/controllerutils/predicate/predicate.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
package predicate

import (
"context"
"reflect"

"sigs.k8s.io/controller-runtime/pkg/client"
Expand All @@ -27,7 +26,6 @@ import (
v1beta1constants "github.com/gardener/gardener/pkg/apis/core/v1beta1/constants"
v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper"
resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1"
contextutils "github.com/gardener/gardener/pkg/utils/context"
gardenerutils "github.com/gardener/gardener/pkg/utils/gardener"
)

Expand Down Expand Up @@ -222,47 +220,6 @@ func lastOperationStateChanged(oldObj, newObj client.Object) bool {
return false
}

// IsBeingMigratedPredicate returns a predicate which returns true for objects that are being migrated to a different
// seed cluster.
func IsBeingMigratedPredicate(reader client.Reader, seedName string, getSeedNamesFromObject func(client.Object) (*string, *string)) predicate.Predicate {
return &isBeingMigratedPredicate{
reader: reader,
seedName: seedName,
getSeedNamesFromObject: getSeedNamesFromObject,
}
}

type isBeingMigratedPredicate struct {
ctx context.Context
reader client.Reader
seedName string
getSeedNamesFromObject func(client.Object) (*string, *string)
}

func (p *isBeingMigratedPredicate) InjectStopChannel(stopChan <-chan struct{}) error {
p.ctx = contextutils.FromStopChannel(stopChan)
return nil
}

// IsObjectBeingMigrated is an alias for gardenerutils.IsObjectBeingMigrated.
var IsObjectBeingMigrated = gardenerutils.IsObjectBeingMigrated

func (p *isBeingMigratedPredicate) Create(e event.CreateEvent) bool {
return IsObjectBeingMigrated(p.ctx, p.reader, e.Object, p.seedName, p.getSeedNamesFromObject)
}

func (p *isBeingMigratedPredicate) Update(e event.UpdateEvent) bool {
return IsObjectBeingMigrated(p.ctx, p.reader, e.ObjectNew, p.seedName, p.getSeedNamesFromObject)
}

func (p *isBeingMigratedPredicate) Delete(e event.DeleteEvent) bool {
return IsObjectBeingMigrated(p.ctx, p.reader, e.Object, p.seedName, p.getSeedNamesFromObject)
}

func (p *isBeingMigratedPredicate) Generic(e event.GenericEvent) bool {
return IsObjectBeingMigrated(p.ctx, p.reader, e.Object, p.seedName, p.getSeedNamesFromObject)
}

// SeedNamePredicate returns a predicate which returns true for objects that are being migrated to a different
// seed cluster.
func SeedNamePredicate(seedName string, getSeedNamesFromObject func(client.Object) (*string, *string)) predicate.Predicate {
Expand Down
37 changes: 0 additions & 37 deletions pkg/controllerutils/predicate/predicate_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,25 +15,19 @@
package predicate_test

import (
"context"

. "github.com/onsi/ginkgo/v2"
"github.com/onsi/gomega"
gomegatypes "github.com/onsi/gomega/types"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"sigs.k8s.io/controller-runtime/pkg/client"
fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake"
"sigs.k8s.io/controller-runtime/pkg/event"
"sigs.k8s.io/controller-runtime/pkg/predicate"
"sigs.k8s.io/controller-runtime/pkg/runtime/inject"

gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
extensionsv1alpha1 "github.com/gardener/gardener/pkg/apis/extensions/v1alpha1"
resourcesv1alpha1 "github.com/gardener/gardener/pkg/apis/resources/v1alpha1"
"github.com/gardener/gardener/pkg/client/kubernetes"
. "github.com/gardener/gardener/pkg/controllerutils/predicate"
"github.com/gardener/gardener/pkg/utils/test"
)

var _ = Describe("Predicate", func() {
Expand Down Expand Up @@ -479,37 +473,6 @@ var _ = Describe("Predicate", func() {
})
})

Describe("#IsBeingMigratedPredicate", func() {
var (
ctx = context.TODO()
fakeClient client.Client
p predicate.Predicate

obj *gardencorev1beta1.BackupEntry
seedName = "seed"
)

BeforeEach(func() {
fakeClient = fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).Build()

p = IsBeingMigratedPredicate(fakeClient, seedName, nil)
gomega.Expect(inject.StopChannelInto(ctx.Done(), p)).To(gomega.BeTrue())

DeferCleanup(test.WithVar(&IsObjectBeingMigrated, func(_ context.Context, _ client.Reader, obj client.Object, _ string, _ func(client.Object) (*string, *string)) bool {
return false
}))

obj = &gardencorev1beta1.BackupEntry{}
})

It("should call the IsObjectBeingMigrated helper functions", func() {
gomega.Expect(p.Create(event.CreateEvent{Object: obj})).To(gomega.BeFalse())
gomega.Expect(p.Update(event.UpdateEvent{ObjectNew: obj})).To(gomega.BeFalse())
gomega.Expect(p.Delete(event.DeleteEvent{Object: obj})).To(gomega.BeFalse())
gomega.Expect(p.Generic(event.GenericEvent{Object: obj})).To(gomega.BeFalse())
})
})

Describe("#SeedNamePredicate", func() {
var (
p predicate.Predicate
Expand Down
31 changes: 0 additions & 31 deletions pkg/utils/gardener/migration.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,37 +14,6 @@

package gardener

import (
"context"

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

gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
v1beta1helper "github.com/gardener/gardener/pkg/apis/core/v1beta1/helper"
kubernetesutils "github.com/gardener/gardener/pkg/utils/kubernetes"
)

// IsObjectBeingMigrated checks whether the object is being migrated.
func IsObjectBeingMigrated(
ctx context.Context,
reader client.Reader,
obj client.Object,
seedName string,
getSeedNamesFromObject func(client.Object) (*string, *string),
) bool {
specSeedName, statusSeedName := getSeedNamesFromObject(obj)

if specSeedName != nil && statusSeedName != nil && *specSeedName != *statusSeedName && *specSeedName == seedName {
seed := &gardencorev1beta1.Seed{}
if err := reader.Get(ctx, kubernetesutils.Key(*statusSeedName), seed); err != nil {
return false
}
return v1beta1helper.SeedSettingOwnerChecksEnabled(seed.Spec.Settings)
}

return false
}

// GetResponsibleSeedName returns the seed name which is responsible for the next reconciliation.
func GetResponsibleSeedName(specSeedName, statusSeedName *string) string {
switch {
Expand Down
87 changes: 0 additions & 87 deletions pkg/utils/gardener/migration_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,101 +15,14 @@
package gardener_test

import (
"context"

. "github.com/onsi/ginkgo/v2"
. "github.com/onsi/gomega"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/utils/pointer"
"sigs.k8s.io/controller-runtime/pkg/client"
fakeclient "sigs.k8s.io/controller-runtime/pkg/client/fake"

gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
"github.com/gardener/gardener/pkg/client/kubernetes"
. "github.com/gardener/gardener/pkg/utils/gardener"
)

var _ = Describe("Migration", func() {
Describe("#IsObjectBeingMigrated", func() {
var (
ctx = context.TODO()
fakeClient client.Client

obj *gardencorev1beta1.BackupEntry
sourceSeed *gardencorev1beta1.Seed
seedName = "seed"

getSeedNamesFromObject = func(obj client.Object) (*string, *string) {
backupEntry := obj.(*gardencorev1beta1.BackupEntry)
return backupEntry.Spec.SeedName, backupEntry.Status.SeedName
}
)

BeforeEach(func() {
fakeClient = fakeclient.NewClientBuilder().WithScheme(kubernetes.GardenScheme).Build()

sourceSeed = &gardencorev1beta1.Seed{
ObjectMeta: metav1.ObjectMeta{
Name: "source-seed",
},
Spec: gardencorev1beta1.SeedSpec{
Settings: &gardencorev1beta1.SeedSettings{
OwnerChecks: &gardencorev1beta1.SeedSettingOwnerChecks{
Enabled: true,
},
},
},
}

obj = &gardencorev1beta1.BackupEntry{
ObjectMeta: metav1.ObjectMeta{
Name: "entry",
},
Spec: gardencorev1beta1.BackupEntrySpec{
SeedName: &seedName,
},
Status: gardencorev1beta1.BackupEntryStatus{
SeedName: &sourceSeed.Name,
},
}
})

It("should return false if status.seedName is nil", func() {
obj.Status.SeedName = nil

Expect(IsObjectBeingMigrated(ctx, fakeClient, obj, seedName, getSeedNamesFromObject)).To(BeFalse())
})

It("should return false if spec.seedName and status.seedName are equal", func() {
obj.Status.SeedName = pointer.String("seed")

Expect(IsObjectBeingMigrated(ctx, fakeClient, obj, seedName, getSeedNamesFromObject)).To(BeFalse())
})

It("should return false if the obj does not belong to this seed", func() {
obj.Spec.SeedName = pointer.String("another-seed")

Expect(IsObjectBeingMigrated(ctx, fakeClient, obj, seedName, getSeedNamesFromObject)).To(BeFalse())
})

It("should return false if the get call on source seed fails", func() {
Expect(IsObjectBeingMigrated(ctx, fakeClient, obj, seedName, getSeedNamesFromObject)).To(BeFalse())
})

It("should return true if the source seed has owner checks enabled", func() {
Expect(fakeClient.Create(ctx, sourceSeed)).To(Succeed())

Expect(IsObjectBeingMigrated(ctx, fakeClient, obj, seedName, getSeedNamesFromObject)).To(BeTrue())
})

It("should return false if the source seed has owner checks disabled", func() {
sourceSeed.Spec.Settings.OwnerChecks.Enabled = false
Expect(fakeClient.Create(ctx, sourceSeed)).To(Succeed())

Expect(IsObjectBeingMigrated(ctx, fakeClient, obj, seedName, getSeedNamesFromObject)).To(BeFalse())
})
})

Describe("#GetResponsibleSeedName", func() {
It("returns nothing if spec.seedName is not set", func() {
Expect(GetResponsibleSeedName(nil, nil)).To(BeEmpty())
Expand Down

0 comments on commit c573792

Please sign in to comment.