From 58471cb842d7fa69addf3669e443b244920687d1 Mon Sep 17 00:00:00 2001
From: kaiyou <dev@kaiyou.fr>
Date: Thu, 27 Apr 2023 20:32:46 +0200
Subject: [PATCH] Setup missing restmapper for GC

---
 services/cm.go  | 3 +--
 services/k8s.go | 8 ++++++++
 2 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/services/cm.go b/services/cm.go
index bb3702b..5809458 100644
--- a/services/cm.go
+++ b/services/cm.go
@@ -19,7 +19,6 @@ import (
 	"k8s.io/kubernetes/pkg/controller/nodelifecycle"
 	"k8s.io/kubernetes/pkg/controller/podgc"
 	"k8s.io/kubernetes/pkg/controller/replication"
-	"k8s.io/kubernetes/pkg/controller/resourceclaim"
 	"k8s.io/kubernetes/pkg/controller/resourcequota"
 	"k8s.io/kubernetes/pkg/controller/serviceaccount"
 	"k8s.io/kubernetes/pkg/controller/ttl"
@@ -207,7 +206,7 @@ var kubeControllerManager = &Unit{
 		}
 		gc, err := garbagecollector.NewGarbageCollector(
 			clients.Client, clients.MetadataClient,
-			nil, // TODO
+			clients.RESTMapper,
 			ignored,
 			clients.Informer,
 			allReady,
diff --git a/services/k8s.go b/services/k8s.go
index 7f965ad..09455d5 100644
--- a/services/k8s.go
+++ b/services/k8s.go
@@ -8,12 +8,15 @@ import (
 	"github.com/spf13/pflag"
 	"go.acides.org/pekahi"
 	core "k8s.io/api/core/v1"
+	"k8s.io/client-go/discovery"
+	"k8s.io/client-go/discovery/cached/memory"
 	"k8s.io/client-go/dynamic"
 	"k8s.io/client-go/dynamic/dynamicinformer"
 	"k8s.io/client-go/informers"
 	"k8s.io/client-go/kubernetes"
 	"k8s.io/client-go/metadata"
 	"k8s.io/client-go/rest"
+	"k8s.io/client-go/restmapper"
 	"k8s.io/client-go/tools/events"
 	"k8s.io/component-base/cli/flag"
 	"k8s.io/klog/v2"
@@ -34,6 +37,8 @@ type Clients struct {
 	DynClient      *dynamic.DynamicClient
 	EventClient    *kubernetes.Clientset
 	MetadataClient metadata.Interface
+	CachedClient   discovery.CachedDiscoveryInterface
+	RESTMapper     *restmapper.DeferredDiscoveryRESTMapper
 	Broadcaster    events.EventBroadcasterAdapter
 	Informer       informers.SharedInformerFactory
 	DynInformer    dynamicinformer.DynamicSharedInformerFactory
@@ -71,6 +76,8 @@ func newClientsForKC(kc *rest.Config) (*Clients, error) {
 	if err != nil {
 		return nil, err
 	}
+	cachedClient := memory.NewMemCacheClient(baseClient)
+	restMapper := restmapper.NewDeferredDiscoveryRESTMapper(cachedClient)
 	broadcaster := events.NewEventBroadcasterAdapter(eventsClient)
 	informers := informers.NewSharedInformerFactory(baseClient, 0)
 	dynInformers := dynamicinformer.NewFilteredDynamicSharedInformerFactory(dynClient, 0, core.NamespaceAll, nil)
@@ -81,6 +88,7 @@ func newClientsForKC(kc *rest.Config) (*Clients, error) {
 		DynClient:      dynClient,
 		EventClient:    eventsClient,
 		MetadataClient: metadataClient,
+		RESTMapper:     restMapper,
 		Broadcaster:    broadcaster,
 		Informer:       informers,
 		DynInformer:    dynInformers,
-- 
GitLab