add feature reconnect to esxi

This commit is contained in:
tursom 2023-08-07 15:13:41 +08:00
parent dd6d55cca3
commit c7649365e1

View File

@ -67,17 +67,22 @@ func doWatch(watches []*watchdog) {
fmt.Println("in ping tick")
needReconnect := false
for _, w := range watches {
doWatch0(w)
needReconnect = doWatch0(w) || needReconnect
}
if needReconnect {
return
}
}
}
func doWatch0(w *watchdog) bool {
func doWatch0(w *watchdog) (needReconnect bool) {
pinger, err := ping.NewPinger(w.addr)
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "ping to target failed: %s\n", err)
return false
return
}
pinger.Timeout = time.Second * 15
@ -87,21 +92,21 @@ func doWatch0(w *watchdog) bool {
err = pinger.Run()
if err != nil {
_, _ = fmt.Fprintf(os.Stderr, "ping to target failed: %s\n", err)
return false
return
}
fmt.Printf("finished ping to %s\n", w.addr)
statistics := pinger.Statistics()
if statistics.PacketsRecv != 0 {
w.life = 3
return false
return
}
w.life--
fmt.Printf("ping vm %s(%s) failed, left %d life", w.addr, w.vm.Name(), w.life)
if w.life > 0 {
return false
return
}
fmt.Printf("restarting vm %s(%s)", w.addr, w.vm.Name())
@ -111,7 +116,7 @@ func doWatch0(w *watchdog) bool {
return true
}
return false
return
}
func reset(vm *vmomi.VirtualMachine) error {