aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Lu <chris.lu@gmail.com>2020-06-02 23:09:33 -0700
committerChris Lu <chris.lu@gmail.com>2020-06-02 23:09:33 -0700
commit1155c60704504e05e58143dd1a39a9eb330f2534 (patch)
tree079b72c33d0a759b4d36e2026897347245c26254
parent77697d343356a59b649ffbcf42e927439033a413 (diff)
downloadseaweedfs-csi-driver-1155c60704504e05e58143dd1a39a9eb330f2534.tar.xz
seaweedfs-csi-driver-1155c60704504e05e58143dd1a39a9eb330f2534.zip
compile
-rw-r--r--Makefile4
-rw-r--r--pkg/driver/controllerserver.go40
-rw-r--r--pkg/driver/driver.go5
-rw-r--r--pkg/driver/identityserver.go2
-rw-r--r--pkg/driver/mount_util.go (renamed from pkg/driver/util.go)2
-rw-r--r--pkg/driver/mounter.go2
-rw-r--r--pkg/driver/nodeserver.go5
-rw-r--r--pkg/driver/server.go2
-rw-r--r--pkg/driver/utils.go2
9 files changed, 48 insertions, 16 deletions
diff --git a/Makefile b/Makefile
index e0e2fa9..92ce524 100644
--- a/Makefile
+++ b/Makefile
@@ -4,9 +4,11 @@ REGISTRY_NAME=seaweedfs
IMAGE_NAME=csi
VERSION ?= dev
IMAGE_TAG=$(REGISTRY_NAME)/$(IMAGE_NAME):$(VERSION)
+COMMIT ?= $(shell git rev-parse --short HEAD)
+LDFLAGS ?= -X github.com/seaweedfs/seaweedfs-csi-driver/pkg/driver.gitCommit=${COMMIT}
build:
- CGO_ENABLED=0 GOOS=linux go build -a -ldflags '-extldflags "-static"' -o _output/seaweedfs-csi-driver ./cmd/seaweedfs-csi-driver/main.go
+ CGO_ENABLED=0 GOOS=linux go build -a -ldflags '$(LDFLAGS)' -o _output/seaweedfs-csi-driver ./cmd/seaweedfs-csi-driver/main.go
container: build
docker build -t $(IMAGE_TAG) -f cmd/seaweedfs-csi-driver/Dockerfile .
push: container
diff --git a/pkg/driver/controllerserver.go b/pkg/driver/controllerserver.go
index 78466e2..1fd0829 100644
--- a/pkg/driver/controllerserver.go
+++ b/pkg/driver/controllerserver.go
@@ -10,7 +10,7 @@ import (
"github.com/chrislusf/seaweedfs/weed/pb/filer_pb"
"github.com/container-storage-interface/spec/lib/go/csi"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
@@ -59,7 +59,7 @@ func (cs *ControllerServer) CreateVolume(ctx context.Context, req *csi.CreateVol
return &csi.CreateVolumeResponse{
Volume: &csi.Volume{
VolumeId: volumeId,
- CapacityBytes: 0, // seaweedFsVolumeCount * 1024 * 1024 * 30,
+ CapacityBytes: capacity, // 0, // seaweedFsVolumeCount * 1024 * 1024 * 30,
VolumeContext: params,
},
}, nil
@@ -125,12 +125,17 @@ func (cs *ControllerServer) ValidateVolumeCapabilities(ctx context.Context, req
}
}
+ volCaps := req.GetVolumeCapabilities()
+ if len(volCaps) == 0 {
+ return nil, status.Error(codes.InvalidArgument, "Volume capabilities not provided")
+ }
+ var confirmed *csi.ValidateVolumeCapabilitiesResponse_Confirmed
+ if isValidVolumeCapabilities(cs.Driver.vcap, volCaps) {
+ confirmed = &csi.ValidateVolumeCapabilitiesResponse_Confirmed{VolumeCapabilities: volCaps}
+ }
+
return &csi.ValidateVolumeCapabilitiesResponse{
- Confirmed: &csi.ValidateVolumeCapabilitiesResponse_Confirmed{
- VolumeContext: req.GetVolumeContext(),
- VolumeCapabilities: req.GetVolumeCapabilities(),
- Parameters: req.GetParameters(),
- },
+ Confirmed: confirmed,
}, nil
}
@@ -177,4 +182,23 @@ func sanitizeVolumeId(volumeId string) string {
volumeId = hex.EncodeToString(h.Sum(nil))
}
return volumeId
-} \ No newline at end of file
+}
+
+func isValidVolumeCapabilities(driverVolumeCaps []*csi.VolumeCapability_AccessMode, volCaps []*csi.VolumeCapability) bool {
+ hasSupport := func(cap *csi.VolumeCapability) bool {
+ for _, c := range driverVolumeCaps {
+ if c.GetMode() == cap.AccessMode.GetMode() {
+ return true
+ }
+ }
+ return false
+ }
+
+ foundAll := true
+ for _, c := range volCaps {
+ if !hasSupport(c) {
+ foundAll = false
+ }
+ }
+ return foundAll
+}
diff --git a/pkg/driver/driver.go b/pkg/driver/driver.go
index 1261a86..b8d8bed 100644
--- a/pkg/driver/driver.go
+++ b/pkg/driver/driver.go
@@ -9,7 +9,7 @@ import (
"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"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
@@ -53,6 +53,9 @@ func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver {
}
n.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{
+ csi.VolumeCapability_AccessMode_SINGLE_NODE_WRITER,
+ })
+ n.AddVolumeCapabilityAccessModes([]csi.VolumeCapability_AccessMode_Mode{
csi.VolumeCapability_AccessMode_MULTI_NODE_MULTI_WRITER,
})
n.AddControllerServiceCapabilities([]csi.ControllerServiceCapability_RPC_Type{
diff --git a/pkg/driver/identityserver.go b/pkg/driver/identityserver.go
index f92b225..7d0fab7 100644
--- a/pkg/driver/identityserver.go
+++ b/pkg/driver/identityserver.go
@@ -2,7 +2,7 @@ package driver
import (
"github.com/container-storage-interface/spec/lib/go/csi"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"golang.org/x/net/context"
)
diff --git a/pkg/driver/util.go b/pkg/driver/mount_util.go
index 62a6c09..2f45597 100644
--- a/pkg/driver/util.go
+++ b/pkg/driver/mount_util.go
@@ -10,7 +10,7 @@ import (
"time"
"github.com/mitchellh/go-ps"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"k8s.io/utils/mount"
)
diff --git a/pkg/driver/mounter.go b/pkg/driver/mounter.go
index 38dd1de..1eaa24f 100644
--- a/pkg/driver/mounter.go
+++ b/pkg/driver/mounter.go
@@ -4,7 +4,7 @@ import (
"fmt"
"time"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"os/exec"
"k8s.io/utils/mount"
)
diff --git a/pkg/driver/nodeserver.go b/pkg/driver/nodeserver.go
index b58b23b..2a48c71 100644
--- a/pkg/driver/nodeserver.go
+++ b/pkg/driver/nodeserver.go
@@ -5,7 +5,7 @@ import (
"os"
"strings"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"github.com/container-storage-interface/spec/lib/go/csi"
"google.golang.org/grpc/codes"
@@ -29,6 +29,9 @@ func (ns *NodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
if req.GetVolumeCapability() == nil {
return nil, status.Error(codes.InvalidArgument, "Volume capability missing in request")
}
+ if !isValidVolumeCapabilities(ns.Driver.vcap, []*csi.VolumeCapability{req.GetVolumeCapability()}) {
+ return nil, status.Error(codes.InvalidArgument, "Volume capability not supported")
+ }
if volumeID == "" {
return nil, status.Error(codes.InvalidArgument, "Volume ID missing in request")
}
diff --git a/pkg/driver/server.go b/pkg/driver/server.go
index 64a9333..7e22079 100644
--- a/pkg/driver/server.go
+++ b/pkg/driver/server.go
@@ -5,7 +5,7 @@ import (
"os"
"sync"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"google.golang.org/grpc"
"github.com/container-storage-interface/spec/lib/go/csi"
diff --git a/pkg/driver/utils.go b/pkg/driver/utils.go
index b901182..f3fc80c 100644
--- a/pkg/driver/utils.go
+++ b/pkg/driver/utils.go
@@ -5,7 +5,7 @@ import (
"strings"
"github.com/container-storage-interface/spec/lib/go/csi"
- "github.com/golang/glog"
+ "github.com/chrislusf/seaweedfs/weed/glog"
"golang.org/x/net/context"
"google.golang.org/grpc"
)