vagrant-windows 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -59,51 +59,34 @@ module Vagrant
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def configure_networks(networks)
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
#vm.channel.sudo("rm /tmp/vagrant-network-interfaces")
|
68
|
-
|
69
|
-
# Accumulate the configurations to add to the interfaces file as
|
70
|
-
# well as what interfaces we're actually configuring since we use that
|
71
|
-
# later.
|
72
|
-
#interfaces = Set.new
|
73
|
-
#entries = []
|
74
|
-
#networks.each do |network|
|
75
|
-
# interfaces.add(network[:interface])
|
76
|
-
# entry = TemplateRenderer.render("guests/debian/network_#{network[:type]}",
|
77
|
-
# :options => network)
|
78
|
-
|
79
|
-
# entries << entry
|
80
|
-
#end
|
81
|
-
|
82
|
-
# Perform the careful dance necessary to reconfigure
|
83
|
-
# the network interfaces
|
84
|
-
#temp = Tempfile.new("vagrant")
|
85
|
-
#temp.binmode
|
86
|
-
#temp.write(entries.join("\n"))
|
87
|
-
#temp.close
|
88
|
-
|
89
|
-
#vm.channel.upload(temp.path, "/tmp/vagrant-network-entry")
|
90
|
-
|
91
|
-
# Bring down all the interfaces we're reconfiguring. By bringing down
|
92
|
-
# each specifically, we avoid reconfiguring eth0 (the NAT interface) so
|
93
|
-
# SSH never dies.
|
94
|
-
#interfaces.each do |interface|
|
95
|
-
# vm.channel.sudo("/sbin/ifdown eth#{interface} 2> /dev/null")
|
96
|
-
#end
|
62
|
+
### HACK!!!!!
|
63
|
+
Nori.advanced_typecasting = false
|
64
|
+
if driver_mac_address = @vm.driver.read_mac_addresses
|
65
|
+
driver_mac_address = driver_mac_address.invert
|
66
|
+
end
|
97
67
|
|
98
|
-
|
99
|
-
|
68
|
+
vm_interface_map = {}
|
69
|
+
@vm.channel.session.wql("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionStatus=2")[:win32_network_adapter].each do |nic|
|
70
|
+
naked_mac = nic[:mac_address].gsub(':','')
|
71
|
+
if driver_mac_address[naked_mac]
|
72
|
+
vm_interface_map[driver_mac_address[naked_mac]] = { :name => nic[:net_connection_id], :mac_address => naked_mac, :index => nic[:interface_index] }
|
73
|
+
end
|
74
|
+
end
|
75
|
+
puts networks
|
76
|
+
puts vm_interface_map
|
77
|
+
networks.each do |network|
|
78
|
+
if network[:type].to_sym == :static
|
79
|
+
vm.channel.execute("netsh interface ip set address \"#{vm_interface_map[network[:interface]+1][:name]}\" static #{network[:ip]} #{network[:netmask]}")
|
80
|
+
elsif network[:type].to_sym == :dhcp
|
81
|
+
vm.channel.execute("netsh interface ip set address \"#{vm_interface_map[network[:interface]+1][:name]}\" dhcp")
|
82
|
+
end
|
83
|
+
end
|
100
84
|
|
101
|
-
#
|
102
|
-
|
103
|
-
# vm.channel.sudo("/sbin/ifup eth#{interface}")
|
104
|
-
#end
|
85
|
+
#netsh interface ip set address name="Local Area Connection" static 192.168.0.100 255.255.255.0 192.168.0.1 1
|
86
|
+
|
105
87
|
end
|
106
88
|
|
89
|
+
|
107
90
|
def windows_path(path)
|
108
91
|
p = ''
|
109
92
|
if path =~ /^\//
|
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'vagrant/driver/virtualbox_base'
|
2
|
+
require 'vagrant/driver/virtualbox'
|
3
|
+
|
4
|
+
|
5
|
+
module Vagrant
|
6
|
+
module Driver
|
7
|
+
|
8
|
+
class VirtualBox_4_1 < VirtualBoxBase
|
9
|
+
def read_mac_addresses
|
10
|
+
macs = {}
|
11
|
+
info = execute("showvminfo", @uuid, "--machinereadable", :retryable => true)
|
12
|
+
info.split("\n").each do |line|
|
13
|
+
if matcher = /^macaddress(\d+)="(.+?)"$/.match(line)
|
14
|
+
adapter = matcher[1].to_i
|
15
|
+
mac = matcher[2].to_s
|
16
|
+
macs[adapter] = mac
|
17
|
+
end
|
18
|
+
end
|
19
|
+
macs
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class VirtualBox_4_0 < VirtualBoxBase
|
24
|
+
def read_mac_addresses
|
25
|
+
macs = {}
|
26
|
+
info = execute("showvminfo", @uuid, "--machinereadable", :retryable => true)
|
27
|
+
info.split("\n").each do |line|
|
28
|
+
if matcher = /^macaddress(\d+)="(.+?)"$/.match(line)
|
29
|
+
adapter = matcher[1].to_i
|
30
|
+
mac = matcher[2].to_s
|
31
|
+
macs[adapter] = mac
|
32
|
+
end
|
33
|
+
end
|
34
|
+
macs
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
class VirtualBox < VirtualBoxBase
|
39
|
+
def_delegator :@driver, :read_mac_addresses
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/vagrant_init.rb
CHANGED
@@ -11,6 +11,9 @@ require 'vagrant-windows/communication/winrm'
|
|
11
11
|
#Monkey Patch the VM object to support multiple channels
|
12
12
|
require 'vagrant-windows/monkey_patches/vm'
|
13
13
|
|
14
|
+
#Monkey Patch the driver to support returning a mapping of mac addresses to nics
|
15
|
+
require 'vagrant-windows/monkey_patches/driver'
|
16
|
+
|
14
17
|
require 'vagrant-windows/winrm'
|
15
18
|
|
16
19
|
#Errors are good
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-windows
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-06-
|
12
|
+
date: 2012-06-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: winrm
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- lib/vagrant-windows/config/winrm.rb
|
77
77
|
- lib/vagrant-windows/errors.rb
|
78
78
|
- lib/vagrant-windows/guest/windows.rb
|
79
|
+
- lib/vagrant-windows/monkey_patches/driver.rb
|
79
80
|
- lib/vagrant-windows/monkey_patches/vm.rb
|
80
81
|
- lib/vagrant-windows/scripts/command_alias.ps1
|
81
82
|
- lib/vagrant-windows/scripts/mount_volume.ps1.erb
|