mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
Use random zone for inline volume e2e tests
This commit is contained in:
parent
548124828c
commit
7d6712632c
@ -1316,6 +1316,7 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
|
||||
Prefix: "gcepd",
|
||||
Framework: f,
|
||||
}
|
||||
|
||||
if framework.NodeOSDistroIs("windows") {
|
||||
config.ClientNodeSelection = e2epod.NodeSelection{
|
||||
Selector: map[string]string{
|
||||
@ -1328,17 +1329,18 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
|
||||
}
|
||||
|
||||
func (g *gcePdDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
|
||||
zone := getInlineVolumeZone(config.Framework)
|
||||
if volType == testpatterns.InlineVolume {
|
||||
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
|
||||
// so pods should be also scheduled there.
|
||||
config.ClientNodeSelection = e2epod.NodeSelection{
|
||||
Selector: map[string]string{
|
||||
v1.LabelZoneFailureDomain: framework.TestContext.CloudConfig.Zone,
|
||||
v1.LabelZoneFailureDomain: zone,
|
||||
},
|
||||
}
|
||||
}
|
||||
ginkgo.By("creating a test gce pd volume")
|
||||
vname, err := e2epv.CreatePDWithRetry()
|
||||
vname, err := e2epv.CreatePDWithRetryAndZone(zone)
|
||||
framework.ExpectNoError(err)
|
||||
return &gcePdVolume{
|
||||
volumeName: vname,
|
||||
@ -1592,7 +1594,17 @@ func (a *azureDiskDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTe
|
||||
|
||||
func (a *azureDiskDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
|
||||
ginkgo.By("creating a test azure disk volume")
|
||||
volumeName, err := e2epv.CreatePDWithRetry()
|
||||
zone := getInlineVolumeZone(config.Framework)
|
||||
if volType == testpatterns.InlineVolume {
|
||||
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
|
||||
// so pods should be also scheduled there.
|
||||
config.ClientNodeSelection = e2epod.NodeSelection{
|
||||
Selector: map[string]string{
|
||||
v1.LabelZoneFailureDomain: zone,
|
||||
},
|
||||
}
|
||||
}
|
||||
volumeName, err := e2epv.CreatePDWithRetryAndZone(zone)
|
||||
framework.ExpectNoError(err)
|
||||
return &azureDiskVolume{
|
||||
volumeName: volumeName,
|
||||
@ -1713,6 +1725,7 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
|
||||
Prefix: "aws",
|
||||
Framework: f,
|
||||
}
|
||||
|
||||
if framework.NodeOSDistroIs("windows") {
|
||||
config.ClientNodeSelection = e2epod.NodeSelection{
|
||||
Selector: map[string]string{
|
||||
@ -1724,17 +1737,18 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
|
||||
}
|
||||
|
||||
func (a *awsDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
|
||||
zone := getInlineVolumeZone(config.Framework)
|
||||
if volType == testpatterns.InlineVolume {
|
||||
// PD will be created in framework.TestContext.CloudConfig.Zone zone,
|
||||
// so pods should be also scheduled there.
|
||||
config.ClientNodeSelection = e2epod.NodeSelection{
|
||||
Selector: map[string]string{
|
||||
v1.LabelZoneFailureDomain: framework.TestContext.CloudConfig.Zone,
|
||||
v1.LabelZoneFailureDomain: zone,
|
||||
},
|
||||
}
|
||||
}
|
||||
ginkgo.By("creating a test aws volume")
|
||||
vname, err := e2epv.CreatePDWithRetry()
|
||||
vname, err := e2epv.CreatePDWithRetryAndZone(zone)
|
||||
framework.ExpectNoError(err)
|
||||
return &awsVolume{
|
||||
volumeName: vname,
|
||||
@ -1937,6 +1951,20 @@ func cleanUpVolumeServer(f *framework.Framework, serverPod *v1.Pod) {
|
||||
cleanUpVolumeServerWithSecret(f, serverPod, nil)
|
||||
}
|
||||
|
||||
func getInlineVolumeZone(f *framework.Framework) string {
|
||||
if framework.TestContext.CloudConfig.Zone != "" {
|
||||
return framework.TestContext.CloudConfig.Zone
|
||||
}
|
||||
// if zone is not specified we will randomly pick a zone from schedulable nodes for inline tests
|
||||
node, err := e2enode.GetRandomReadySchedulableNode(f.ClientSet)
|
||||
framework.ExpectNoError(err)
|
||||
zone, ok := node.Labels[v1.LabelZoneFailureDomain]
|
||||
if ok {
|
||||
return zone
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// cleanUpVolumeServerWithSecret is a wrapper of cleanup function for volume server with secret created by specific CreateStorageServer function.
|
||||
func cleanUpVolumeServerWithSecret(f *framework.Framework, serverPod *v1.Pod, secret *v1.Secret) {
|
||||
cs := f.ClientSet
|
||||
|
Loading…
Reference in New Issue
Block a user