mirror of https://github.com/docker/docs.git
Merge pull request #2889 from dgageot/wait-host-only
Always wait for the host-only adapter to appear
This commit is contained in:
commit
72d9c4d039
|
@ -154,26 +154,29 @@ func getOrCreateHostOnlyNetwork(hostIP net.IP, netmask net.IPMask, vbox VBoxMana
|
|||
return nil, err
|
||||
}
|
||||
|
||||
// Search for an existing host-only adapter.
|
||||
hostOnlyAdapter := getHostOnlyAdapter(nets, hostIP, netmask)
|
||||
if hostOnlyAdapter != nil {
|
||||
return hostOnlyAdapter, nil
|
||||
}
|
||||
|
||||
// No existing host-only adapter found. Create a new one.
|
||||
hostOnlyAdapter, err = createHostonlyAdapter(vbox)
|
||||
_, err = createHostonlyAdapter(vbox)
|
||||
if err != nil {
|
||||
// Sometimes the host-only adapter fails to create. See https://www.virtualbox.org/ticket/14040
|
||||
// BUT, it is created in fact! So let's wait until it appears last in the list
|
||||
log.Warnf("Creating a new host-only adapter produced an error: %s", err)
|
||||
log.Warn("This is a known VirtualBox bug. Let's try to recover anyway...")
|
||||
}
|
||||
|
||||
// It can take some time for an adapter to appear. Let's poll.
|
||||
hostOnlyAdapter, err = waitForNewHostOnlyNetwork(nets, vbox)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
// Sometimes, Vbox says it created it but then it cannot be found...
|
||||
return nil, errNewHostOnlyAdapterNotVisible
|
||||
}
|
||||
|
||||
log.Warnf("Found a new host-only adapter: %q", hostOnlyAdapter.Name)
|
||||
}
|
||||
|
||||
hostOnlyAdapter.IPv4.IP = hostIP
|
||||
hostOnlyAdapter.IPv4.Mask = netmask
|
||||
|
@ -181,18 +184,6 @@ func getOrCreateHostOnlyNetwork(hostIP net.IP, netmask net.IPMask, vbox VBoxMana
|
|||
return nil, err
|
||||
}
|
||||
|
||||
// Check that the adapter still exists.
|
||||
// Sometimes, Vbox says it created it but then it cannot be found...
|
||||
nets, err = listHostOnlyAdapters(vbox)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
found := getHostOnlyAdapter(nets, hostIP, netmask)
|
||||
if found == nil {
|
||||
return nil, errNewHostOnlyAdapterNotVisible
|
||||
}
|
||||
|
||||
return hostOnlyAdapter, nil
|
||||
}
|
||||
|
||||
|
|
|
@ -345,7 +345,6 @@ func TestStart(t *testing.T) {
|
|||
{"vbm showvminfo default --machinereadable", `VMState="poweroff"`, nil},
|
||||
{"vbm list hostonlyifs", "", nil},
|
||||
{"vbm hostonlyif create", "Interface 'VirtualBox Host-Only Ethernet Adapter' was successfully created", nil},
|
||||
{"vbm hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.1 --netmask 255.255.255.0", "", nil},
|
||||
{"vbm list hostonlyifs", `
|
||||
Name: VirtualBox Host-Only Ethernet Adapter
|
||||
GUID: 786f6276-656e-4074-8000-0a0027000000
|
||||
|
@ -358,6 +357,7 @@ HardwareAddress: 0a:00:27:00:00:00
|
|||
MediumType: Ethernet
|
||||
Status: Up
|
||||
VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil},
|
||||
{"vbm hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.1 --netmask 255.255.255.0", "", nil},
|
||||
{"vbm list dhcpservers", "", nil},
|
||||
{"vbm list dhcpservers", "", nil},
|
||||
{"vbm dhcpserver add --netname HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.6 --netmask 255.255.255.0 --lowerip 192.168.99.100 --upperip 192.168.99.254 --enable", "", nil},
|
||||
|
@ -419,18 +419,6 @@ MediumType: Ethernet
|
|||
Status: Up
|
||||
VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil},
|
||||
{"vbm hostonlyif ipconfig VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.1 --netmask 255.255.255.0", "", nil},
|
||||
{"vbm list hostonlyifs", `
|
||||
Name: VirtualBox Host-Only Ethernet Adapter
|
||||
GUID: 786f6276-656e-4074-8000-0a0027000000
|
||||
DHCP: Disabled
|
||||
IPAddress: 192.168.99.1
|
||||
NetworkMask: 255.255.255.0
|
||||
IPV6Address:
|
||||
IPV6NetworkMaskPrefixLength: 0
|
||||
HardwareAddress: 0a:00:27:00:00:00
|
||||
MediumType: Ethernet
|
||||
Status: Up
|
||||
VBoxNetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter`, nil},
|
||||
{"vbm list dhcpservers", "", nil},
|
||||
{"vbm list dhcpservers", "", nil},
|
||||
{"vbm dhcpserver add --netname HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter --ip 192.168.99.6 --netmask 255.255.255.0 --lowerip 192.168.99.100 --upperip 192.168.99.254 --enable", "", nil},
|
||||
|
|
Loading…
Reference in New Issue