mirror of
https://github.com/projectcapsule/capsule.git
synced 2026-08-19 12:36:39 +00:00
* feat: replicating resources upon namespace creation This feature enhances the (Global)TenantResource replication by triggering a replication of resources upon a Namespace creation: this speeds up the replication of resources without waiting for the resyncPeriod that could be delayed for several reasons. Signed-off-by: Dario Tranchitella <dario@tranchitella.eu> * fix: addressing fix from github copilot Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Dario Tranchitella <dario@tranchitella.eu> --------- Signed-off-by: Dario Tranchitella <dario@tranchitella.eu> Co-authored-by: Oliver Bähler <26610571+oliverbaehler@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
41 lines
1.1 KiB
Go
41 lines
1.1 KiB
Go
// Copyright 2020-2026 Project Capsule Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package processor
|
|
|
|
import (
|
|
k8smeta "k8s.io/apimachinery/pkg/api/meta"
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
|
"sigs.k8s.io/controller-runtime/pkg/client"
|
|
|
|
"github.com/projectcapsule/capsule/pkg/runtime/configuration"
|
|
"github.com/projectcapsule/capsule/pkg/runtime/gvk"
|
|
)
|
|
|
|
type Processor struct {
|
|
Configuration configuration.Configuration
|
|
AllowCrossNamespaceSelection bool
|
|
GatherClient client.Reader
|
|
Mapper k8smeta.RESTMapper
|
|
}
|
|
|
|
type ProcessorOptions struct {
|
|
FieldOwnerPrefix string
|
|
Prune bool
|
|
Adopt bool
|
|
Force bool
|
|
Owner *metav1.OwnerReference
|
|
}
|
|
|
|
// Scope narrows a reconciliation down to the items replicated into a
|
|
// single Namespace of a single Tenant.
|
|
type Scope struct {
|
|
Tenant string
|
|
Namespace string
|
|
}
|
|
|
|
// Matches states whether the given resource identity belongs to the scope.
|
|
func (s Scope) Matches(id gvk.ResourceID) bool {
|
|
return id.Tenant == s.Tenant && id.Namespace == s.Namespace
|
|
}
|