github.com/Cloud-Foundations/Dominator@v0.3.4/cmd/hyper-control/holdVmLock.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 7 hyperclient "github.com/Cloud-Foundations/Dominator/hypervisor/client" 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 ) 10 11 func holdVmLockSubcommand(args []string, logger log.DebugLogger) error { 12 if err := holdVmLock(args[0], logger); err != nil { 13 return fmt.Errorf("error holding VM lock: %s", err) 14 } 15 return nil 16 } 17 18 func holdVmLock(vmHostname string, logger log.DebugLogger) error { 19 if vmIP, hypervisor, err := lookupVmAndHypervisor(vmHostname); err != nil { 20 return err 21 } else { 22 return holdVmLockOnHypervisor(hypervisor, vmIP, logger) 23 } 24 } 25 26 func holdVmLockOnHypervisor(hypervisor string, ipAddr net.IP, 27 logger log.DebugLogger) error { 28 client, err := dialHypervisor(hypervisor) 29 if err != nil { 30 return err 31 } 32 if err != nil { 33 return err 34 } 35 defer client.Close() 36 return hyperclient.HoldVmLock(client, ipAddr, *lockTimeout, *writeLock) 37 }