func()

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))
	}
}