@@ -1316,6 +1316,7 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
1316
1316
Prefix : "gcepd" ,
1317
1317
Framework : f ,
1318
1318
}
1319
+
1319
1320
if framework .NodeOSDistroIs ("windows" ) {
1320
1321
config .ClientNodeSelection = e2epod.NodeSelection {
1321
1322
Selector : map [string ]string {
@@ -1328,17 +1329,18 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
1328
1329
}
1329
1330
1330
1331
func (g * gcePdDriver ) CreateVolume (config * testsuites.PerTestConfig , volType testpatterns.TestVolType ) testsuites.TestVolume {
1332
+ zone := getInlineVolumeZone (config .Framework )
1331
1333
if volType == testpatterns .InlineVolume {
1332
1334
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
1333
1335
// so pods should be also scheduled there.
1334
1336
config .ClientNodeSelection = e2epod.NodeSelection {
1335
1337
Selector : map [string ]string {
1336
- v1 .LabelZoneFailureDomain : framework . TestContext . CloudConfig . Zone ,
1338
+ v1 .LabelZoneFailureDomain : zone ,
1337
1339
},
1338
1340
}
1339
1341
}
1340
1342
ginkgo .By ("creating a test gce pd volume" )
1341
- vname , err := e2epv .CreatePDWithRetry ( )
1343
+ vname , err := e2epv .CreatePDWithRetryAndZone ( zone )
1342
1344
framework .ExpectNoError (err )
1343
1345
return & gcePdVolume {
1344
1346
volumeName : vname ,
@@ -1592,7 +1594,17 @@ func (a *azureDiskDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTe
1592
1594
1593
1595
func (a * azureDiskDriver ) CreateVolume (config * testsuites.PerTestConfig , volType testpatterns.TestVolType ) testsuites.TestVolume {
1594
1596
ginkgo .By ("creating a test azure disk volume" )
1595
- volumeName , err := e2epv .CreatePDWithRetry ()
1597
+ zone := getInlineVolumeZone (config .Framework )
1598
+ if volType == testpatterns .InlineVolume {
1599
+ // PD will be created in framework.TestContext.CloudConfig.Zone zone,
1600
+ // so pods should be also scheduled there.
1601
+ config .ClientNodeSelection = e2epod.NodeSelection {
1602
+ Selector : map [string ]string {
1603
+ v1 .LabelZoneFailureDomain : zone ,
1604
+ },
1605
+ }
1606
+ }
1607
+ volumeName , err := e2epv .CreatePDWithRetryAndZone (zone )
1596
1608
framework .ExpectNoError (err )
1597
1609
return & azureDiskVolume {
1598
1610
volumeName : volumeName ,
@@ -1713,6 +1725,7 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
1713
1725
Prefix : "aws" ,
1714
1726
Framework : f ,
1715
1727
}
1728
+
1716
1729
if framework .NodeOSDistroIs ("windows" ) {
1717
1730
config .ClientNodeSelection = e2epod.NodeSelection {
1718
1731
Selector : map [string ]string {
@@ -1724,17 +1737,18 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
1724
1737
}
1725
1738
1726
1739
func (a * awsDriver ) CreateVolume (config * testsuites.PerTestConfig , volType testpatterns.TestVolType ) testsuites.TestVolume {
1740
+ zone := getInlineVolumeZone (config .Framework )
1727
1741
if volType == testpatterns .InlineVolume {
1728
1742
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
1729
1743
// so pods should be also scheduled there.
1730
1744
config .ClientNodeSelection = e2epod.NodeSelection {
1731
1745
Selector : map [string ]string {
1732
- v1 .LabelZoneFailureDomain : framework . TestContext . CloudConfig . Zone ,
1746
+ v1 .LabelZoneFailureDomain : zone ,
1733
1747
},
1734
1748
}
1735
1749
}
1736
1750
ginkgo .By ("creating a test aws volume" )
1737
- vname , err := e2epv .CreatePDWithRetry ( )
1751
+ vname , err := e2epv .CreatePDWithRetryAndZone ( zone )
1738
1752
framework .ExpectNoError (err )
1739
1753
return & awsVolume {
1740
1754
volumeName : vname ,
@@ -1937,6 +1951,20 @@ func cleanUpVolumeServer(f *framework.Framework, serverPod *v1.Pod) {
1937
1951
cleanUpVolumeServerWithSecret (f , serverPod , nil )
1938
1952
}
1939
1953
1954
+ func getInlineVolumeZone (f * framework.Framework ) string {
1955
+ if framework .TestContext .CloudConfig .Zone != "" {
1956
+ return framework .TestContext .CloudConfig .Zone
1957
+ }
1958
+ // if zone is not specified we will randomly pick a zone from schedulable nodes for inline tests
1959
+ node , err := e2enode .GetRandomReadySchedulableNode (f .ClientSet )
1960
+ framework .ExpectNoError (err )
1961
+ zone , ok := node .Labels [v1 .LabelZoneFailureDomain ]
1962
+ if ok {
1963
+ return zone
1964
+ }
1965
+ return ""
1966
+ }
1967
+
1940
1968
// cleanUpVolumeServerWithSecret is a wrapper of cleanup function for volume server with secret created by specific CreateStorageServer function.
1941
1969
func cleanUpVolumeServerWithSecret (f * framework.Framework , serverPod * v1.Pod , secret * v1.Secret ) {
1942
1970
cs := f .ClientSet
0 commit comments