@@ -17,6 +17,7 @@ import (
1717 "github.com/openshift/library-go/pkg/controller/controllercmd"
1818 "github.com/openshift/library-go/pkg/operator/resource/resourceapply"
1919 "github.com/openshift/library-go/pkg/operator/v1helpers"
20+ ocv1alpha1 "github.com/operator-framework/operator-controller/api/v1alpha1"
2021 apiextensionsclient "k8s.io/apiextensions-apiserver/pkg/client/clientset/clientset"
2122 "k8s.io/apimachinery/pkg/api/meta"
2223 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -26,6 +27,7 @@ import (
2627 "k8s.io/apimachinery/pkg/types"
2728 "k8s.io/apimachinery/pkg/util/sets"
2829 "k8s.io/client-go/dynamic"
30+ "k8s.io/client-go/dynamic/dynamicinformer"
2931 "k8s.io/client-go/informers"
3032 "k8s.io/client-go/kubernetes"
3133 "k8s.io/client-go/rest"
@@ -43,6 +45,7 @@ type Clients struct {
4345 RESTMapper meta.RESTMapper
4446 OperatorClient * OperatorClient
4547 OperatorInformers operatorinformers.SharedInformerFactory
48+ ClusterExtensionClient * ClusterExtensionClient
4649 ConfigClient configclient.Interface
4750 KubeInformerFactory informers.SharedInformerFactory
4851 ConfigInformerFactory configinformer.SharedInformerFactory
@@ -91,23 +94,34 @@ func New(cc *controllercmd.ControllerContext) (*Clients, error) {
9194 return nil , err
9295 }
9396
97+ infFact := dynamicinformer .NewDynamicSharedInformerFactory (dynClient , defaultResyncPeriod )
98+ clusterExtensionGVR := ocv1alpha1 .GroupVersion .WithResource ("clusterextensions" )
99+ inf := infFact .ForResource (clusterExtensionGVR )
100+
101+ ceClient := & ClusterExtensionClient {
102+ factory : infFact ,
103+ informer : inf ,
104+ }
105+
94106 return & Clients {
95- KubeClient : kubeClient ,
96- APIExtensionsClient : apiExtensionsClient ,
97- DynamicClient : dynClient ,
98- RESTMapper : rm ,
99- OperatorClient : opClient ,
100- OperatorInformers : operatorInformersFactory ,
101- ConfigClient : configClient ,
102- KubeInformerFactory : informers .NewSharedInformerFactory (kubeClient , defaultResyncPeriod ),
103- ConfigInformerFactory : configinformer .NewSharedInformerFactory (configClient , defaultResyncPeriod ),
107+ KubeClient : kubeClient ,
108+ APIExtensionsClient : apiExtensionsClient ,
109+ DynamicClient : dynClient ,
110+ RESTMapper : rm ,
111+ OperatorClient : opClient ,
112+ OperatorInformers : operatorInformersFactory ,
113+ ClusterExtensionClient : ceClient ,
114+ ConfigClient : configClient ,
115+ KubeInformerFactory : informers .NewSharedInformerFactory (kubeClient , defaultResyncPeriod ),
116+ ConfigInformerFactory : configinformer .NewSharedInformerFactory (configClient , defaultResyncPeriod ),
104117 }, nil
105118}
106119
107120func (c * Clients ) StartInformers (ctx context.Context ) {
108121 c .KubeInformerFactory .Start (ctx .Done ())
109122 c .ConfigInformerFactory .Start (ctx .Done ())
110123 c .OperatorInformers .Start (ctx .Done ())
124+ c .ClusterExtensionClient .factory .Start (ctx .Done ())
111125 if c .KubeInformersForNamespaces != nil {
112126 c .KubeInformersForNamespaces .Start (ctx .Done ())
113127 }
@@ -131,6 +145,15 @@ const (
131145 fieldManager = "cluster-olm-operator"
132146)
133147
148+ type ClusterExtensionClient struct {
149+ factory dynamicinformer.DynamicSharedInformerFactory
150+ informer informers.GenericInformer
151+ }
152+
153+ func (ce ClusterExtensionClient ) Informer () informers.GenericInformer {
154+ return ce .informer
155+ }
156+
134157type OperatorClient struct {
135158 clientset operatorclient.Interface
136159 informers operatorinformers.SharedInformerFactory
0 commit comments