vagrant-parallels 1.4.1 → 1.4.2
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 +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
|