From 8c953c21ba1459f32c537a07b5572160eba03862 Mon Sep 17 00:00:00 2001 From: Jing Xu Date: Thu, 5 Nov 2020 21:15:14 -0800 Subject: [PATCH] Separate in-tree gcepd driver for windows Add a separate in-tree gcepd driver for windows cluster because it does not support certain features as Linux driver. Change-Id: I2fca86b3f32f17db7703c46a36944d9ee51f355f --- test/e2e/storage/drivers/in_tree.go | 37 +++++++++++++++++++++++++---- test/e2e/storage/in_tree_volumes.go | 1 + 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/test/e2e/storage/drivers/in_tree.go b/test/e2e/storage/drivers/in_tree.go index bc1adc89b01..47bca14d67b 100644 --- a/test/e2e/storage/drivers/in_tree.go +++ b/test/e2e/storage/drivers/in_tree.go @@ -1229,17 +1229,12 @@ var _ testsuites.DynamicPVTestDriver = &gcePdDriver{} // InitGcePdDriver returns gcePdDriver that implements TestDriver interface func InitGcePdDriver() testsuites.TestDriver { - // In current test structure, it first initialize the driver and then set up - // the new framework, so we cannot get the correct OS here. So here set to - // support all fs types including both linux and windows. We have code to check Node OS later - // during test. supportedTypes := sets.NewString( "", // Default fsType "ext2", "ext3", "ext4", "xfs", - "ntfs", ) return &gcePdDriver{ driverInfo: testsuites.DriverInfo{ @@ -1269,6 +1264,38 @@ func InitGcePdDriver() testsuites.TestDriver { } } +// InitWindowsGcePdDriver returns gcePdDriver running on Windows cluster that implements TestDriver interface +// In current test structure, it first initialize the driver and then set up +// the new framework, so we cannot get the correct OS here and select which file system is supported. +// So here uses a separate Windows in-tree gce pd driver +func InitWindowsGcePdDriver() testsuites.TestDriver { + supportedTypes := sets.NewString( + "ntfs", + ) + return &gcePdDriver{ + driverInfo: testsuites.DriverInfo{ + Name: "windows-gcepd", + InTreePluginName: "kubernetes.io/gce-pd", + MaxFileSize: testpatterns.FileSizeMedium, + SupportedSizeRange: e2evolume.SizeRange{ + Min: "1Gi", + }, + SupportedFsType: supportedTypes, + TopologyKeys: []string{v1.LabelZoneFailureDomain}, + Capabilities: map[testsuites.Capability]bool{ + testsuites.CapControllerExpansion: false, + testsuites.CapPersistence: true, + testsuites.CapExec: true, + testsuites.CapMultiPODs: true, + // GCE supports volume limits, but the test creates large + // number of volumes and times out test suites. + testsuites.CapVolumeLimits: false, + testsuites.CapTopology: true, + }, + }, + } +} + func (g *gcePdDriver) GetDriverInfo() *testsuites.DriverInfo { return &g.driverInfo } diff --git a/test/e2e/storage/in_tree_volumes.go b/test/e2e/storage/in_tree_volumes.go index 19372062407..3c557c66b4d 100644 --- a/test/e2e/storage/in_tree_volumes.go +++ b/test/e2e/storage/in_tree_volumes.go @@ -35,6 +35,7 @@ var testDrivers = []func() testsuites.TestDriver{ drivers.InitEmptydirDriver, drivers.InitCinderDriver, drivers.InitGcePdDriver, + drivers.InitWindowsGcePdDriver, drivers.InitVSphereDriver, drivers.InitAzureDiskDriver, drivers.InitAwsDriver,