Skip to content
This repository was archived by the owner on Jul 30, 2021. It is now read-only.

Commit e47b760

Browse files
committed
e2e: Add retries for ssh-based node rebooting
1 parent f357148 commit e47b760

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

e2e/node.go

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,23 @@ func (n *Node) SSH(cmd string) (stdout, stderr []byte, err error) {
5454
}
5555

5656
func (n *Node) Reboot() error {
57-
stdout, stderr, err := n.SSH("sudo reboot")
58-
if _, ok := err.(*ssh.ExitMissingError); ok {
59-
// A terminated session is perfectly normal during reboot.
60-
err = nil
61-
}
62-
if err != nil {
63-
return fmt.Errorf("issuing reboot command failed: %v\nstdout:%s\nstderr:%s", err, stdout, stderr)
57+
58+
// ssh to node and reboot
59+
rebooter := func() error {
60+
stdout, stderr, err := n.SSH("sudo reboot")
61+
if _, ok := err.(*ssh.ExitMissingError); ok {
62+
// A terminated session is perfectly normal during reboot.
63+
err = nil
64+
}
65+
if err != nil {
66+
return fmt.Errorf("issuing reboot command failed: %v\nstdout:%s\nstderr:%s", err, stdout, stderr)
67+
}
68+
return err
6469
}
6570

71+
// ensure rebooted node is running
6672
checker := func() error {
67-
stdout, stderr, err = n.SSH("systemctl is-system-running")
73+
stdout, stderr, err := n.SSH("systemctl is-system-running")
6874
if err != nil {
6975
return fmt.Errorf("%v: %v", err, stderr)
7076
}
@@ -74,6 +80,10 @@ func (n *Node) Reboot() error {
7480
return nil
7581
}
7682

83+
if err := retry(5, 30*time.Second, rebooter); err != nil {
84+
return err
85+
}
86+
7787
return retry(20, 10*time.Second, checker)
7888
}
7989

0 commit comments

Comments
 (0)