add feature reconnect to esxi
This commit is contained in:
parent
dd6d55cca3
commit
c7649365e1
@ -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 {
|
||||
|
Loading…
Reference in New Issue
Block a user