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