builder/vmware-esxi: Ignore localhost for VNC lookup [GH-1480]

Adds logic to ESXi driver VNC Address function to ignore listen
  addresses that bind to localhost (127.0.0.1), this allows certain
  default ports to be available on ESXi for VNC connections
This commit is contained in:
Jason A. Beranek 2014-09-16 22:00:52 -05:00
parent a7122b3cf3
commit 8689301d68
1 changed files with 7 additions and 4 deletions

View File

@ -151,6 +151,8 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
var vncPort uint
//Process ports ESXi is listening on to determine which are available
//This process does best effort to detect ports that are unavailable,
//it will ignore any ports listened to by only localhost
r, err := d.esxcli("network", "ip", "connection", "list")
if err != nil {
err = fmt.Errorf("Could not retrieve network information for ESXi: %v", err)
@ -161,12 +163,13 @@ func (d *ESX5Driver) VNCAddress(portMin, portMax uint) (string, uint, error) {
for record, err := r.read(); record != nil && err == nil; record, err = r.read() {
if record["State"] == "LISTEN" {
splitAddress := strings.Split(record["LocalAddress"], ":")
log.Print(splitAddress)
if splitAddress[0] != "127.0.0.1" {
port := splitAddress[len(splitAddress)-1]
log.Printf("ESXi Listening on: %s", port)
log.Printf("ESXi listening on address %s, port %s unavailable for VNC", record["LocalAddress"], port)
listenPorts[port] = true
}
}
}
for port := portMin; port <= portMax; port++ {
if _, ok := listenPorts[fmt.Sprintf("%d", port)]; ok {