github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/vm-control/destroyVm.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 destroyVmSubcommand(args []string, logger log.DebugLogger) error { 12 if err := destroyVm(args[0], logger); err != nil { 13 return fmt.Errorf("Error destroying VM: %s", err) 14 } 15 return nil 16 } 17 18 func destroyVm(vmHostname string, logger log.DebugLogger) error { 19 if vmIP, hypervisor, err := lookupVmAndHypervisor(vmHostname); err != nil { 20 return err 21 } else { 22 return destroyVmOnHypervisor(hypervisor, vmIP, logger) 23 } 24 } 25 26 func destroyVmOnHypervisor(hypervisor string, ipAddr net.IP, 27 logger log.DebugLogger) error { 28 client, err := dialHypervisor(hypervisor) 29 if err != nil { 30 return err 31 } 32 defer client.Close() 33 logVmName(client, ipAddr, "destroying", logger) 34 return hyperclient.DestroyVm(client, ipAddr, nil) 35 }