Merge pull request #90147 from gnufied/use-random-node-zone-for-inline-e2e
Use random zone for inline volume e2e tests
This commit is contained in:
		@@ -1316,6 +1316,7 @@ func (g *gcePdDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestCo
 | 
				
			|||||||
		Prefix:    "gcepd",
 | 
							Prefix:    "gcepd",
 | 
				
			||||||
		Framework: f,
 | 
							Framework: f,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if framework.NodeOSDistroIs("windows") {
 | 
						if framework.NodeOSDistroIs("windows") {
 | 
				
			||||||
		config.ClientNodeSelection = e2epod.NodeSelection{
 | 
							config.ClientNodeSelection = e2epod.NodeSelection{
 | 
				
			||||||
			Selector: map[string]string{
 | 
								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 {
 | 
					func (g *gcePdDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
 | 
				
			||||||
 | 
						zone := getInlineVolumeZone(config.Framework)
 | 
				
			||||||
	if volType == testpatterns.InlineVolume {
 | 
						if volType == testpatterns.InlineVolume {
 | 
				
			||||||
		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
 | 
							// PD will be created in framework.TestContext.CloudConfig.Zone zone,
 | 
				
			||||||
		// so pods should be also scheduled there.
 | 
							// so pods should be also scheduled there.
 | 
				
			||||||
		config.ClientNodeSelection = e2epod.NodeSelection{
 | 
							config.ClientNodeSelection = e2epod.NodeSelection{
 | 
				
			||||||
			Selector: map[string]string{
 | 
								Selector: map[string]string{
 | 
				
			||||||
				v1.LabelZoneFailureDomain: framework.TestContext.CloudConfig.Zone,
 | 
									v1.LabelZoneFailureDomain: zone,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ginkgo.By("creating a test gce pd volume")
 | 
						ginkgo.By("creating a test gce pd volume")
 | 
				
			||||||
	vname, err := e2epv.CreatePDWithRetry()
 | 
						vname, err := e2epv.CreatePDWithRetryAndZone(zone)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	return &gcePdVolume{
 | 
						return &gcePdVolume{
 | 
				
			||||||
		volumeName: vname,
 | 
							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 {
 | 
					func (a *azureDiskDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
 | 
				
			||||||
	ginkgo.By("creating a test azure disk volume")
 | 
						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)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	return &azureDiskVolume{
 | 
						return &azureDiskVolume{
 | 
				
			||||||
		volumeName: volumeName,
 | 
							volumeName: volumeName,
 | 
				
			||||||
@@ -1713,6 +1725,7 @@ func (a *awsDriver) PrepareTest(f *framework.Framework) (*testsuites.PerTestConf
 | 
				
			|||||||
		Prefix:    "aws",
 | 
							Prefix:    "aws",
 | 
				
			||||||
		Framework: f,
 | 
							Framework: f,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if framework.NodeOSDistroIs("windows") {
 | 
						if framework.NodeOSDistroIs("windows") {
 | 
				
			||||||
		config.ClientNodeSelection = e2epod.NodeSelection{
 | 
							config.ClientNodeSelection = e2epod.NodeSelection{
 | 
				
			||||||
			Selector: map[string]string{
 | 
								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 {
 | 
					func (a *awsDriver) CreateVolume(config *testsuites.PerTestConfig, volType testpatterns.TestVolType) testsuites.TestVolume {
 | 
				
			||||||
 | 
						zone := getInlineVolumeZone(config.Framework)
 | 
				
			||||||
	if volType == testpatterns.InlineVolume {
 | 
						if volType == testpatterns.InlineVolume {
 | 
				
			||||||
		// PD will be created in framework.TestContext.CloudConfig.Zone zone,
 | 
							// PD will be created in framework.TestContext.CloudConfig.Zone zone,
 | 
				
			||||||
		// so pods should be also scheduled there.
 | 
							// so pods should be also scheduled there.
 | 
				
			||||||
		config.ClientNodeSelection = e2epod.NodeSelection{
 | 
							config.ClientNodeSelection = e2epod.NodeSelection{
 | 
				
			||||||
			Selector: map[string]string{
 | 
								Selector: map[string]string{
 | 
				
			||||||
				v1.LabelZoneFailureDomain: framework.TestContext.CloudConfig.Zone,
 | 
									v1.LabelZoneFailureDomain: zone,
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	ginkgo.By("creating a test aws volume")
 | 
						ginkgo.By("creating a test aws volume")
 | 
				
			||||||
	vname, err := e2epv.CreatePDWithRetry()
 | 
						vname, err := e2epv.CreatePDWithRetryAndZone(zone)
 | 
				
			||||||
	framework.ExpectNoError(err)
 | 
						framework.ExpectNoError(err)
 | 
				
			||||||
	return &awsVolume{
 | 
						return &awsVolume{
 | 
				
			||||||
		volumeName: vname,
 | 
							volumeName: vname,
 | 
				
			||||||
@@ -1937,6 +1951,20 @@ func cleanUpVolumeServer(f *framework.Framework, serverPod *v1.Pod) {
 | 
				
			|||||||
	cleanUpVolumeServerWithSecret(f, serverPod, nil)
 | 
						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.
 | 
					// 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) {
 | 
					func cleanUpVolumeServerWithSecret(f *framework.Framework, serverPod *v1.Pod, secret *v1.Secret) {
 | 
				
			||||||
	cs := f.ClientSet
 | 
						cs := f.ClientSet
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user