vagrant-parallels 1.0.0 → 1.0.1
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.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -4
- data/Vagrantfile +3 -5
- data/lib/vagrant-parallels/cap/public_address.rb +15 -0
- data/lib/vagrant-parallels/driver/meta.rb +0 -4
- data/lib/vagrant-parallels/driver/pd_8.rb +23 -21
- data/lib/vagrant-parallels/driver/pd_9.rb +26 -21
- data/lib/vagrant-parallels/errors.rb +4 -0
- data/lib/vagrant-parallels/plugin.rb +5 -0
- data/lib/vagrant-parallels/provider.rb +2 -2
- data/lib/vagrant-parallels/version.rb +1 -1
- data/locales/en.yml +6 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 357deec9b5427708e14fc8d7bafc0df42ef06b4d
|
4
|
+
data.tar.gz: d997bba5f56330d1bc7a69c0602aa613e0be08cb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b5c9089a4c56fa43631d1ca66284e112898e374709ddcea08c3931c641cefdabe5a542279ab853880435052fe423d7cc03780f9341b170c9405f8602ce361835
|
7
|
+
data.tar.gz: eb0c5ed9cfad34c70225c60cac47131c3458549a64ae958eafb49b55379e499199f12d852057158002368378671e77ec0dd6de4845644bc69d516c4d1691a6a4
|
data/Gemfile.lock
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
GIT
|
2
2
|
remote: git://github.com/mitchellh/vagrant.git
|
3
|
-
revision:
|
3
|
+
revision: d0cf22dd5fc5fcb8ee49577c0a93e7c6eeda56b1
|
4
4
|
specs:
|
5
|
-
vagrant (1.5.
|
5
|
+
vagrant (1.5.1.dev)
|
6
6
|
bundler (~> 1.5.2)
|
7
7
|
childprocess (~> 0.5.0)
|
8
8
|
erubis (~> 2.7.0)
|
@@ -17,7 +17,7 @@ GIT
|
|
17
17
|
PATH
|
18
18
|
remote: .
|
19
19
|
specs:
|
20
|
-
vagrant-parallels (1.0.
|
20
|
+
vagrant-parallels (1.0.1)
|
21
21
|
|
22
22
|
GEM
|
23
23
|
remote: http://rubygems.org/
|
@@ -84,7 +84,7 @@ GEM
|
|
84
84
|
atomic (>= 1.1.7, < 2)
|
85
85
|
timers (1.1.0)
|
86
86
|
tins (1.0.0)
|
87
|
-
tzinfo (0.3.
|
87
|
+
tzinfo (0.3.39)
|
88
88
|
wdm (0.1.0)
|
89
89
|
|
90
90
|
PLATFORMS
|
data/Vagrantfile
CHANGED
@@ -3,8 +3,7 @@ Vagrant.configure("2") do |config|
|
|
3
3
|
# Configure base box parameters
|
4
4
|
config.vm.define 'ubuntu' do |u|
|
5
5
|
u.vm.hostname = "my-super-vm.do.sw.ru"
|
6
|
-
u.vm.box = "ubuntu-13.
|
7
|
-
u.vm.box_url = "http://download.parallels.com/desktop/vagrant/saucy64.box"
|
6
|
+
u.vm.box = "parallels/ubuntu-13.10"
|
8
7
|
end
|
9
8
|
|
10
9
|
config.vm.define 'centos' do |c|
|
@@ -16,7 +15,7 @@ Vagrant.configure("2") do |config|
|
|
16
15
|
end
|
17
16
|
|
18
17
|
c.vm.network "private_network", ip: "33.33.30.25", netmask: "255.255.252.0"
|
19
|
-
|
18
|
+
c.vm.network "public_network", bridge: "en0"
|
20
19
|
|
21
20
|
#c.vm.network "private_network", type: :dhcp
|
22
21
|
#c.vm.network "public_network", dhcp: "yes", bridge: "en0"
|
@@ -24,8 +23,7 @@ Vagrant.configure("2") do |config|
|
|
24
23
|
|
25
24
|
|
26
25
|
c.vm.hostname = "my-funny-centos.do.sw.ru"
|
27
|
-
c.vm.box = "centos-6.
|
28
|
-
c.vm.box_url = "http://download.parallels.com/desktop/vagrant/centos64.box"
|
26
|
+
c.vm.box = "parallels/centos-6.5"
|
29
27
|
|
30
28
|
#c.vm.box = "graylog2"
|
31
29
|
#c.vm.box = "TEST_1.4"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Parallels
|
3
|
+
module Cap
|
4
|
+
module PublicAddress
|
5
|
+
def self.public_address(machine)
|
6
|
+
return nil if machine.state.id != :running
|
7
|
+
|
8
|
+
ssh_info = machine.ssh_info
|
9
|
+
return nil if !ssh_info
|
10
|
+
ssh_info[:host]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -73,7 +73,6 @@ module VagrantPlugins
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def_delegators :@driver,
|
76
|
-
#:clear_forwarded_ports,
|
77
76
|
:clear_shared_folders,
|
78
77
|
:compact,
|
79
78
|
:create_host_only_network,
|
@@ -83,11 +82,8 @@ module VagrantPlugins
|
|
83
82
|
:enable_adapters,
|
84
83
|
:execute_command,
|
85
84
|
:export,
|
86
|
-
#:forward_ports,
|
87
85
|
:halt,
|
88
86
|
:import,
|
89
|
-
:read_ip_dhcp,
|
90
|
-
#:read_forwarded_ports,
|
91
87
|
:read_bridged_interfaces,
|
92
88
|
:read_guest_tools_version,
|
93
89
|
:read_guest_ip,
|
@@ -184,21 +184,18 @@ module VagrantPlugins
|
|
184
184
|
end
|
185
185
|
|
186
186
|
def read_bridged_interfaces
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
net['Type'] != "bridged" or
|
192
|
-
net['Bound To'] =~ /^(vnic(.+?))$/ or
|
193
|
-
net['Network ID'] == "Default"
|
187
|
+
host_hw_info = read_host_info.fetch("Hardware info")
|
188
|
+
net_list = host_hw_info.select do |name, attrs|
|
189
|
+
# Get all network interfaces except 'vnicXXX'
|
190
|
+
attrs.fetch("type") == "net" and name !~ /^(vnic(.+?))$/
|
194
191
|
end
|
195
192
|
|
196
193
|
bridged_ifaces = []
|
197
|
-
net_list.
|
194
|
+
net_list.keys.each do |iface|
|
198
195
|
info = {}
|
199
|
-
ifconfig = execute(:ifconfig, iface
|
196
|
+
ifconfig = execute(:ifconfig, iface)
|
200
197
|
# Assign default values
|
201
|
-
info[:name] = iface
|
198
|
+
info[:name] = iface
|
202
199
|
info[:ip] = "0.0.0.0"
|
203
200
|
info[:netmask] = "0.0.0.0"
|
204
201
|
info[:status] = "Down"
|
@@ -220,16 +217,31 @@ module VagrantPlugins
|
|
220
217
|
bridged_ifaces
|
221
218
|
end
|
222
219
|
|
220
|
+
def read_guest_ip
|
221
|
+
mac_addr = read_mac_address.downcase
|
222
|
+
File.foreach("/Library/Preferences/Parallels/parallels_dhcp_leases") do |line|
|
223
|
+
if line.include? mac_addr
|
224
|
+
return line[/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/]
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
nil
|
229
|
+
end
|
230
|
+
|
223
231
|
def read_guest_tools_version
|
224
232
|
read_settings.fetch('GuestTools', {}).fetch('version', nil)
|
225
233
|
end
|
226
234
|
|
235
|
+
def read_host_info
|
236
|
+
json { execute('server', 'info', '--json', retryable: true) }
|
237
|
+
end
|
238
|
+
|
227
239
|
def read_host_only_interfaces
|
228
240
|
net_list = read_virtual_networks
|
229
241
|
net_list.keep_if { |net| net['Type'] == "host-only" }
|
230
242
|
|
231
243
|
hostonly_ifaces = []
|
232
|
-
net_list.
|
244
|
+
net_list.each do |iface|
|
233
245
|
info = {}
|
234
246
|
net_info = json { execute(:prlsrvctl, 'net', 'info', iface['Network ID'], '--json') }
|
235
247
|
# Really we need to work with bounded virtual interface
|
@@ -254,16 +266,6 @@ module VagrantPlugins
|
|
254
266
|
hostonly_ifaces
|
255
267
|
end
|
256
268
|
|
257
|
-
def read_ip_dhcp
|
258
|
-
mac_addr = read_mac_address.downcase
|
259
|
-
File.foreach("/Library/Preferences/Parallels/parallels_dhcp_leases") do |line|
|
260
|
-
if line.include? mac_addr
|
261
|
-
ip = line[/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/]
|
262
|
-
return ip
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
266
|
-
|
267
269
|
def read_mac_address
|
268
270
|
read_settings.fetch('Hardware', {}).fetch('net0', {}).fetch('mac', nil)
|
269
271
|
end
|
@@ -184,21 +184,18 @@ module VagrantPlugins
|
|
184
184
|
end
|
185
185
|
|
186
186
|
def read_bridged_interfaces
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
net['Type'] != "bridged" or
|
192
|
-
net['Bound To'] =~ /^(vnic(.+?))$/ or
|
193
|
-
net['Network ID'] == "Default"
|
187
|
+
host_hw_info = read_host_info.fetch("Hardware info")
|
188
|
+
net_list = host_hw_info.select do |name, attrs|
|
189
|
+
# Get all network interfaces except 'vnicXXX'
|
190
|
+
attrs.fetch("type") == "net" and name !~ /^(vnic(.+?))$/
|
194
191
|
end
|
195
192
|
|
196
193
|
bridged_ifaces = []
|
197
|
-
net_list.
|
194
|
+
net_list.keys.each do |iface|
|
198
195
|
info = {}
|
199
|
-
ifconfig = execute(:ifconfig, iface
|
196
|
+
ifconfig = execute(:ifconfig, iface)
|
200
197
|
# Assign default values
|
201
|
-
info[:name] = iface
|
198
|
+
info[:name] = iface
|
202
199
|
info[:ip] = "0.0.0.0"
|
203
200
|
info[:netmask] = "0.0.0.0"
|
204
201
|
info[:status] = "Down"
|
@@ -220,16 +217,34 @@ module VagrantPlugins
|
|
220
217
|
bridged_ifaces
|
221
218
|
end
|
222
219
|
|
220
|
+
def read_guest_ip
|
221
|
+
mac_addr = read_mac_address.downcase
|
222
|
+
leases_file = "/Library/Preferences/Parallels/parallels_dhcp_leases"
|
223
|
+
begin
|
224
|
+
File.open(leases_file).grep(/#{mac_addr}/) do |line|
|
225
|
+
return line[/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/]
|
226
|
+
end
|
227
|
+
rescue Errno::EACCES
|
228
|
+
raise Errors::DhcpLeasesNotAccessible, :leases_file => leases_file.to_s
|
229
|
+
end
|
230
|
+
|
231
|
+
nil
|
232
|
+
end
|
233
|
+
|
223
234
|
def read_guest_tools_version
|
224
235
|
read_settings.fetch('GuestTools', {}).fetch('version', nil)
|
225
236
|
end
|
226
237
|
|
238
|
+
def read_host_info
|
239
|
+
json { execute('server', 'info', '--json', retryable: true) }
|
240
|
+
end
|
241
|
+
|
227
242
|
def read_host_only_interfaces
|
228
243
|
net_list = read_virtual_networks
|
229
244
|
net_list.keep_if { |net| net['Type'] == "host-only" }
|
230
245
|
|
231
246
|
hostonly_ifaces = []
|
232
|
-
net_list.
|
247
|
+
net_list.each do |iface|
|
233
248
|
info = {}
|
234
249
|
net_info = json { execute(:prlsrvctl, 'net', 'info', iface['Network ID'], '--json') }
|
235
250
|
# Really we need to work with bounded virtual interface
|
@@ -254,16 +269,6 @@ module VagrantPlugins
|
|
254
269
|
hostonly_ifaces
|
255
270
|
end
|
256
271
|
|
257
|
-
def read_ip_dhcp
|
258
|
-
mac_addr = read_mac_address.downcase
|
259
|
-
File.foreach("/Library/Preferences/Parallels/parallels_dhcp_leases") do |line|
|
260
|
-
if line.include? mac_addr
|
261
|
-
ip = line[/^(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})/]
|
262
|
-
return ip
|
263
|
-
end
|
264
|
-
end
|
265
|
-
end
|
266
|
-
|
267
272
|
def read_mac_address
|
268
273
|
read_settings.fetch('Hardware', {}).fetch('net0', {}).fetch('mac', nil)
|
269
274
|
end
|
@@ -7,6 +7,10 @@ module VagrantPlugins
|
|
7
7
|
error_namespace("vagrant_parallels.errors")
|
8
8
|
end
|
9
9
|
|
10
|
+
class DhcpLeasesNotAccessible < VagrantParallelsError
|
11
|
+
error_key(:dhcp_leases_file_not_accessible)
|
12
|
+
end
|
13
|
+
|
10
14
|
class PrlCtlError < VagrantParallelsError
|
11
15
|
error_key(:prlctl_error)
|
12
16
|
end
|
@@ -40,6 +40,11 @@ module VagrantPlugins
|
|
40
40
|
GuestLinuxCap::MountParallelsSharedFolder
|
41
41
|
end
|
42
42
|
|
43
|
+
provider_capability("parallels", "public_address") do
|
44
|
+
require_relative "cap/public_address"
|
45
|
+
Cap::PublicAddress
|
46
|
+
end
|
47
|
+
|
43
48
|
synced_folder(:parallels) do
|
44
49
|
require File.expand_path("../synced_folder", __FILE__)
|
45
50
|
SyncedFolder
|
@@ -52,11 +52,11 @@ module VagrantPlugins
|
|
52
52
|
# we return nil.
|
53
53
|
return nil if state.id == :not_created
|
54
54
|
|
55
|
-
detected_ip = @
|
55
|
+
detected_ip = @driver.read_guest_ip
|
56
56
|
|
57
57
|
# If ip couldn't be detected then we cannot possibly SSH into it,
|
58
58
|
# and should return nil too.
|
59
|
-
return nil if detected_ip
|
59
|
+
return nil if !detected_ip
|
60
60
|
|
61
61
|
# Return ip from running machine, use ip from config if available
|
62
62
|
return {
|
data/locales/en.yml
CHANGED
@@ -9,6 +9,12 @@ en:
|
|
9
9
|
# Translations for exception classes
|
10
10
|
#-------------------------------------------------------------------------------
|
11
11
|
errors:
|
12
|
+
dhcp_leases_file_not_accessible: |-
|
13
|
+
Parallels DHCP leases file is not accessible. The Parallels provider
|
14
|
+
uses it to detect an IP address of virtual machine. This file must be
|
15
|
+
readable for the user that is running Vagrant.
|
16
|
+
|
17
|
+
Parallels DHCP leases file: %{leases_file}
|
12
18
|
mac_os_x_required: |-
|
13
19
|
Parallels provider only works on OS X (or Mac OS X).
|
14
20
|
prlctl_error: |-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-parallels
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikhail Zholobov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -109,6 +109,7 @@ files:
|
|
109
109
|
- lib/vagrant-parallels/action/setup_package_files.rb
|
110
110
|
- lib/vagrant-parallels/action/suspend.rb
|
111
111
|
- lib/vagrant-parallels/action.rb
|
112
|
+
- lib/vagrant-parallels/cap/public_address.rb
|
112
113
|
- lib/vagrant-parallels/config.rb
|
113
114
|
- lib/vagrant-parallels/driver/base.rb
|
114
115
|
- lib/vagrant-parallels/driver/meta.rb
|