aboutsummaryrefslogtreecommitdiff
path: root/pkg/driver/driver.go
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-03-19 02:59:45 -0700
committerChris Lu <chris.lu@gmail.com>2020-03-19 02:59:45 -0700
commitb21fb2e2b62dd9ec3cf13403e87687229424f1e0 (patch)
tree9b2d9987e9c431cb52d5b13369928fb128960cb3 /pkg/driver/driver.go
downloadseaweedfs-csi-driver-b21fb2e2b62dd9ec3cf13403e87687229424f1e0.tar.xz
seaweedfs-csi-driver-b21fb2e2b62dd9ec3cf13403e87687229424f1e0.zip
WIP
Diffstat (limited to 'pkg/driver/driver.go')
-rw-r--r--pkg/driver/driver.go102
1 files changed, 102 insertions, 0 deletions
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go
new file mode 100644
index 0000000..d090613
--- /dev/null
+++ b/pkg/driver/driver.go
@@ -0,0 +1,102 @@
+package driver
+
+import (
+ "github.com/container-storage-interface/spec/lib/go/csi"
+ "github.com/golang/glog"
+)
+
+const (
+ driverName = "csi.seaweedfs.com"
+)
+
+var (
+ version = "1.0.0-rc1"
+)
+
+type SeaweedFsDriver struct {
+ name string
+ nodeID string
+ version string
+
+ endpoint string
+
+ vcap []*csi.VolumeCapability_AccessMode
+ cscap []*csi.ControllerServiceCapability
+
+ filer string
+ pathOnFiler string
+}
+
+func NewSeaweedFsDriver(nodeID, endpoint string) *SeaweedFsDriver {
+
+ glog.Infof("Driver: %v version: %v", driverName, version)
+
+ n := &SeaweedFsDriver{
+ endpoint: endpoint,
+ nodeID: nodeID,
+ name: driverName,
+ version: version,
+ }
+
+ n.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{
+ csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
+ })
+ n.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{
+ csi.ControllerServiceCapability_RPC_CREATE_DELETE_VOLUME,
+ })
+
+ return n
+}
+
+func NewNodeServer(n *SeaweedFsDriver) *NodeServer {
+
+ return &NodeServer{
+ Driver: n,
+ }
+}
+
+func (n *SeaweedFsDriver) Run() {
+ s := NewNonBlockingGRPCServer()
+ s.Start(n.endpoint,
+ NewIdentityServer(n),
+ NewControllerServer(n),
+ NewNodeServer(n))
+ s.Wait()
+}
+
+func (n *SeaweedFsDriver) AddVolumeCapabilityAccessModes(vc []csi.VolumeCapability_AccessMode_Mode) []*csi.VolumeCapability_AccessMode {
+ var vca []*csi.VolumeCapability_AccessMode
+ for _, c := range vc {
+ glog.Infof("Enabling volume access mode: %v", c.String())
+ vca = append(vca, &csi.VolumeCapability_AccessMode{Mode: c})
+ }
+ n.vcap = vca
+ return vca
+}
+
+func (n *SeaweedFsDriver) AddControllerServiceCapabilities(cl []csi.ControllerServiceCapability_RPC_Type) {
+ var csc []*csi.ControllerServiceCapability
+
+ for _, c := range cl {
+ glog.Infof("Enabling controller service capability: %v", c.String())
+ csc = append(csc, NewControllerServiceCapability(c))
+ }
+
+ n.cscap = csc
+
+ return
+}
+
+func (n *SeaweedFsDriver) createBucket(volumeId string, seaweedFsVolumeCount int) error {
+ // TODO implement seaweedFsVolumeCount later
+ return nil
+}
+func (n *SeaweedFsDriver) deleteBucket(volumeId string) error {
+ return nil
+}
+func (n *SeaweedFsDriver) mount(source string, targetPath string) error {
+ return nil
+}
+func (n *SeaweedFsDriver) unmount(targetPath string) error {
+ return nil
+}