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  }