Files
3d1158ed23 fix: correct tls reconciler and add tenantowners (#1946)
* fix(controller): decode old object for delete requests

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: modernize golang

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: modernize golang

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* chore: modernize golang

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>

* fix: tls controller

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* feat: add tenantowner tenant status reference

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* fix: tlsreconciler only patches cabundles

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* chore: refactor logger usage

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* fix: tlsreconciler only patches cabundles

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

* fix: tlsreconciler only patches cabundles

Signed-off-by: Oliver Baehler <oliver@sudo-i.net>

---------

Signed-off-by: Oliver Bähler <oliverbaehler@hotmail.com>
Signed-off-by: Oliver Baehler <oliver@sudo-i.net>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-06-03 16:02:17 +02:00

78 lines
2.1 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package predicates
import (
"sigs.k8s.io/controller-runtime/pkg/event"
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
"github.com/projectcapsule/capsule/pkg/api/rbac"
)
type TenantStatusOwnersChangedPredicate struct{}
func (TenantStatusOwnersChangedPredicate) Create(e event.CreateEvent) bool {
tenant, ok := e.Object.(*capsulev1beta2.Tenant)
if !ok {
return false
}
return len(tenant.Status.Owners) > 0
}
func (TenantStatusOwnersChangedPredicate) Delete(e event.DeleteEvent) bool {
tenant, ok := e.Object.(*capsulev1beta2.Tenant)
if !ok {
return false
}
return len(tenant.Status.Owners) > 0
}
func (TenantStatusOwnersChangedPredicate) Generic(e event.GenericEvent) bool {
tenant, ok := e.Object.(*capsulev1beta2.Tenant)
if !ok {
return false
}
return len(tenant.Status.Owners) > 0
}
// TenantCountChangedPredicate fires on Tenant create/delete only.
// Update events are ignored because only create and delete change the set of
// tenants; updates to labels, spec, or status do not affect tenant membership.
// Kept separate from TenantStatusOwnersChangedPredicate which intentionally ignores
// create/delete because those do not affect user aggregation.
type TenantCountChangedPredicate struct{}
func (TenantCountChangedPredicate) Create(event.CreateEvent) bool { return true }
func (TenantCountChangedPredicate) Delete(event.DeleteEvent) bool { return true }
func (TenantCountChangedPredicate) Generic(event.GenericEvent) bool { return false }
func (TenantCountChangedPredicate) Update(event.UpdateEvent) bool { return false }
func (TenantStatusOwnersChangedPredicate) Update(e event.UpdateEvent) bool {
oldObj, ok1 := e.ObjectOld.(*capsulev1beta2.Tenant)
newObj, ok2 := e.ObjectNew.(*capsulev1beta2.Tenant)
if !ok1 || !ok2 {
return false
}
return ownersChanged(oldObj.Status.Owners, newObj.Status.Owners)
}
func ownersChanged(a, b rbac.OwnerStatusListSpec) bool {
if len(a) != len(b) {
return true
}
for i := range a {
if a[i].Name != b[i].Name || a[i].Kind != b[i].Kind {
return true
}
}
return false
}