From 1155c60704504e05e58143dd1a39a9eb330f2534 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Tue, 2 Jun 2020 23:09:33 -0700 Subject: [PATCH] compile --- Makefile | 4 ++- pkg/driver/controllerserver.go | 40 +++++++++++++++++++++------ pkg/driver/driver.go | 5 +++- pkg/driver/identityserver.go | 2 +- pkg/driver/{util.go => mount_util.go} | 2 +- pkg/driver/mounter.go | 2 +- pkg/driver/nodeserver.go | 5 +++- pkg/driver/server.go | 2 +- pkg/driver/utils.go | 2 +- 9 files changed, 48 insertions(+), 16 deletions(-) rename pkg/driver/{util.go => mount_util.go} (97%) 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" @@ -52,6 +52,9 @@ func NewSeaweedFsDriver(filer, nodeID, endpoint string) *SeaweedFsDriver { grpcDialOption: security.LoadClientTLS(util.GetViper(), "grpc.client"), } + 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, }) 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 similarity index 97% rename from pkg/driver/util.go rename to 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" )