mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-01 17:29:00 +00:00
Fix flake with e2e test that checks detach while mount in progress
A volume can show up as in-use even before it gets attached to the node.
This commit is contained in:
@@ -84,10 +84,17 @@ var _ = utils.SIGDescribe("Detaching volumes", func() {
|
|||||||
|
|
||||||
uniqueVolumeName := getUniqueVolumeName(pod, driverInstallAs)
|
uniqueVolumeName := getUniqueVolumeName(pod, driverInstallAs)
|
||||||
|
|
||||||
|
By("waiting for volumes to be attached to node")
|
||||||
|
err = waitForVolumesAttached(cs, node.Name, uniqueVolumeName)
|
||||||
|
Expect(err).NotTo(HaveOccurred(), "while waiting for volume to attach to %s node", node.Name)
|
||||||
|
|
||||||
By("waiting for volume-in-use on the node after pod creation")
|
By("waiting for volume-in-use on the node after pod creation")
|
||||||
err = waitForVolumesInUse(cs, node.Name, uniqueVolumeName)
|
err = waitForVolumesInUse(cs, node.Name, uniqueVolumeName)
|
||||||
Expect(err).NotTo(HaveOccurred(), "while waiting for volume in use")
|
Expect(err).NotTo(HaveOccurred(), "while waiting for volume in use")
|
||||||
|
|
||||||
|
By("waiting for kubelet to start mounting the volume")
|
||||||
|
time.Sleep(20 * time.Second)
|
||||||
|
|
||||||
By("Deleting the flexvolume pod")
|
By("Deleting the flexvolume pod")
|
||||||
err = framework.DeletePodWithWait(f, cs, pod)
|
err = framework.DeletePodWithWait(f, cs, pod)
|
||||||
Expect(err).NotTo(HaveOccurred(), "in deleting the pod")
|
Expect(err).NotTo(HaveOccurred(), "in deleting the pod")
|
||||||
@@ -134,6 +141,22 @@ func waitForVolumesNotInUse(client clientset.Interface, nodeName, volumeName str
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func waitForVolumesAttached(client clientset.Interface, nodeName, volumeName string) error {
|
||||||
|
return wait.PollImmediate(2*time.Second, 2*time.Minute, func() (bool, error) {
|
||||||
|
node, err := client.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
||||||
|
if err != nil {
|
||||||
|
return false, fmt.Errorf("error fetching node %s with %v", nodeName, err)
|
||||||
|
}
|
||||||
|
volumeAttached := node.Status.VolumesAttached
|
||||||
|
for _, volume := range volumeAttached {
|
||||||
|
if string(volume.Name) == volumeName {
|
||||||
|
return true, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false, nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func waitForVolumesInUse(client clientset.Interface, nodeName, volumeName string) error {
|
func waitForVolumesInUse(client clientset.Interface, nodeName, volumeName string) error {
|
||||||
return wait.PollImmediate(10*time.Second, 60*time.Second, func() (bool, error) {
|
return wait.PollImmediate(10*time.Second, 60*time.Second, func() (bool, error) {
|
||||||
node, err := client.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
node, err := client.CoreV1().Nodes().Get(nodeName, metav1.GetOptions{})
|
||||||
|
Reference in New Issue
Block a user