in pkg/datasource/k8s/k8s.go [98:187]
func (k *DataSource) RegisterController(crd CRDType, crName string) error {
if len(strings.TrimSpace(crName)) == 0 {
return errors.New("empty crd name")
}
_, exist := k.controllers[crd]
if exist {
return errors.Errorf("duplicated register crd for %s", crd.String())
}
switch crd {
case FlowRulesCRD:
controller := &controllers.FlowRulesReconciler{
Client: k.crdManager.GetClient(),
Logger: ctrl.Log.WithName("controllers").WithName("FlowRules"),
Scheme: k.crdManager.GetScheme(),
Namespace: k.namespace,
ExpectedCrName: crName,
}
err := controller.SetupWithManager(k.crdManager)
if err != nil {
return err
}
k.controllers[FlowRulesCRD] = controller
setupLog.Info("succeed to register FlowRulesCRD Controller.")
return nil
case IsolationRulesCRD:
controller := &controllers.IsolationRulesReconciler{
Client: k.crdManager.GetClient(),
Logger: ctrl.Log.WithName("controllers").WithName("IsolationRules"),
Scheme: k.crdManager.GetScheme(),
Namespace: k.namespace,
ExpectedCrName: crName,
}
err := controller.SetupWithManager(k.crdManager)
if err != nil {
return err
}
k.controllers[IsolationRulesCRD] = controller
setupLog.Info("succeed to register IsolationRulesCRD Controller.")
return nil
case CircuitBreakerRulesCRD:
controller := &controllers.CircuitBreakerRulesReconciler{
Client: k.crdManager.GetClient(),
Logger: ctrl.Log.WithName("controllers").WithName("CircuitBreakerRules"),
Scheme: k.crdManager.GetScheme(),
Namespace: k.namespace,
ExpectedCrName: crName,
}
err := controller.SetupWithManager(k.crdManager)
if err != nil {
return err
}
k.controllers[CircuitBreakerRulesCRD] = controller
setupLog.Info("succeed to register CircuitBreakerRulesCRD Controller.")
return nil
case HotspotRulesCRD:
controller := &controllers.HotspotRulesReconciler{
Client: k.crdManager.GetClient(),
Logger: ctrl.Log.WithName("controllers").WithName("HotspotRules"),
Scheme: k.crdManager.GetScheme(),
Namespace: k.namespace,
ExpectedCrName: crName,
}
err := controller.SetupWithManager(k.crdManager)
if err != nil {
return err
}
k.controllers[HotspotRulesCRD] = controller
setupLog.Info("succeed to register HotspotRulesCRD Controller.")
return nil
case SystemRulesCRD:
controller := &controllers.SystemRulesReconciler{
Client: k.crdManager.GetClient(),
Logger: ctrl.Log.WithName("controllers").WithName("SystemRules"),
Scheme: k.crdManager.GetScheme(),
Namespace: k.namespace,
ExpectedCrName: crName,
}
err := controller.SetupWithManager(k.crdManager)
if err != nil {
return err
}
k.controllers[SystemRulesCRD] = controller
setupLog.Info("succeed to register SystemRulesCRD Controller.")
return nil
default:
return errors.Errorf("unsupported CRDType: %d", int(crd))
}
}