Skip to content

Commit a8569f9

Browse files
committed
Use existing csi proxy client in Statter
Instead of creating new csi proxy client, this PR uses existing one created in safe mounter.
1 parent d4c82a5 commit a8569f9

File tree

5 files changed

+34
-35
lines changed

5 files changed

+34
-35
lines changed

cmd/gce-pd-csi-driver/main.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,7 @@ func handle() {
9696
klog.Fatalf("Failed to get safe mounter: %v", err)
9797
}
9898
deviceUtils := mountmanager.NewDeviceUtils()
99-
statter, err := mountmanager.NewStatter()
100-
if err != nil {
101-
klog.Fatalf("Failed to set up Statter: %v", err)
102-
}
99+
statter := mountmanager.NewStatter(mounter)
103100
meta, err := metadataservice.NewMetadataService()
104101
if err != nil {
105102
klog.Fatalf("Failed to set up metadata service: %v", err)

pkg/gce-pd-csi-driver/node_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ func getTestGCEDriverWithCustomMounter(t *testing.T, mounter *mount.SafeFormatAn
4242

4343
func getCustomTestGCEDriver(t *testing.T, mounter *mount.SafeFormatAndMount, deviceUtils mountmanager.DeviceUtils, metaService metadataservice.MetadataService) *GCEDriver {
4444
gceDriver := GetGCEDriver()
45-
nodeServer := NewNodeServer(gceDriver, mounter, deviceUtils, metaService, mountmanager.NewFakeStatter())
45+
nodeServer := NewNodeServer(gceDriver, mounter, deviceUtils, metaService, mountmanager.NewFakeStatter(mounter))
4646
err := gceDriver.SetupGCEDriver(driver, "test-vendor", nil, nil, nodeServer)
4747
if err != nil {
4848
t.Fatalf("Failed to setup GCE Driver: %v", err)
@@ -52,7 +52,8 @@ func getCustomTestGCEDriver(t *testing.T, mounter *mount.SafeFormatAndMount, dev
5252

5353
func getTestBlockingGCEDriver(t *testing.T, readyToExecute chan chan struct{}) *GCEDriver {
5454
gceDriver := GetGCEDriver()
55-
nodeServer := NewNodeServer(gceDriver, mountmanager.NewFakeSafeBlockingMounter(readyToExecute), mountmanager.NewFakeDeviceUtils(), metadataservice.NewFakeService(), mountmanager.NewFakeStatter())
55+
mounter := mountmanager.NewFakeSafeBlockingMounter(readyToExecute)
56+
nodeServer := NewNodeServer(gceDriver, mounter, mountmanager.NewFakeDeviceUtils(), metadataservice.NewFakeService(), mountmanager.NewFakeStatter(mounter))
5657
err := gceDriver.SetupGCEDriver(driver, "test-vendor", nil, nil, nodeServer)
5758
if err != nil {
5859
t.Fatalf("Failed to setup GCE Driver: %v", err)

pkg/mount-manager/statter_linux.go

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,19 +18,20 @@ import (
1818
"fmt"
1919

2020
"golang.org/x/sys/unix"
21+
"k8s.io/utils/mount"
2122
)
2223

23-
var _ Statter = realStatter{}
24+
var _ Statter = &realStatter{}
2425

2526
type realStatter struct {
2627
}
2728

28-
func NewStatter() (realStatter, error) {
29-
return realStatter{}, nil
29+
func NewStatter(mounter *mount.SafeFormatAndMount) *realStatter {
30+
return &realStatter{}
3031
}
3132

3233
// IsBlock checks if the given path is a block device
33-
func (realStatter) IsBlockDevice(fullPath string) (bool, error) {
34+
func (r *realStatter) IsBlockDevice(fullPath string) (bool, error) {
3435
var st unix.Stat_t
3536
err := unix.Stat(fullPath, &st)
3637
if err != nil {
@@ -40,7 +41,7 @@ func (realStatter) IsBlockDevice(fullPath string) (bool, error) {
4041
return (st.Mode & unix.S_IFMT) == unix.S_IFBLK, nil
4142
}
4243

43-
func (realStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
44+
func (*realStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
4445
statfs := &unix.Statfs_t{}
4546
err = unix.Statfs(path, statfs)
4647
if err != nil {
@@ -62,15 +63,15 @@ func (realStatter) StatFS(path string) (available, capacity, used, inodesFree, i
6263

6364
type fakeStatter struct{}
6465

65-
func NewFakeStatter() fakeStatter {
66-
return fakeStatter{}
66+
func NewFakeStatter(mounter *mount.SafeFormatAndMount) *fakeStatter {
67+
return &fakeStatter{}
6768
}
6869

69-
func (fakeStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
70+
func (*fakeStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
7071
// Assume the file exists and give some dummy values back
7172
return 1, 1, 1, 1, 1, 1, nil
7273
}
7374

74-
func (fakeStatter) IsBlockDevice(fullPath string) (bool, error) {
75+
func (*fakeStatter) IsBlockDevice(fullPath string) (bool, error) {
7576
return false, nil
7677
}

pkg/mount-manager/statter_windows.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,40 +17,40 @@ package mountmanager
1717

1818
import (
1919
"context"
20+
"fmt"
2021

2122
volumeapi "github.com/kubernetes-csi/csi-proxy/client/api/volume/v1beta1"
22-
volumeclient "github.com/kubernetes-csi/csi-proxy/client/groups/volume/v1beta1"
23+
"k8s.io/utils/mount"
2324
)
2425

25-
var _ Statter = realStatter{}
26+
var _ Statter = &realStatter{}
2627

2728
type realStatter struct {
28-
VolumeClient *volumeclient.Client
29+
mounter *mount.SafeFormatAndMount
2930
}
3031

31-
func NewStatter() (realStatter, error) {
32-
volumeClient, err := volumeclient.NewClient()
33-
if err != nil {
34-
return realStatter{}, err
35-
}
36-
return realStatter{
37-
VolumeClient: volumeClient,
38-
}, nil
32+
func NewStatter(mounter *mount.SafeFormatAndMount) *realStatter {
33+
return &realStatter{mounter: mounter}
3934
}
4035

4136
// IsBlock checks if the given path is a block device
42-
func (realStatter) IsBlockDevice(fullPath string) (bool, error) {
37+
func (r *realStatter) IsBlockDevice(fullPath string) (bool, error) {
4338
return false, nil
4439
}
4540

4641
// StatFS returns volume usage information
47-
func (r realStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
42+
func (r *realStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
4843
zero := int64(0)
4944

45+
proxy, ok := r.mounter.Interface.(*CSIProxyMounter)
46+
if !ok {
47+
return zero, zero, zero, zero, zero, zero, fmt.Errorf("could not cast to csi proxy class")
48+
}
49+
5050
idRequest := &volumeapi.VolumeIDFromMountRequest{
5151
Mount: path,
5252
}
53-
idResponse, err := r.VolumeClient.GetVolumeIDFromMount(context.Background(), idRequest)
53+
idResponse, err := proxy.VolumeClient.GetVolumeIDFromMount(context.Background(), idRequest)
5454
if err != nil {
5555
return zero, zero, zero, zero, zero, zero, err
5656
}
@@ -59,7 +59,7 @@ func (r realStatter) StatFS(path string) (available, capacity, used, inodesFree,
5959
request := &volumeapi.VolumeStatsRequest{
6060
VolumeId: volumeId,
6161
}
62-
response, err := r.VolumeClient.VolumeStats(context.Background(), request)
62+
response, err := proxy.VolumeClient.VolumeStats(context.Background(), request)
6363
if err != nil {
6464
return zero, zero, zero, zero, zero, zero, err
6565
}
@@ -71,15 +71,15 @@ func (r realStatter) StatFS(path string) (available, capacity, used, inodesFree,
7171

7272
type fakeStatter struct{}
7373

74-
func NewFakeStatter() fakeStatter {
75-
return fakeStatter{}
74+
func NewFakeStatter(mounter *mount.SafeFormatAndMount) *fakeStatter {
75+
return &fakeStatter{}
7676
}
7777

78-
func (fakeStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
78+
func (*fakeStatter) StatFS(path string) (available, capacity, used, inodesFree, inodes, inodesUsed int64, err error) {
7979
// Assume the file exists and give some dummy values back
8080
return 1, 1, 1, 1, 1, 1, nil
8181
}
8282

83-
func (fakeStatter) IsBlockDevice(fullPath string) (bool, error) {
83+
func (*fakeStatter) IsBlockDevice(fullPath string) (bool, error) {
8484
return false, nil
8585
}

test/sanity/sanity_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func TestSanity(t *testing.T) {
5656
//Initialize GCE Driver
5757
identityServer := driver.NewIdentityServer(gceDriver)
5858
controllerServer := driver.NewControllerServer(gceDriver, cloudProvider)
59-
nodeServer := driver.NewNodeServer(gceDriver, mounter, deviceUtils, metadataservice.NewFakeService(), mountmanager.NewFakeStatter())
59+
nodeServer := driver.NewNodeServer(gceDriver, mounter, deviceUtils, metadataservice.NewFakeService(), mountmanager.NewFakeStatter(mounter))
6060
err = gceDriver.SetupGCEDriver(driverName, vendorVersion, identityServer, controllerServer, nodeServer)
6161
if err != nil {
6262
t.Fatalf("Failed to initialize GCE CSI Driver: %v", err)

0 commit comments

Comments
 (0)