Skip to content

Commit c1621ec

Browse files
committed
Fix operator config ConfigMap watching
o Add operator config detection in configMapUpdatePredicate o Update feature flags when operator config changes o Trigger reconciliation of all LlamaStackDistributions on operator config change Signed-off-by: Derek Higgins <[email protected]>
1 parent 5bca8b0 commit c1621ec

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

controllers/llamastackdistribution_controller.go

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ const (
8080
// When a ConfigMap's data changes, it automatically triggers reconciliation of the referencing
8181
// LlamaStackDistribution, which recalculates a content-based hash and updates the deployment's
8282
// pod template annotations. This causes Kubernetes to restart the pods with the updated configuration.
83+
//
84+
// Operator ConfigMap Watching Feature:
85+
// This reconciler also watches for changes to the operator configuration ConfigMap. When the operator
86+
// config changes, it triggers reconciliation of all LlamaStackDistribution resources.
8387
type LlamaStackDistributionReconciler struct {
8488
client.Client
8589
Scheme *runtime.Scheme
@@ -458,6 +462,21 @@ func (r *LlamaStackDistributionReconciler) configMapUpdatePredicate(e event.Upda
458462
return false
459463
}
460464

465+
// Parse the feature flags if the operator config ConfigMap has changed
466+
operatorNamespace, err := deploy.GetOperatorNamespace()
467+
if err != nil {
468+
return false
469+
}
470+
if newConfigMap.Name == operatorConfigData && newConfigMap.Namespace == operatorNamespace {
471+
EnableNetworkPolicy, err := parseFeatureFlags(newConfigMap.Data)
472+
if err != nil {
473+
log.FromContext(context.Background()).Error(err, "Failed to parse feature flags")
474+
} else {
475+
r.EnableNetworkPolicy = EnableNetworkPolicy
476+
}
477+
return true
478+
}
479+
461480
// Only proceed if this ConfigMap is referenced by any LlamaStackDistribution
462481
if !r.isConfigMapReferenced(newConfigMap) {
463482
return false
@@ -623,6 +642,27 @@ func (r *LlamaStackDistributionReconciler) manuallyCheckConfigMapReference(confi
623642

624643
// findLlamaStackDistributionsForConfigMap maps ConfigMap changes to LlamaStackDistribution reconcile requests.
625644
func (r *LlamaStackDistributionReconciler) findLlamaStackDistributionsForConfigMap(ctx context.Context, configMap client.Object) []reconcile.Request {
645+
logger := log.FromContext(ctx).WithValues(
646+
"configMapName", configMap.GetName(),
647+
"configMapNamespace", configMap.GetNamespace())
648+
649+
operatorNamespace, err := deploy.GetOperatorNamespace()
650+
if err != nil {
651+
log.FromContext(context.Background()).Error(err, "Failed to get operator namespace for config map event processing")
652+
return nil
653+
}
654+
// If the operator config was changed, we reconcile all LlamaStackDistributions
655+
if configMap.GetName() == operatorConfigData && configMap.GetNamespace() == operatorNamespace {
656+
// List all LlamaStackDistribution resources across all namespaces
657+
allLlamaStacks := llamav1alpha1.LlamaStackDistributionList{}
658+
err = r.List(ctx, &allLlamaStacks)
659+
if err != nil {
660+
logger.Error(err, "Failed to list all LlamaStackDistributions for operator config change")
661+
return nil
662+
}
663+
return r.convertToReconcileRequests(allLlamaStacks)
664+
}
665+
626666
// Try field indexer lookup first
627667
attachedLlamaStacks, found := r.tryFieldIndexerLookup(ctx, configMap)
628668
if !found {

0 commit comments

Comments
 (0)