Skip to content

Commit 8a072e4

Browse files
committed
test criocp controller
1 parent d809870 commit 8a072e4

3 files changed

Lines changed: 171 additions & 92 deletions

File tree

manifests/machineconfigcontroller/clusterrole.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ rules:
1313
resources: ["configmaps", "secrets"]
1414
verbs: ["*"]
1515
- apiGroups: ["config.openshift.io"]
16-
resources: ["images", "clusterversions", "featuregates", "nodes", "nodes/status", "imagepolicies/status"]
16+
resources: ["images", "clusterversions", "featuregates", "nodes", "nodes/status", "imagepolicies/status", "criocredentialproviderconfigs/status"]
1717
verbs: ["*"]
1818
- apiGroups: ["config.openshift.io"]
19-
resources: ["schedulers", "apiservers", "infrastructures", "imagedigestmirrorsets", "imagetagmirrorsets", "clusterimagepolicies", "imagepolicies"]
19+
resources: ["schedulers", "apiservers", "infrastructures", "imagedigestmirrorsets", "imagetagmirrorsets", "clusterimagepolicies", "imagepolicies", "criocredentialproviderconfigs"]
2020
verbs: ["get", "list", "watch"]
2121
- apiGroups: ["operator.openshift.io"]
2222
resources: ["imagecontentsourcepolicies"]

pkg/controller/container-runtime-config/container_runtime_config_controller.go

Lines changed: 92 additions & 89 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,9 @@ type Controller struct {
133133

134134
fgHandler ctrlcommon.FeatureGatesHandler
135135

136-
queue workqueue.TypedRateLimitingInterface[string]
137-
imgQueue workqueue.TypedRateLimitingInterface[string]
138-
// criocpQueue workqueue.TypedRateLimitingInterface[string]
136+
queue workqueue.TypedRateLimitingInterface[string]
137+
imgQueue workqueue.TypedRateLimitingInterface[string]
138+
criocpQueue workqueue.TypedRateLimitingInterface[string]
139139
}
140140

141141
// New returns a new container runtime config controller
@@ -168,7 +168,8 @@ func New(
168168
queue: workqueue.NewTypedRateLimitingQueueWithConfig(
169169
workqueue.DefaultTypedControllerRateLimiter[string](),
170170
workqueue.TypedRateLimitingQueueConfig[string]{Name: "machineconfigcontroller-containerruntimeconfigcontroller"}),
171-
imgQueue: workqueue.NewTypedRateLimitingQueue(workqueue.DefaultTypedControllerRateLimiter[string]()),
171+
imgQueue: workqueue.NewTypedRateLimitingQueue(workqueue.DefaultTypedControllerRateLimiter[string]()),
172+
criocpQueue: workqueue.NewTypedRateLimitingQueue(workqueue.DefaultTypedControllerRateLimiter[string]()),
172173
}
173174

