@@ -30,19 +30,20 @@ import (
30
30
31
31
var (
32
32
// Kubernetes cluster flags
33
- teardownCluster = flag .Bool ("teardown-cluster" , true , "teardown the cluster after the e2e test" )
34
- teardownDriver = flag .Bool ("teardown-driver" , true , "teardown the driver after the e2e test" )
35
- bringupCluster = flag .Bool ("bringup-cluster" , true , "build kubernetes and bringup a cluster" )
36
- gceZone = flag .String ("gce-zone" , "" , "zone that the gce k8s cluster is created/found in" )
37
- gceRegion = flag .String ("gce-region" , "" , "region that gke regional cluster should be created in" )
38
- kubeVersion = flag .String ("kube-version" , "" , "version of Kubernetes to download and use for the cluster" )
39
- testVersion = flag .String ("test-version" , "" , "version of Kubernetes to download and use for tests" )
40
- kubeFeatureGates = flag .String ("kube-feature-gates" , "" , "feature gates to set on new kubernetes cluster" )
41
- localK8sDir = flag .String ("local-k8s-dir" , "" , "local prebuilt kubernetes/kubernetes directory to use for cluster and test binaries" )
42
- deploymentStrat = flag .String ("deployment-strategy" , "gce" , "choose between deploying on gce or gke" )
43
- gkeClusterVer = flag .String ("gke-cluster-version" , "" , "version of Kubernetes master and node for gke" )
44
- numNodes = flag .Int ("num-nodes" , - 1 , "the number of nodes in the test cluster" )
45
- imageType = flag .String ("image-type" , "cos" , "the image type to use for the cluster" )
33
+ teardownCluster = flag .Bool ("teardown-cluster" , true , "teardown the cluster after the e2e test" )
34
+ teardownDriver = flag .Bool ("teardown-driver" , true , "teardown the driver after the e2e test" )
35
+ bringupCluster = flag .Bool ("bringup-cluster" , true , "build kubernetes and bringup a cluster" )
36
+ gceZone = flag .String ("gce-zone" , "" , "zone that the gce k8s cluster is created/found in" )
37
+ gceRegion = flag .String ("gce-region" , "" , "region that gke regional cluster should be created in" )
38
+ kubeVersion = flag .String ("kube-version" , "" , "version of Kubernetes to download and use for the cluster" )
39
+ testVersion = flag .String ("test-version" , "" , "version of Kubernetes to download and use for tests" )
40
+ kubeFeatureGates = flag .String ("kube-feature-gates" , "" , "feature gates to set on new kubernetes cluster" )
41
+ localK8sDir = flag .String ("local-k8s-dir" , "" , "local prebuilt kubernetes/kubernetes directory to use for cluster and test binaries" )
42
+ deploymentStrat = flag .String ("deployment-strategy" , "gce" , "choose between deploying on gce or gke" )
43
+ gkeClusterVer = flag .String ("gke-cluster-version" , "" , "version of Kubernetes master and node for gke" )
44
+ numNodes = flag .Int ("num-nodes" , - 1 , "the number of nodes in the test cluster" )
45
+ imageType = flag .String ("image-type" , "cos" , "the image type to use for the cluster" )
46
+ gkeReleaseChannel = flag .String ("gke-release-channel" , "" , "GKE release channel to be used for cluster deploy. One of 'rapid', 'stable' or 'regular'" )
46
47
47
48
// Test infrastructure flags
48
49
boskosResourceType = flag .String ("boskos-resource-type" , "gce-project" , "name of the boskos resource type to reserve" )
@@ -82,8 +83,10 @@ func main() {
82
83
83
84
if * useGKEManagedDriver {
84
85
ensureVariableVal (deploymentStrat , "gke" , "deployment strategy must be GKE for using managed driver" )
85
- ensureFlag (doDriverBuild , false , "driver build flag will be ignored when using GKE managed driver" )
86
- ensureFlag (teardownDriver , false , "driver teardown flag will be ignored when using GKE managed driver" )
86
+ ensureFlag (doDriverBuild , false , "'do-driver-build' must be false when using GKE managed driver" )
87
+ ensureFlag (teardownDriver , false , "'teardown-driver' must be false when using GKE managed driver" )
88
+ ensureVariable (stagingImage , false , "'staging-image' must not be set when using GKE managed driver" )
89
+ ensureVariable (deployOverlayName , false , "'deploy-overlay-name' must not be set when using GKE managed driver" )
87
90
}
88
91
89
92
ensureVariable (saFile , true , "service-account-file is a required flag" )
@@ -113,7 +116,8 @@ func main() {
113
116
if * deploymentStrat == "gke" {
114
117
ensureFlag (migrationTest , false , "Cannot set deployment strategy to 'gke' for migration tests." )
115
118
ensureVariable (kubeVersion , false , "Cannot set kube-version when using deployment strategy 'gke'. Use gke-cluster-version." )
116
- ensureVariable (gkeClusterVer , true , "Must set gke-cluster-version when using deployment strategy 'gke'." )
119
+ ensureExactlyOneVariableSet ([]* string {gkeClusterVer , gkeReleaseChannel },
120
+ "For GKE cluster deployment, exactly one of 'gke-cluster-version' or 'gke-release-channel' must be set" )
117
121
ensureVariable (kubeFeatureGates , false , "Cannot set feature gates when using deployment strategy 'gke'." )
118
122
if len (* localK8sDir ) == 0 {
119
123
ensureVariable (testVersion , true , "Must set either test-version or local k8s dir when using deployment strategy 'gke'." )
@@ -308,12 +312,11 @@ func handle() error {
308
312
}
309
313
}
310
314
311
- normalizedVersion , err := getNormalizedVersion ( * kubeVersion , * gkeClusterVer )
312
- if err != nil {
313
- return fmt . Errorf ( "failed to get cluster minor version: %v" , err )
314
- }
315
+ clusterVersion := mustGetKubClusterVersion ( )
316
+ fmt . Printf ( "Kubernetes cluster version %q \n " , clusterVersion )
317
+ testSkip := generateTestSkip ( clusterVersion , * useGKEManagedDriver )
318
+ fmt . Printf ( "Test skip string %s" , testSkip )
315
319
316
- testSkip := generateTestSkip (normalizedVersion )
317
320
// Run the tests using the testDir kubernetes
318
321
if len (* storageClassFile ) != 0 {
319
322
err = runCSITests (pkgDir , testDir , * testFocus , testSkip , * storageClassFile , * snapshotClassFile , cloudProviderArgs , * deploymentStrat )
@@ -330,30 +333,19 @@ func handle() error {
330
333
return nil
331
334
}
332
335
333
- func generateTestSkip (normalizedVersion string ) string {
336
+ // Helper function to generate skip string when using GKE managed PD CSI driver.
337
+ func generateTestSkip (clusterVersion string , use_gke_managed_driver bool ) string {
334
338
skipString := "\\ [Disruptive\\ ]|\\ [Serial\\ ]"
335
- switch normalizedVersion {
336
- // Fall-through versioning since all test cases we want to skip in 1.15
337
- // should also be skipped in 1.14
338
- case "1.13" :
339
- fallthrough
340
- case "1.14" :
341
- fallthrough
342
- case "1.15" :
343
- fallthrough
344
- case "1.16" :
345
- // "volumeMode should not mount / map unused volumes in a pod" tests a
346
- // bug-fix introduced in 1.17
347
- // (https://github.com/kubernetes/kubernetes/pull/81163)
339
+ curVer := MustParseVersion (clusterVersion )
340
+ if (* curVer ).IsLessThan (MustParseVersion ("1.16.0" )) {
348
341
skipString = skipString + "|volumeMode\\ sshould\\ snot\\ smount\\ s/\\ smap\\ sunused\\ svolumes\\ sin\\ sa\\ spod"
349
- // Skip Snapshot tests pre 1.17
350
- skipString = skipString + "|snapshot"
351
- fallthrough
352
- case "1.17" :
353
- case "latest" :
354
- case "master" :
355
- default :
356
342
}
343
+
344
+ if (use_gke_managed_driver && (* curVer ).IsLessThan (MustParseVersion ("1.18.3-gke.0" ))) ||
345
+ (! use_gke_managed_driver && (* curVer ).IsLessThan (MustParseVersion ("1.17.0" ))) {
346
+ skipString = skipString + "|VolumeSnapshotDataSource"
347
+ }
348
+
357
349
return skipString
358
350
}
359
351
0 commit comments