func NewLogicalVolumeReconciler(client client.Client, nodeName string, conn *grpc.ClientConn) *LogicalVolumeReconciler {
	return &LogicalVolumeReconciler{
		Client:    client,
		nodeName:  nodeName,
		vgService: proto.NewVGServiceClient(conn),
		lvService: proto.NewLVServiceClient(conn),
	}
}
+kubebuilder:rbac:groups=topolvm.cybozu.com,resources=logicalvolumes,verbs=get;list;watch;update;patch
+kubebuilder:rbac:groups=topolvm.cybozu.com,resources=logicalvolumes/status,verbs=get;update;patch
NewLogicalVolumeReconciler returns LogicalVolumeReconciler with creating lvService and vgService.
package controllers
import (
	"context"
	"github.com/go-logr/logr"
	"github.com/topolvm/topolvm"
	topolvmv1 "github.com/topolvm/topolvm/api/v1"
	"github.com/topolvm/topolvm/lvmd/proto"
	"google.golang.org/grpc"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
	apierrs "k8s.io/apimachinery/pkg/api/errors"
	"k8s.io/apimachinery/pkg/api/resource"
	ctrl "sigs.k8s.io/controller-runtime"
	"sigs.k8s.io/controller-runtime/pkg/client"
	"sigs.k8s.io/controller-runtime/pkg/event"
	crlog "sigs.k8s.io/controller-runtime/pkg/log"
)
type LogicalVolumeReconciler struct {
	client.Client
	nodeName  string
	vgService proto.VGServiceClient
	lvService proto.LVServiceClient
}