Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 11 additions & 17 deletions lib/vagrant-parallels/driver/base.rb
Original file line number Diff line number Diff line change
Expand Up @@ -193,14 +193,13 @@ def delete_snapshot(uuid, snapshot_id)
end
end

# Deletes any host only networks that aren't being used for anything.
# Deletes host-only networks that aren't being used by any virtual machine.
def delete_unused_host_only_networks
networks = read_virtual_networks
# 'Shared'(vnic0) and 'Host-Only'(vnic1) are default in Parallels Desktop
# They should not be deleted anyway.

# Exclude all host-only network interfaces which were not created by vagrant provider.
networks.keep_if do |net|
net['Type'] == 'host-only' && net['Bound To'] &&
net['Bound To'].match(/^(?>vnic|Parallels Host-Only #)(\d+)$/)[1].to_i >= 2
net['Type'] == 'host-only' && net['Network ID'] =~ /^vagrant-vnet(\d+)$/
end

read_vms_info.each do |vm|
Expand All @@ -210,8 +209,8 @@ def delete_unused_host_only_networks
end
end

# Delete all unused network interfaces.
networks.each do |net|
# Delete the actual host only network interface.
execute_prlsrvctl('net', 'del', net['Network ID'])
end
end
Expand Down Expand Up @@ -496,7 +495,6 @@ def read_host_info
#
# {
# name: 'Host-Only', # Parallels Network ID
# bound_to: 'vnic1', # interface name
# ip: '10.37.129.2', # IP address of the interface
# netmask: '255.255.255.0', # netmask associated with the interface
# status: 'Up' # status of the interface
Expand All @@ -519,11 +517,9 @@ def read_host_only_interfaces
}

adapter = net_info['Parallels adapter']
if adapter && net_info['Bound To']
# In PD >= 10.1.2 there are new field names for an IP/Subnet
iface[:ip] = adapter['IP address'] || adapter['IPv4 address']
iface[:netmask] = adapter['Subnet mask'] || adapter['IPv4 subnet mask']
iface[:bound_to] = net_info['Bound To']
if adapter
iface[:ip] = adapter['IPv4 address']
iface[:netmask] = adapter['IPv4 subnet mask']
iface[:status] = 'Up'

if adapter['IPv6 address'] && adapter['IPv6 subnet mask']
Expand Down Expand Up @@ -618,11 +614,9 @@ def read_shared_interface
}
adapter = net_info['Parallels adapter']

if adapter && net_info['Bound To']
# In PD >= 10.1.2 there are new field names for an IP/Subnet
iface[:ip] = adapter['IP address'] || adapter['IPv4 address']
iface[:netmask] = adapter['Subnet mask'] || adapter['IPv4 subnet mask']
iface[:bound_to] = net_info['Bound To']
if adapter
iface[:ip] = adapter['IPv4 address']
iface[:netmask] = adapter['IPv4 subnet mask']
iface[:status] = 'Up'
end

Expand Down
3 changes: 1 addition & 2 deletions test/unit/action/network_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,6 @@
let(:hostonlyifs) {
[{
name: 'vagrant-vnet2',
bound_to: 'vnic4',
ip: '172.28.128.2',
netmask: '255.255.255.0',
status: 'Up'
Expand Down Expand Up @@ -273,4 +272,4 @@
end
end

end
end
2 changes: 0 additions & 2 deletions test/unit/support/shared/parallels_context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
let(:tpl_name) {'Some_Template_Name'}
let(:tools_state) {'installed'}
let(:tools_version) {'12.0.18615.123456'}
let(:hostonly_iface) {'vnic10'}

let(:vnic_options) do {
name: 'vagrant_vnic6',
Expand Down Expand Up @@ -179,7 +178,6 @@ def subprocess_result(options={})
{
"Network ID": "#{vnic_options[:name]}",
"Type": "host-only",
"Bound To": "#{hostonly_iface}",
"Parallels adapter": {
"IP address": "#{vnic_options[:adapter_ip]}",
"Subnet mask": "#{vnic_options[:netmask]}"
Expand Down