Merge pull request #36 from Fedosin/folder_permissions

Allow to set custom permissions for the mounted folder
This commit is contained in:
Kubernetes Prow Robot 2020-06-18 11:08:37 -07:00 committed by GitHub
commit a92afa22ee
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 2 deletions

View File

@ -20,6 +20,7 @@ import (
"flag" "flag"
"fmt" "fmt"
"os" "os"
"strconv"
"github.com/spf13/cobra" "github.com/spf13/cobra"
@ -29,6 +30,7 @@ import (
var ( var (
endpoint string endpoint string
nodeID string nodeID string
perm string
) )
func init() { func init() {
@ -55,6 +57,8 @@ func main() {
cmd.PersistentFlags().StringVar(&endpoint, "endpoint", "", "CSI endpoint") cmd.PersistentFlags().StringVar(&endpoint, "endpoint", "", "CSI endpoint")
cmd.MarkPersistentFlagRequired("endpoint") cmd.MarkPersistentFlagRequired("endpoint")
cmd.PersistentFlags().StringVar(&perm, "mount-permissions", "", "mounted folder permissions")
cmd.ParseFlags(os.Args[1:]) cmd.ParseFlags(os.Args[1:])
if err := cmd.Execute(); err != nil { if err := cmd.Execute(); err != nil {
fmt.Fprintf(os.Stderr, "%s", err.Error()) fmt.Fprintf(os.Stderr, "%s", err.Error())
@ -65,6 +69,18 @@ func main() {
} }
func handle() { func handle() {
d := nfs.NewNFSdriver(nodeID, endpoint) // Converting string permission representation to *uint32
var parsedPerm *uint32
if perm != "" {
permu64, err := strconv.ParseUint(perm, 8, 32)
if err != nil {
fmt.Fprintf(os.Stderr, "Incorrect mount-permissions value: %q", perm)
os.Exit(1)
}
permu32 := uint32(permu64)
parsedPerm = &permu32
}
d := nfs.NewNFSdriver(nodeID, endpoint, parsedPerm)
d.Run() d.Run()
} }

View File

@ -29,6 +29,8 @@ type nfsDriver struct {
endpoint string endpoint string
perm *uint32
//ids *identityServer //ids *identityServer
ns *nodeServer ns *nodeServer
cap map[csi.VolumeCapability_AccessMode_Mode]bool cap map[csi.VolumeCapability_AccessMode_Mode]bool
@ -43,7 +45,7 @@ var (
version = "2.0.0" version = "2.0.0"
) )
func NewNFSdriver(nodeID, endpoint string) *nfsDriver { func NewNFSdriver(nodeID, endpoint string, perm *uint32) *nfsDriver {
glog.Infof("Driver: %v version: %v", driverName, version) glog.Infof("Driver: %v version: %v", driverName, version)
n := &nfsDriver{ n := &nfsDriver{
@ -52,6 +54,7 @@ func NewNFSdriver(nodeID, endpoint string) *nfsDriver {
nodeID: nodeID, nodeID: nodeID,
endpoint: endpoint, endpoint: endpoint,
cap: map[csi.VolumeCapability_AccessMode_Mode]bool{}, cap: map[csi.VolumeCapability_AccessMode_Mode]bool{},
perm: perm,
} }
vcam := []csi.VolumeCapability_AccessMode_Mode{ vcam := []csi.VolumeCapability_AccessMode_Mode{

View File

@ -73,6 +73,12 @@ func (ns *nodeServer) NodePublishVolume(ctx context.Context, req *csi.NodePublis
return nil, status.Error(codes.Internal, err.Error()) return nil, status.Error(codes.Internal, err.Error())
} }
if ns.Driver.perm != nil {
if err := os.Chmod(targetPath, os.FileMode(*ns.Driver.perm)); err != nil {
return nil, status.Error(codes.Internal, err.Error())
}
}
return &csi.NodePublishVolumeResponse{}, nil return &csi.NodePublishVolumeResponse{}, nil
} }