Files
Oliver BählerandGitHub 34262c5536 fix: improve rules api (#1961)
* 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: preserve ca-bundles injected from external providers

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

* fix: improve rules api

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

* fix: improve rules api

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

* fix: improve rules api

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

* fix: improve rules api

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

* fix: improve rules api

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

* fix: improve rules api

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

* fix: improve rules api

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

* fix: improve rules api

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>
2026-06-10 00:18:40 +02:00

69 lines
1.5 KiB
Go

// Copyright 2020-2026 Project Capsule Authors
// SPDX-License-Identifier: Apache-2.0
package invalidator
import (
"context"
"fmt"
"github.com/go-logr/logr"
"sigs.k8s.io/controller-runtime/pkg/client"
capsulev1beta2 "github.com/projectcapsule/capsule/api/v1beta2"
"github.com/projectcapsule/capsule/pkg/api/meta"
)
func (r *CacheInvalidator) rebuildRuleStatusRegistryCache(ctx context.Context, log logr.Logger) error {
rsList := &capsulev1beta2.RuleStatusList{}
if err := r.List(ctx, rsList,
client.MatchingLabels{
meta.NewManagedByCapsuleLabel: meta.ValueController,
meta.CapsuleNameLabel: meta.NameForManagedRuleStatus(),
},
); err != nil {
return err
}
log.V(5).Info("rebuilding registry cache from existing rules",
"ruleStatuses", len(rsList.Items),
"cacheRulesBefore", r.RegistryCache.Stats(),
)
r.RegistryCache.Reset()
for i := range rsList.Items {
item := &rsList.Items[i]
for _, rule := range item.Status.Rules {
if rule == nil {
continue
}
if rule.Enforce == nil {
continue
}
if len(rule.Enforce.Workloads.Registries) == 0 {
continue
}
if _, _, err := r.RegistryCache.GetOrBuild(rule.Enforce.Workloads.Registries); err != nil {
return fmt.Errorf(
"build registry cache for RuleStatus %s/%s: %w",
item.Namespace,
item.Name,
err,
)
}
}
}
log.V(5).Info("rebuilt registry cache from existing rules",
"ruleStatuses", len(rsList.Items),
"cacheRulesAfter", r.RegistryCache.Stats(),
)
return nil
}