diff options
Diffstat (limited to 'pkg/driver/driver.go')
| -rw-r--r-- | pkg/driver/driver.go | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go index df46223..1261a86 100644 --- a/pkg/driver/driver.go +++ b/pkg/driver/driver.go @@ -4,12 +4,17 @@ import ( "fmt" "os" + "github.com/chrislusf/seaweedfs/weed/pb" + "github.com/chrislusf/seaweedfs/weed/pb/filer_pb" + "github.com/chrislusf/seaweedfs/weed/security" + "github.com/chrislusf/seaweedfs/weed/util" "github.com/container-storage-interface/spec/lib/go/csi" "github.com/golang/glog" + "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "k8s.io/klog" "k8s.io/client-go/rest" + "k8s.io/klog" ) const ( @@ -30,17 +35,21 @@ type SeaweedFsDriver struct { vcap []*csi.VolumeCapability_AccessMode cscap []*csi.ControllerServiceCapability + filer string + grpcDialOption grpc.DialOption } -func NewSeaweedFsDriver(nodeID, endpoint string) *SeaweedFsDriver { +func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver { glog.Infof("Driver: %v version: %v", driverName, version) n := &SeaweedFsDriver{ - endpoint: endpoint, - nodeID: nodeID, - name: driverName, - version: version, + endpoint: endpoint, + nodeID: nodeID, + name: driverName, + version: version, + filer: filer, + grpcDialOption: security.LoadClientTLS(util.GetViper(), "grpc.client"), } n.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{ @@ -106,3 +115,22 @@ func (d *SeaweedFsDriver) ValidateControllerServiceRequest(c csi.ControllerServi } return status.Error(codes.InvalidArgument, fmt.Sprintf("%s", c)) } + +var _ = filer_pb.FilerClient(&SeaweedFsDriver{}) + +func (d *SeaweedFsDriver) WithFilerClient(fn func(filer_pb.SeaweedFilerClient) error) error { + + filerGrpcAddress, parseErr := pb.ParseServerToGrpcAddress(d.filer) + if parseErr != nil { + return fmt.Errorf("failed to parse filer %v: %v", filerGrpcAddress, parseErr) + } + + return pb.WithCachedGrpcClient(func(grpcConnection *grpc.ClientConn) error { + client := filer_pb.NewSeaweedFilerClient(grpcConnection) + return fn(client) + }, filerGrpcAddress, d.grpcDialOption) + +} +func (d *SeaweedFsDriver) AdjustedUrl(hostAndPort string) string { + return hostAndPort +} |
