func NewManager()

in pkg/csi/controller.go [98:146]


func NewManager(cfg *rest.Config, namespace, volumeTypeConfigMap string, attach Attacher, pdStorageClass string) (ctrl.Manager, error) {
	mgr, err := ctrl.NewManager(cfg, ctrl.Options{
		Scheme: scheme.Scheme,
		Cache: cache.Options{
			DefaultNamespaces: map[string]cache.Config{
				namespace: {},
			},
		},
	})
	if err != nil {
		return nil, fmt.Errorf("unable to create manager: %w", err)
	}
	k8sClient, err := kubernetes.NewForConfig(cfg)
	if err != nil {
		return nil, fmt.Errorf("unable to create k8s client: %w", err)
	}
	rec := &reconciler{
		Client:              mgr.GetClient(),
		k8sClient:           k8sClient,
		Scheme:              mgr.GetScheme(),
		namespace:           namespace,
		volumeTypeConfigMap: volumeTypeConfigMap,
		pdStorageClass:      pdStorageClass,
		attacher:            attach,
	}

	if err := ctrl.NewControllerManagedBy(mgr).
		Named("node").
		Watches(&corev1.Node{}, &handler.EnqueueRequestForObject{}).
		Complete(rec); err != nil {
		return nil, err
	}
	if rec.attacher != nil {
		if err := ctrl.NewControllerManagedBy(mgr).
			Named("pvc").
			Watches(&corev1.PersistentVolumeClaim{}, &handler.EnqueueRequestForObject{}).
			Complete(&pvcReconciler{rec}); err != nil {
			return nil, err
		}
	}

	if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil {
		return nil, fmt.Errorf("Unable to set up health check: %w", err)
	}
	if err := mgr.AddReadyzCheck("readyz", healthz.Ping); err != nil {
		return nil, fmt.Errorf("Unable to set up ready check: %w", err)
	}
	return mgr, nil
}