Skip to content

Commit 0511c03

Browse files
committed
Add support for static uid/gid from storage class for dir-mode provisioning
and fix obvious typo while checking gid in ap-mode.
1 parent 428fe26 commit 0511c03

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

pkg/driver/provisioner_ap.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ func (a AccessPointProvisioner) Provision(ctx context.Context, req *csi.CreateVo
132132
if err != nil {
133133
return nil, status.Errorf(codes.InvalidArgument, "Failed to parse invalid %v: %v", Gid, err)
134134
}
135-
if uid < 0 {
135+
if gid < 0 {
136136
return nil, status.Errorf(codes.InvalidArgument, "%v must be greater or equal than 0", Gid)
137137
}
138138
}

pkg/driver/provisioner_dir.go

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,10 +78,34 @@ func (d DirectoryProvisioner) Provision(ctx context.Context, req *csi.CreateVolu
7878
}
7979
}
8080

81-
klog.V(5).Infof("Provisioning directory with permissions %s", perms)
81+
var uid int
82+
if value, ok := volumeParams[Uid]; ok {
83+
id, err := strconv.ParseInt(value, 10, 32)
84+
if err != nil {
85+
return nil, status.Errorf(codes.InvalidArgument, "Failed to parse invalid %v: %v", Uid, err)
86+
}
87+
if id < 0 {
88+
return nil, status.Errorf(codes.InvalidArgument, "%v must be greater or equal than 0", Uid)
89+
}
90+
uid = int(id)
91+
}
92+
93+
var gid int
94+
if value, ok := volumeParams[Gid]; ok {
95+
id, err := strconv.ParseInt(value, 10, 32)
96+
if err != nil {
97+
return nil, status.Errorf(codes.InvalidArgument, "Failed to parse invalid %v: %v", Gid, err)
98+
}
99+
if id < 0 {
100+
return nil, status.Errorf(codes.InvalidArgument, "%v must be greater or equal than 0", Gid)
101+
}
102+
gid = int(id)
103+
}
104+
105+
klog.V(5).Infof("Provisioning directory with permissions %s, uid %d, gid %d", perms, uid, gid)
82106

83107
provisionedDirectory := path.Join(target, provisionedPath)
84-
err = d.osClient.MkDirAllWithPermsNoOwnership(provisionedDirectory, perms)
108+
err = d.osClient.MkDirAllWithPerms(provisionedDirectory, perms, uid, gid)
85109
if err != nil {
86110
return nil, status.Errorf(codes.Internal, "Could not provision directory: %v", err)
87111
}

0 commit comments

Comments
 (0)