174175
mcrInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
@@ -203,7 +204,7 @@ func New(
203204

204205
ctrl.syncHandler = ctrl.syncContainerRuntimeConfig
205206
ctrl.syncImgHandler = ctrl.syncImageConfig
206-
// ctrl.syncCRIOCPHandler = ctrl.syncCRIOCredentialProviderConfig
207+
ctrl.syncCRIOCPHandler = ctrl.syncCRIOCredentialProviderConfig
207208
ctrl.enqueueContainerRuntimeConfig = ctrl.enqueue
208209

209210
ctrl.mcpLister = mcpInformer.Lister()
@@ -243,7 +244,7 @@ func (ctrl *Controller) Run(workers int, stopCh <-chan struct{}) {
243244
defer utilruntime.HandleCrash()
244245
defer ctrl.queue.ShutDown()
245246
defer ctrl.imgQueue.ShutDown()
246-
// defer ctrl.criocpQueue.ShutDown()
247+
defer ctrl.criocpQueue.ShutDown()
247248
listerCaches := []cache.InformerSynced{ctrl.mcpListerSynced, ctrl.mccrListerSynced, ctrl.ccListerSynced,
248249
ctrl.imgListerSynced, ctrl.icspListerSynced, ctrl.idmsListerSynced, ctrl.itmsListerSynced, ctrl.clusterVersionListerSynced}
249250

@@ -259,7 +260,9 @@ func (ctrl *Controller) Run(workers int, stopCh <-chan struct{}) {
259260
klog.Info("added CRIOCredentialProviderConfig observers with CRIOCredentialProviderConfig featuregate enabled")
260261
}
261262

262-
ctrl.configInformerFactory.Start(stopCh)
263+
if ctrl.policyInformerFactoryAdded || ctrl.criocpInformerFactoryAdded {
264+
ctrl.configInformerFactory.Start(stopCh)
265+
}
263266

264267
if ctrl.policyInformerFactoryAdded {
265268
listerCaches = append(listerCaches, ctrl.clusterImagePolicyListerSynced, ctrl.imagePolicyListerSynced)
@@ -286,7 +289,7 @@ func (ctrl *Controller) Run(workers int, stopCh <-chan struct{}) {
286289
go wait.Until(ctrl.imgWorker, time.Second, stopCh)
287290

288291
// Just need one worker for the CRIOCredentialProviderConfig
289-
// go wait.Until(ctrl.criocpWorker, time.Second, stopCh)
292+
go wait.Until(ctrl.criocpWorker, time.Second, stopCh)
290293

291294
<-stopCh
292295
}
@@ -361,18 +364,18 @@ func (ctrl *Controller) addCRIOCPObservers() {
361364
}
362365

363366
func (ctrl *Controller) criocpConfAdded(_ interface{}) {
364-
ctrl.imgQueue.Add("openshift-config")
365-
// ctrl.criocpQueue.Add("openshift-config")
367+
// ctrl.imgQueue.Add("openshift-config")
368+
ctrl.criocpQueue.Add("openshift-config")
366369
}
367370

368371
func (ctrl *Controller) criocpConfUpdated(_, _ interface{}) {
369-
ctrl.imgQueue.Add("openshift-config")
370-
// ctrl.criocpQueue.Add("openshift-config")
372+
// ctrl.imgQueue.Add("openshift-config")
373+
ctrl.criocpQueue.Add("openshift-config")
371374
}
372375

373376
func (ctrl *Controller) criocpConfDeleted(_ interface{}) {
374-
ctrl.imgQueue.Add("openshift-config")
375-
// ctrl.criocpQueue.Add("openshift-config")
377+
// ctrl.imgQueue.Add("openshift-config")
378+
ctrl.criocpQueue.Add("openshift-config")
376379
}
377380

378381
func (ctrl *Controller) addImagePolicyObservers() {
@@ -506,10 +509,10 @@ func (ctrl *Controller) imgWorker() {
506509
}
507510
}
508511

509-
// func (ctrl *Controller) criocpWorker() {
510-
// for ctrl.processNextCRIOCPWorkItem() {
511-
// }
512-
// }
512+
func (ctrl *Controller) criocpWorker() {
513+
for ctrl.processNextCRIOCPWorkItem() {
514+
}
515+
}
513516

514517
func (ctrl *Controller) processNextWorkItem() bool {
515518
key, quit := ctrl.queue.Get()
@@ -537,18 +540,18 @@ func (ctrl *Controller) processNextImgWorkItem() bool {
537540
return true
538541
}
539542

540-
// func (ctrl *Controller) processNextCRIOCPWorkItem() bool {
541-
// key, quit := ctrl.criocpQueue.Get()
542-
// if quit {
543-
// return false
544-
// }
545-
// defer ctrl.criocpQueue.Done(key)
543+
func (ctrl *Controller) processNextCRIOCPWorkItem() bool {
544+
key, quit := ctrl.criocpQueue.Get()
545+
if quit {
546+
return false
547+
}
548+
defer ctrl.criocpQueue.Done(key)
546549

547-
// err := ctrl.syncCRIOCPHandler(key)
548-
// ctrl.handleCRIOCPErr(err, key)
550+
err := ctrl.syncCRIOCPHandler(key)
551+
ctrl.handleCRIOCPErr(err, key)
549552

550-
// return true
551-
// }
553+
return true
554+
}
552555

553556
func (ctrl *Controller) handleErr(err error, key string) {
554557
if err == nil {
@@ -586,23 +589,23 @@ func (ctrl *Controller) handleImgErr(err error, key string) {
586589
ctrl.imgQueue.AddAfter(key, 1*time.Minute)
587590
}
588591

589-
// func (ctrl *Controller) handleCRIOCPErr(err error, key string) {
590-
// if err == nil {
591-
// ctrl.criocpQueue.Forget(key)
592-
// return
593-
// }
592+
func (ctrl *Controller) handleCRIOCPErr(err error, key string) {
593+
if err == nil {
594+
ctrl.criocpQueue.Forget(key)
595+
return
596+
}
594597

595-
// if ctrl.criocpQueue.NumRequeues(key) < maxRetries {
596-
// klog.V(2).Infof("Error syncing CRIOCredentialProviderConfig %v: %v", key, err)
597-
// ctrl.criocpQueue.AddRateLimited(key)
598-
// return
599-
// }
598+
if ctrl.criocpQueue.NumRequeues(key) < maxRetries {
599+
klog.V(2).Infof("Error syncing CRIOCredentialProviderConfig %v: %v", key, err)
600+
ctrl.criocpQueue.AddRateLimited(key)
601+
return
602+
}
600603

601-
// utilruntime.HandleError(err)
602-
// klog.V(2).Infof("Dropping CRIOCredentialProviderConfig %q out of the queue: %v", key, err)
603-
// ctrl.criocpQueue.Forget(key)
604-
// ctrl.criocpQueue.AddAfter(key, 1*time.Minute)
605-
// }
604+
utilruntime.HandleError(err)
605+
klog.V(2).Infof("Dropping CRIOCredentialProviderConfig %q out of the queue: %v", key, err)
606+
ctrl.criocpQueue.Forget(key)
607+
ctrl.criocpQueue.AddAfter(key, 1*time.Minute)
608+
}
606609

607610
// generateOriginalContainerRuntimeConfigs returns rendered default storage, registries and policy config files
608611
func generateOriginalContainerRuntimeConfigs(templateDir string, cc *mcfgv1.ControllerConfig, role string) (*ign3types.File, *ign3types.File, *ign3types.File, error) {
@@ -1110,14 +1113,14 @@ func (ctrl *Controller) syncImageConfig(key string) error {
11101113
}
11111114
}
11121115

1113-
if ctrl.addedCRIOCPObservers {
1114-
crioCredentialProviderConfig, err = ctrl.criocpLister.Get("cluster")
1115-
if err != nil && errors.IsNotFound(err) {
1116-
crioCredentialProviderConfig = &apicfgv1alpha1.CRIOCredentialProviderConfig{}
1117-
} else if err != nil {
1118-
return nil
1119-
}
1120-
}
1116+
// if ctrl.addedCRIOCPObservers {
1117+
// crioCredentialProviderConfig, err = ctrl.criocpLister.Get("cluster")
1118+
// if err != nil && errors.IsNotFound(err) {
1119+
// crioCredentialProviderConfig = &apicfgv1alpha1.CRIOCredentialProviderConfig{}
1120+
// } else if err != nil {
1121+
// return nil
1122+
// }
1123+
// }
11211124

11221125
if clusterVersionCfg != nil {
11231126
// The possibility of releaseImage being "" is very unlikely, will only happen if clusterVersionCfg is nil. If this happens
@@ -1206,44 +1209,44 @@ func (ctrl *Controller) syncImageConfig(key string) error {
12061209
return nil
12071210
}
12081211

1209-
// func (ctrl *Controller) syncCRIOCredentialProviderConfig(key string) error {
1210-
// startTime := time.Now()
1211-
// klog.V(4).Infof("Started syncing CRIOCredentialProvider config %q (%v)", key, startTime)
1212-
// defer func() {
1213-
// klog.V(4).Infof("Finished syncing CRIOCredentialProvider config %q (%v)", key, time.Since(startTime))
1214-
// }()
1215-
1216-
// // Get ControllerConfig
1217-
// controllerConfig, err := ctrl.ccLister.Get(ctrlcommon.ControllerConfigName)
1218-
// if err != nil {
1219-
// return fmt.Errorf("could not get ControllerConfig %w", err)
1220-
// }
1221-
1222-
// sel, err := metav1.LabelSelectorAsSelector(metav1.AddLabelToSelector(&metav1.LabelSelector{}, builtInLabelKey, ""))
1223-
// if err != nil {
1224-
// return err
1225-
// }
1226-
// // Find all the MCO built in MachineConfigPools
1227-
// mcpPools, err := ctrl.mcpLister.List(sel)
1228-
// if err != nil {
1229-
// return err
1230-
// }
1231-
1232-
// for _, pool := range mcpPools {
1233-
// role := pool.Name
1234-
// credProviderConfigIgn, err := generateOriginalCredentialProviderConfig(ctrl.templatesDir, controllerConfig, role)
1235-
// if err != nil {
1236-
// return fmt.Errorf("could not generate original CRIO credential provider config for role %s: %w", role, err)
1237-
// }
1238-
// contents, err := ctrlcommon.DecodeIgnitionFileContents(credProviderConfigIgn.Contents.Source, credProviderConfigIgn.Contents.Compression)
1239-
// if err != nil {
1240-
// return fmt.Errorf("could not decode CRIO credential provider config for role %s: %w", role, err)
1241-
// }
1242-
// klog.Infof("Decoded CRIO credential provider config contents successfully for role %s: %s", role, string(contents))
1243-
// }
1244-
1245-
// return nil
1246-
// }
1212+
func (ctrl *Controller) syncCRIOCredentialProviderConfig(key string) error {
1213+
startTime := time.Now()
1214+
klog.Infof("Started syncing CRIOCredentialProvider config %q (%v)", key, startTime)
1215+
defer func() {
1216+
klog.V(4).Infof("Finished syncing CRIOCredentialProvider config %q (%v)", key, time.Since(startTime))
1217+
}()
1218+
1219+
// // Get ControllerConfig
1220+
// controllerConfig, err := ctrl.ccLister.Get(ctrlcommon.ControllerConfigName)
1221+
// if err != nil {
1222+
// return fmt.Errorf("could not get ControllerConfig %w", err)
1223+
// }
1224+
1225+
// sel, err := metav1.LabelSelectorAsSelector(metav1.AddLabelToSelector(&metav1.LabelSelector{}, builtInLabelKey, ""))
1226+
// if err != nil {
1227+
// return err
1228+
// }
1229+
// // Find all the MCO built in MachineConfigPools
1230+
// mcpPools, err := ctrl.mcpLister.List(sel)
1231+
// if err != nil {
1232+
// return err
1233+
// }
1234+
1235+
// for _, pool := range mcpPools {
1236+
// role := pool.Name
1237+
// credProviderConfigIgn, err := generateOriginalCredentialProviderConfig(ctrl.templatesDir, controllerConfig, role)
1238+
// if err != nil {
1239+
// return fmt.Errorf("could not generate original CRIO credential provider config for role %s: %w", role, err)
1240+
// }
1241+
// contents, err := ctrlcommon.DecodeIgnitionFileContents(credProviderConfigIgn.Contents.Source, credProviderConfigIgn.Contents.Compression)
1242+
// if err != nil {
1243+
// return fmt.Errorf("could not decode CRIO credential provider config for role %s: %w", role, err)
1244+
// }
1245+
// klog.Infof("Decoded CRIO credential provider config contents successfully for role %s: %s", role, string(contents))
1246+
// }
1247+
1248+
return nil
1249+
}
12471250

12481251
func (ctrl *Controller) syncIgnitionConfig(managedKey string, ignFile *ign3types.Config, pool *mcfgv1.MachineConfigPool, ownerRef metav1.OwnerReference) (bool, error) {
12491252
rawIgn, err := json.Marshal(ignFile)

0 commit comments

Comments
 (0)