Skip to content

Commit ff0b719

Browse files
authored
Merge pull request #638 from jingxu97/oct/statter
Use existing csi proxy client in Statter
2 parents f9c440f + a8569f9 commit ff0b719

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)