From 7e967ce90d37f50f2a5e6adc2fa6514e0bb479b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Moreno=20Garc=C3=ADa?= Date: Thu, 22 Aug 2024 10:41:54 +0200 Subject: [PATCH] feat: use custom cache MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This commit implements a new cache so unrelated PipelineRuns are ignored. Signed-off-by: David Moreno GarcĂ­a --- controllers/release/adapter.go | 2 ++ main.go | 14 ++++++++++++++ metadata/labels.go | 5 +++++ 3 files changed, 21 insertions(+) diff --git a/controllers/release/adapter.go b/controllers/release/adapter.go index c79bc6de..0118c043 100644 --- a/controllers/release/adapter.go +++ b/controllers/release/adapter.go @@ -388,6 +388,7 @@ func (a *adapter) createManagedPipelineRun(resources *loader.ProcessingResources WithFinalizer(metadata.ReleaseFinalizer). WithLabels(map[string]string{ metadata.ApplicationNameLabel: resources.ReleasePlan.Spec.Application, + metadata.ServiceNameLabel: metadata.ServiceName, metadata.PipelinesTypeLabel: metadata.ManagedPipelineType, metadata.ReleaseNameLabel: a.release.Name, metadata.ReleaseNamespaceLabel: a.release.Namespace, @@ -429,6 +430,7 @@ func (a *adapter) createTenantPipelineRun(releasePlan *v1alpha1.ReleasePlan, sna WithFinalizer(metadata.ReleaseFinalizer). WithLabels(map[string]string{ metadata.ApplicationNameLabel: releasePlan.Spec.Application, + metadata.ServiceNameLabel: metadata.ServiceName, metadata.PipelinesTypeLabel: metadata.TenantPipelineType, metadata.ReleaseNameLabel: a.release.Name, metadata.ReleaseNamespaceLabel: a.release.Namespace, diff --git a/main.go b/main.go index cb63e2b9..c2ba4cbb 100644 --- a/main.go +++ b/main.go @@ -19,7 +19,11 @@ package main import ( "crypto/tls" "flag" + "github.com/konflux-ci/release-service/metadata" + "k8s.io/apimachinery/pkg/labels" + "k8s.io/client-go/rest" "os" + "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/metrics/server" crwebhook "sigs.k8s.io/controller-runtime/pkg/webhook" @@ -41,6 +45,7 @@ import ( utilruntime "k8s.io/apimachinery/pkg/util/runtime" clientgoscheme "k8s.io/client-go/kubernetes/scheme" ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/cache" "sigs.k8s.io/controller-runtime/pkg/healthz" "sigs.k8s.io/controller-runtime/pkg/log/zap" @@ -93,6 +98,15 @@ func main() { Metrics: server.Options{ BindAddress: metricsAddr, }, + NewCache: func(config *rest.Config, opts cache.Options) (cache.Cache, error) { + opts.ByObject = map[client.Object]cache.ByObject{ + &tektonv1.PipelineRun{}: { + Label: labels.SelectorFromSet(labels.Set{metadata.ServiceNameLabel: metadata.ServiceName}), + }, + } + + return cache.New(config, opts) + }, WebhookServer: crwebhook.NewServer(crwebhook.Options{ Port: 9443, TLSOpts: []func(*tls.Config){ diff --git a/metadata/labels.go b/metadata/labels.go index 81a89d36..0a91685e 100644 --- a/metadata/labels.go +++ b/metadata/labels.go @@ -25,6 +25,8 @@ const ( // MaxLabelLength is the maximum allowed characters in a label value MaxLabelLength = 63 + + ServiceName = "release" ) // Labels used by the release api package @@ -41,6 +43,9 @@ var ( // AutomatedLabel is the label name for marking a Release as automated AutomatedLabel = fmt.Sprintf("release.%s/automated", rhtapDomain) + // ServiceNameLabel is the label used to specify the service associated with an object + ServiceNameLabel = fmt.Sprintf("%s/%s", rhtapDomain, "service") + // ReleasePlanAdmissionLabel is the ReleasePlan label for the name of the ReleasePlanAdmission to use ReleasePlanAdmissionLabel = fmt.Sprintf("release.%s/releasePlanAdmission", rhtapDomain) )