Skip to content

Commit aa0665d

Browse files
authored
Merge pull request kubernetes#90147 from gnufied/use-random-node-zone-for-inline-e2e
Use random zone for inline volume e2e tests
2 parents 489a525 + 7d67126 commit aa0665d

File tree

1 file changed

+33
-5
lines changed

1 file changed

+33
-5
lines changed

test/e2e/storage/drivers/in_tree.go

Lines changed: 33 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1316,6 +1316,7 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
13161316
Prefix: "gcepd",
13171317
Framework: f,
13181318
}
1319+
13191320
if framework.NodeOSDistroIs("windows") {
13201321
config.ClientNodeSelection = e2epod.NodeSelection{
13211322
Selector: map[string]string{
@@ -1328,17 +1329,18 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
13281329
}
13291330

13301331
func (g *gcePdDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
1332+
zone := getInlineVolumeZone(config.Framework)
13311333
if volType == testpatterns.InlineVolume {
13321334
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
13331335
// so pods should be also scheduled there.
13341336
config.ClientNodeSelection = e2epod.NodeSelection{
13351337
Selector: map[string]string{
1336-
v1.LabelZoneFailureDomain: framework.TestContext.CloudConfig.Zone,
1338+
v1.LabelZoneFailureDomain: zone,
13371339
},
13381340
}
13391341
}
13401342
ginkgo.By("creating a test gce pd volume")
1341-
vname, err := e2epv.CreatePDWithRetry()
1343+
vname, err := e2epv.CreatePDWithRetryAndZone(zone)
13421344
framework.ExpectNoError(err)
13431345
return &gcePdVolume{
13441346
volumeName: vname,
@@ -1592,7 +1594,17 @@ func (a *azureDiskDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTe
15921594

15931595
func (a *azureDiskDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
15941596
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)
15961608
framework.ExpectNoError(err)
15971609
return &azureDiskVolume{
15981610
volumeName: volumeName,
@@ -1713,6 +1725,7 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
17131725
Prefix: "aws",
17141726
Framework: f,
17151727
}
1728+
17161729
if framework.NodeOSDistroIs("windows") {
17171730
config.ClientNodeSelection = e2epod.NodeSelection{
17181731
Selector: map[string]string{
@@ -1724,17 +1737,18 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
17241737
}
17251738

17261739
func (a *awsDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
1740+
zone := getInlineVolumeZone(config.Framework)
17271741
if volType == testpatterns.InlineVolume {
17281742
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
17291743
// so pods should be also scheduled there.
17301744
config.ClientNodeSelection = e2epod.NodeSelection{
17311745
Selector: map[string]string{
1732-
v1.LabelZoneFailureDomain: framework.TestContext.CloudConfig.Zone,
1746+
v1.LabelZoneFailureDomain: zone,
17331747
},
17341748
}
17351749
}
17361750
ginkgo.By("creating a test aws volume")
1737-
vname, err := e2epv.CreatePDWithRetry()
1751+
vname, err := e2epv.CreatePDWithRetryAndZone(zone)
17381752
framework.ExpectNoError(err)
17391753
return &awsVolume{
17401754
volumeName: vname,
@@ -1937,6 +1951,20 @@ func cleanUpVolumeServer(f *framework.Framework, serverPod *v1.Pod) {
19371951
cleanUpVolumeServerWithSecret(f, serverPod, nil)
19381952
}
19391953

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+
19401968
// cleanUpVolumeServerWithSecret is a wrapper of cleanup function for volume server with secret created by specific CreateStorageServer function.
19411969
func cleanUpVolumeServerWithSecret(f *framework.Framework, serverPod *v1.Pod, secret *v1.Secret) {
19421970
cs := f.ClientSet

0 commit comments

Comments
 (0)