vagrant-parallels 1.4.1 → 1.4.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -2
- data/LICENSE.txt +1 -1
- data/README.md +29 -13
- data/Vagrantfile +4 -4
- data/debug.log +5433 -0
- data/lib/vagrant-parallels/action/import.rb +7 -0
- data/lib/vagrant-parallels/driver/meta.rb +32 -22
- data/lib/vagrant-parallels/errors.rb +8 -0
- data/lib/vagrant-parallels/version.rb +1 -1
- data/locales/en.yml +19 -4
- data/tasks/acceptance.rake +1 -0
- data/test/unit/support/shared/pd_driver_examples.rb +9 -1
- metadata +3 -5
- data/test/acceptance/provider/synced_folder_spec.rb +0 -26
- data/test/acceptance/skeletons/synced_folder/Vagrantfile +0 -3
- data/test/acceptance/skeletons/synced_folder/foo +0 -1
@@ -114,6 +114,13 @@ module VagrantPlugins
|
|
114
114
|
@logger.info("Regenerate SourceVmUuid")
|
115
115
|
@machine.provider.driver.regenerate_src_uuid
|
116
116
|
end
|
117
|
+
|
118
|
+
# Remove 'Icon\r' file from VM home (bug in PD 11.0.0)
|
119
|
+
if @machine.provider.pd_version_satisfies?('= 11.0.0')
|
120
|
+
vm_home = @machine.provider.driver.read_settings.fetch('Home')
|
121
|
+
broken_icns = Dir[File.join(vm_home, 'Icon*')]
|
122
|
+
FileUtils.rm(broken_icns, :force => true)
|
123
|
+
end
|
117
124
|
end
|
118
125
|
|
119
126
|
def snapshot_id(tpl_name)
|
@@ -33,26 +33,23 @@ module VagrantPlugins
|
|
33
33
|
|
34
34
|
# Instantiate the proper version driver for Parallels Desktop
|
35
35
|
@logger.debug("Finding driver for Parallels Desktop version: #{@version}")
|
36
|
-
driver_map = {
|
37
|
-
'8' => PD_8,
|
38
|
-
'9' => PD_9,
|
39
|
-
'10' => PD_10,
|
40
|
-
'11' => PD_11
|
41
|
-
}
|
42
|
-
|
43
|
-
driver_klass = nil
|
44
|
-
driver_map.each do |key, klass|
|
45
|
-
if @version.start_with?(key)
|
46
|
-
driver_klass = klass
|
47
|
-
break
|
48
|
-
end
|
49
|
-
end
|
50
36
|
|
51
|
-
|
52
|
-
|
37
|
+
driver_klass =
|
38
|
+
case @version.split('.').first
|
39
|
+
when '8' then PD_8
|
40
|
+
when '9' then PD_9
|
41
|
+
when '10' then PD_10
|
42
|
+
when '11' then PD_11
|
43
|
+
else raise Errors::ParallelsUnsupportedVersion
|
44
|
+
end
|
53
45
|
|
54
|
-
|
55
|
-
|
46
|
+
# Starting since PD 11 only Pro and Business editions have CLI
|
47
|
+
# functionality and can be used with Vagrant.
|
48
|
+
if @version.split('.').first.to_i >= 11
|
49
|
+
edition = read_edition
|
50
|
+
if !edition || !%w(any pro business).include?(edition)
|
51
|
+
raise Errors::ParallelsUnsupportedEdition
|
52
|
+
end
|
56
53
|
end
|
57
54
|
|
58
55
|
@logger.info("Using Parallels driver: #{driver_klass}")
|
@@ -114,6 +111,18 @@ module VagrantPlugins
|
|
114
111
|
|
115
112
|
protected
|
116
113
|
|
114
|
+
# Returns the edition of Parallels Desktop that is running. It makes
|
115
|
+
# sense only for Parallels Desktop 11 and later. For older versions
|
116
|
+
# it returns nil.
|
117
|
+
#
|
118
|
+
# @return [String]
|
119
|
+
def read_edition
|
120
|
+
lic_info = json({}) do
|
121
|
+
execute(@prlsrvctl_path, 'info', '--license', '--json')
|
122
|
+
end
|
123
|
+
lic_info['edition']
|
124
|
+
end
|
125
|
+
|
117
126
|
# This returns the version of Parallels Desktop that is running.
|
118
127
|
#
|
119
128
|
# @return [String]
|
@@ -125,12 +134,13 @@ module VagrantPlugins
|
|
125
134
|
# * prlctl version 10.0.0 (12345) rev 123456
|
126
135
|
#
|
127
136
|
# But we need exactly the first 3 numbers: "x.x.x"
|
137
|
+
output = execute(@prlctl_path, '--version')
|
128
138
|
|
129
|
-
if
|
130
|
-
|
139
|
+
if output =~ /prlctl version (\d+\.\d+.\d+)/
|
140
|
+
Regexp.last_match(1)
|
141
|
+
else
|
142
|
+
raise Errors::ParallelsInvalidVersion, output: output
|
131
143
|
end
|
132
|
-
|
133
|
-
nil
|
134
144
|
end
|
135
145
|
end
|
136
146
|
end
|
@@ -55,6 +55,14 @@ module VagrantPlugins
|
|
55
55
|
error_key(:parallels_vm_option_not_found)
|
56
56
|
end
|
57
57
|
|
58
|
+
class ParallelsUnsupportedEdition < VagrantParallelsError
|
59
|
+
error_key(:parallels_unsupported_edition)
|
60
|
+
end
|
61
|
+
|
62
|
+
class ParallelsUnsupportedVersion < VagrantParallelsError
|
63
|
+
error_key(:parallels_unsupported_version)
|
64
|
+
end
|
65
|
+
|
58
66
|
class SharedAdapterNotFound < VagrantParallelsError
|
59
67
|
error_key(:shared_adapter_not_found)
|
60
68
|
end
|
data/locales/en.yml
CHANGED
@@ -42,11 +42,10 @@ en:
|
|
42
42
|
Parallels Desktop is complaining that the installation is incomplete.
|
43
43
|
Try to reinstall Parallels Desktop or contact Parallels support.
|
44
44
|
parallels_invalid_version: |-
|
45
|
-
Vagrant
|
46
|
-
|
47
|
-
versions listed below to use Vagrant:
|
45
|
+
Vagrant could not fetch Parallels Desktop version from output:
|
46
|
+
%{output}
|
48
47
|
|
49
|
-
|
48
|
+
This is an internal error that should be reported as a bug.
|
50
49
|
parallels_no_room_for_high_level_network: |-
|
51
50
|
There is no available slots on the Parallels Desktop VM for the configured
|
52
51
|
high-level network interfaces. "private_network" and "public_network"
|
@@ -75,6 +74,22 @@ en:
|
|
75
74
|
Could not find a required option of Parallels Desktop virtual machine:
|
76
75
|
%{vm_option}
|
77
76
|
This is an internal error that should be reported as a bug.
|
77
|
+
parallels_unsupported_edition: |-
|
78
|
+
Vagrant has detected that you have an edition of Parallels Desktop for Mac
|
79
|
+
installed that is not supported. Vagrant Parallels provider is compatible
|
80
|
+
only with Pro and Business editions of Parallels Desktop. Other editions
|
81
|
+
do not have command line functionality and can not be used with Vagrant.
|
82
|
+
|
83
|
+
Please upgrade your installation: http://parallels.com/desktop
|
84
|
+
parallels_unsupported_version: |-
|
85
|
+
Vagrant has detected that you have a version of Parallels Desktop for Mac
|
86
|
+
installed that is not supported. Vagrant Parallels provider is compatible
|
87
|
+
only with Parallels Desktop 8 or later.
|
88
|
+
Please upgrade your installation: http://parallels.com/desktop
|
89
|
+
|
90
|
+
Note: Starting since Parallels Desktop 11 for Mac, Vagrant Parallels
|
91
|
+
provider can be only used with Pro or Business edition of Parallels
|
92
|
+
Desktop for Mac. Please, be aware while choosing the edition to upgrade to.
|
78
93
|
snapshot_id_not_detected: |-
|
79
94
|
ID of the newly created shapshod could not be detected. This is an
|
80
95
|
internal error that users should never see. Please report a bug.
|
data/tasks/acceptance.rake
CHANGED
@@ -323,10 +323,18 @@ shared_examples "parallels desktop driver" do |options|
|
|
323
323
|
subject.version.should match(/^#{parallels_version}.\d+\.\d+$/)
|
324
324
|
end
|
325
325
|
|
326
|
-
it "raises
|
326
|
+
it "raises an exception for unsupported version" do
|
327
327
|
subprocess.should_receive(:execute).
|
328
328
|
with("prlctl", "--version", an_instance_of(Hash)).
|
329
329
|
and_return(subprocess_result(stdout: "prlctl version 7.0.12345"))
|
330
|
+
expect { subject.version }.
|
331
|
+
to raise_error(VagrantPlugins::Parallels::Errors::ParallelsUnsupportedVersion)
|
332
|
+
end
|
333
|
+
|
334
|
+
it "raises an exception for invalid version output" do
|
335
|
+
subprocess.should_receive(:execute).
|
336
|
+
with("prlctl", "--version", an_instance_of(Hash)).
|
337
|
+
and_return(subprocess_result(stdout: "prlctl version 1.2.foo.bar"))
|
330
338
|
expect { subject.version }.
|
331
339
|
to raise_error(VagrantPlugins::Parallels::Errors::ParallelsInvalidVersion)
|
332
340
|
end
|
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.4.
|
4
|
+
version: 1.4.2
|
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: 2015-
|
12
|
+
date: 2015-08-19 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -112,6 +112,7 @@ files:
|
|
112
112
|
- Rakefile
|
113
113
|
- Vagrantfile
|
114
114
|
- config/i18n-tasks.yml.erb
|
115
|
+
- debug.log
|
115
116
|
- lib/vagrant-parallels.rb
|
116
117
|
- lib/vagrant-parallels/action.rb
|
117
118
|
- lib/vagrant-parallels/action/boot.rb
|
@@ -165,11 +166,8 @@ files:
|
|
165
166
|
- tasks/test.rake
|
166
167
|
- test/acceptance/base.rb
|
167
168
|
- test/acceptance/provider/linked_clone_spec.rb
|
168
|
-
- test/acceptance/provider/synced_folder_spec.rb
|
169
169
|
- test/acceptance/shared/context_parallels.rb
|
170
170
|
- test/acceptance/skeletons/linked_clone/Vagrantfile
|
171
|
-
- test/acceptance/skeletons/synced_folder/Vagrantfile
|
172
|
-
- test/acceptance/skeletons/synced_folder/foo
|
173
171
|
- test/unit/base.rb
|
174
172
|
- test/unit/config_test.rb
|
175
173
|
- test/unit/driver/pd_10_test.rb
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# This tests that synced folders work with a given provider.
|
2
|
-
shared_examples "provider/synced_folder" do |provider, options|
|
3
|
-
if !options[:box]
|
4
|
-
raise ArgumentError,
|
5
|
-
"box option must be specified for provider: #{provider}"
|
6
|
-
end
|
7
|
-
|
8
|
-
include_context "acceptance"
|
9
|
-
|
10
|
-
before do
|
11
|
-
environment.skeleton("synced_folder")
|
12
|
-
assert_execute("vagrant", "box", "add", "basic", options[:box])
|
13
|
-
assert_execute("vagrant", "up", "--provider=#{provider}")
|
14
|
-
end
|
15
|
-
|
16
|
-
after do
|
17
|
-
assert_execute("vagrant", "destroy", "--force")
|
18
|
-
end
|
19
|
-
|
20
|
-
it "properly configures synced folder types" do
|
21
|
-
status("Test: mounts the default /vagrant synced folder")
|
22
|
-
result = execute("vagrant", "ssh", "-c", "cat /vagrant/foo")
|
23
|
-
expect(result.exit_code).to eql(0)
|
24
|
-
expect(result.stdout).to match(/hello$/)
|
25
|
-
end
|
26
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
hello
|