Skip to content

Commit de2b469

Browse files
committed
Fix ugly but non functional error messages in maintenance contolller
plus tests for the maintenance controller
1 parent 9438c23 commit de2b469

6 files changed

Lines changed: 515 additions & 11 deletions

File tree

pkg/controller/maintenance/add.go

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,23 +62,41 @@ func (r *Reconciler) AddToManager(mgr manager.Manager) error {
6262
// ShootPredicate returns the predicates for the core.gardener.cloud/v1beta1.Shoot watch.
6363
func (r *Reconciler) ShootPredicate() predicate.Predicate {
6464
return predicate.Funcs{
65+
CreateFunc: func(e event.CreateEvent) bool {
66+
shoot, ok := e.Object.(*gardencorev1beta1.Shoot)
67+
if !ok {
68+
return false
69+
}
70+
return hasFalcoLabel(shoot)
71+
},
6572
UpdateFunc: func(e event.UpdateEvent) bool {
6673
shoot, ok := e.ObjectNew.(*gardencorev1beta1.Shoot)
6774
if !ok {
68-
return ok
75+
return false
76+
}
77+
78+
if !hasFalcoLabel(shoot) {
79+
return false
6980
}
7081

7182
oldShoot, ok := e.ObjectOld.(*gardencorev1beta1.Shoot)
7283
if !ok {
73-
return ok
84+
return false
7485
}
75-
maintain := (hasMaintainNowAnnotation(shoot) && !hasMaintainNowAnnotation(oldShoot)) ||
76-
!apiequality.Semantic.DeepEqual(oldShoot.Spec.Maintenance.TimeWindow, shoot.Spec.Maintenance.TimeWindow)
7786

78-
key := "extensions.extensions.gardener.cloud/shoot-falco-service"
79-
val, ok := shoot.Labels[key]
80-
81-
return maintain && ok && val == "true"
87+
return (hasMaintainNowAnnotation(shoot) && !hasMaintainNowAnnotation(oldShoot)) ||
88+
!apiequality.Semantic.DeepEqual(oldShoot.Spec.Maintenance.TimeWindow, shoot.Spec.Maintenance.TimeWindow)
89+
},
90+
DeleteFunc: func(_ event.DeleteEvent) bool {
91+
return false
92+
},
93+
GenericFunc: func(_ event.GenericEvent) bool {
94+
return false
8295
},
8396
}
8497
}
98+
99+
func hasFalcoLabel(shoot *gardencorev1beta1.Shoot) bool {
100+
val, ok := shoot.Labels["extensions.extensions.gardener.cloud/shoot-falco-service"]
101+
return ok && val == "true"
102+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// SPDX-FileCopyrightText: 2026 SAP SE or an SAP affiliate company and Gardener contributors
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package maintenance
6+
7+
import "github.com/gardener/gardener-extension-shoot-falco-service/pkg/admission/mutator"
8+
9+
// SetMutator sets the mutator on the reconciler (test-only export).
10+
func (r *Reconciler) SetMutator(m *mutator.Shoot) {
11+
r.mutator = m
12+
}
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// SPDX-FileCopyrightText: 2026 SAP SE or an SAP affiliate company and Gardener contributors
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package maintenance_test
6+
7+
import (
8+
gardencorev1beta1 "github.com/gardener/gardener/pkg/apis/core/v1beta1"
9+
"k8s.io/apimachinery/pkg/runtime"
10+
"sigs.k8s.io/controller-runtime/pkg/client"
11+
crfake "sigs.k8s.io/controller-runtime/pkg/client/fake"
12+
13+
"github.com/gardener/gardener-extension-shoot-falco-service/pkg/admission/mutator"
14+
"github.com/gardener/gardener-extension-shoot-falco-service/pkg/controller/maintenance"
15+
)
16+
17+
func setMutator(r *maintenance.Reconciler, m *mutator.Shoot) {
18+
r.SetMutator(m)
19+
}
20+
21+
func newFakeClientWithShoot(scheme *runtime.Scheme, shoot *gardencorev1beta1.Shoot) client.Client {
22+
b := crfake.NewClientBuilder().WithScheme(scheme)
23+
if shoot != nil {
24+
b = b.WithObjects(shoot)
25+
}
26+
return b.Build()
27+
}
28+
29+
type fakeRecorder struct{}
30+
31+
func (r *fakeRecorder) Eventf(_ runtime.Object, _ runtime.Object, _, _, _, _ string, _ ...interface{}) {
32+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// SPDX-FileCopyrightText: 2026 SAP SE or an SAP affiliate company and Gardener contributors
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package maintenance_test
6+
7+
import (
8+
"testing"
9+
10+
. "github.com/onsi/ginkgo/v2"
11+
. "github.com/onsi/gomega"
12+
)
13+
14+
func TestMaintenance(t *testing.T) {
15+
RegisterFailHandler(Fail)
16+
RunSpecs(t, "Maintenance Controller Suite")
17+
}

0 commit comments

Comments
 (0)