github.com/cloud-foundations/dominator@v0.0.0-20221004181915-6e4fee580046/cmd/vm-control/discardVmOldUserData.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "net" 6 7 "github.com/Cloud-Foundations/Dominator/lib/errors" 8 "github.com/Cloud-Foundations/Dominator/lib/log" 9 proto "github.com/Cloud-Foundations/Dominator/proto/hypervisor" 10 ) 11 12 func discardVmOldUserDataSubcommand(args []string, 13 logger log.DebugLogger) error { 14 if err := discardVmOldUserData(args[0], logger); err != nil { 15 return fmt.Errorf("Error discarding VM old user data: %s", err) 16 } 17 return nil 18 } 19 20 func discardVmOldUserData(vmHostname string, logger log.DebugLogger) error { 21 if vmIP, hypervisor, err := lookupVmAndHypervisor(vmHostname); err != nil { 22 return err 23 } else { 24 return discardVmOldUserDataOnHypervisor(hypervisor, vmIP, logger) 25 } 26 } 27 28 func discardVmOldUserDataOnHypervisor(hypervisor string, ipAddr net.IP, 29 logger log.DebugLogger) error { 30 request := proto.DiscardVmOldUserDataRequest{ipAddr} 31 client, err := dialHypervisor(hypervisor) 32 if err != nil { 33 return err 34 } 35 defer client.Close() 36 var reply proto.DiscardVmOldUserDataResponse 37 err = client.RequestReply("Hypervisor.DiscardVmOldUserData", request, 38 &reply) 39 if err != nil { 40 return err 41 } 42 return errors.New(reply.Error) 43 }