vagrant-parallels 1.1.0 → 1.2.0.rc1

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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +61 -0
  3. data/README.md +2 -57
  4. data/lib/vagrant-parallels/action/clear_forwarded_ports.rb +25 -0
  5. data/lib/vagrant-parallels/action/customize.rb +2 -2
  6. data/lib/vagrant-parallels/action/export.rb +1 -1
  7. data/lib/vagrant-parallels/action/forward_ports.rb +78 -0
  8. data/lib/vagrant-parallels/action/handle_guest_tools.rb +1 -1
  9. data/lib/vagrant-parallels/action/import.rb +1 -1
  10. data/lib/vagrant-parallels/action/network.rb +47 -47
  11. data/lib/vagrant-parallels/action/prepare_forwarded_port_collision_params.rb +41 -0
  12. data/lib/vagrant-parallels/action/prepare_nfs_settings.rb +1 -1
  13. data/lib/vagrant-parallels/action/prepare_nfs_valid_ids.rb +1 -1
  14. data/lib/vagrant-parallels/action/sane_defaults.rb +55 -0
  15. data/lib/vagrant-parallels/action/set_name.rb +1 -1
  16. data/lib/vagrant-parallels/action/setup_package_files.rb +0 -1
  17. data/lib/vagrant-parallels/action.rb +16 -7
  18. data/lib/vagrant-parallels/cap/forwarded_ports.rb +22 -0
  19. data/lib/vagrant-parallels/driver/base.rb +8 -16
  20. data/lib/vagrant-parallels/driver/meta.rb +7 -7
  21. data/lib/vagrant-parallels/driver/pd_10.rb +279 -0
  22. data/lib/vagrant-parallels/driver/pd_8.rb +23 -15
  23. data/lib/vagrant-parallels/driver/pd_9.rb +1 -1
  24. data/lib/vagrant-parallels/guest_cap/linux/mount_parallels_shared_folder.rb +78 -22
  25. data/lib/vagrant-parallels/model/forwarded_port.rb +52 -0
  26. data/lib/vagrant-parallels/plugin.rb +14 -0
  27. data/lib/vagrant-parallels/provider.rb +12 -3
  28. data/lib/vagrant-parallels/synced_folder.rb +6 -1
  29. data/lib/vagrant-parallels/util/compile_forwarded_ports.rb +35 -0
  30. data/lib/vagrant-parallels/version.rb +1 -1
  31. data/locales/en.yml +3 -0
  32. data/test/unit/driver/pd_10_test.rb +228 -0
  33. data/test/unit/driver/pd_8_test.rb +27 -7
  34. data/test/unit/driver/pd_9_test.rb +28 -7
  35. data/test/unit/support/shared/parallels_context.rb +5 -4
  36. data/test/unit/support/shared/pd_driver_examples.rb +16 -37
  37. metadata +35 -27
  38. data/lib/vagrant-parallels/action/is_driver_version.rb +0 -28
  39. data/lib/vagrant-parallels/action/set_power_consumption.rb +0 -34
@@ -3,9 +3,6 @@ shared_examples "parallels desktop driver" do |options|
3
3
  raise ArgumentError, "Need parallels context to use these shared examples." unless defined? parallels_context
4
4
  end
5
5
 
6
- # Accessor to the delegate object
7
- let(:driver) { subject.instance_variable_get("@driver") }
8
-
9
6
  describe "compact" do
10
7
  settings = {"Hardware" => {"hdd0" => {"image" => "/path/to/disk0.hdd"},
11
8
  "hdd1" => {"image" => "/path/to/disk1.hdd"}}}
@@ -34,13 +31,13 @@ shared_examples "parallels desktop driver" do |options|
34
31
  let(:hostonly_iface) {'vnic12'}
35
32
  it "creates host-only NIC with dhcp server configured" do
36
33
  vnic_opts = {
37
- :network_id => 'vagrant_vnic8',
38
- :adapter_ip => '11.11.11.11',
39
- :netmask => '255.255.252.0',
40
- :dhcp => {
41
- :ip => '11.11.11.11',
42
- :lower => '11.11.8.1',
43
- :upper => '11.11.11.254'
34
+ network_id: 'vagrant_vnic8',
35
+ adapter_ip: '11.11.11.11',
36
+ netmask: '255.255.252.0',
37
+ dhcp: {
38
+ ip: '11.11.11.11',
39
+ lower: '11.11.8.1',
40
+ upper: '11.11.11.254'
44
41
  }
45
42
  }
46
43
 
@@ -62,15 +59,16 @@ shared_examples "parallels desktop driver" do |options|
62
59
  interface.should include(:ip => vnic_opts[:adapter_ip])
63
60
  interface.should include(:netmask => vnic_opts[:netmask])
64
61
  interface.should include(:dhcp => vnic_opts[:dhcp])
65
- interface.should include(:name => hostonly_iface)
66
- interface[:name].should =~ /^(vnic(\d+))$/
62
+ # TODO: implement nicer tests for all supported PD versions
63
+ # interface.should include(:name => hostonly_iface)
64
+ # interface[:name].should =~ /^(vnic(\d+))$/
67
65
  end
68
66
 
69
67
  it "creates host-only NIC without dhcp" do
70
68
  vnic_options = {
71
- :network_id => 'vagrant_vnic3',
72
- :adapter_ip => '22.22.22.22',
73
- :netmask => '255.255.254.0',
69
+ network_id: 'vagrant_vnic3',
70
+ adapter_ip: '22.22.22.22',
71
+ netmask: '255.255.254.0',
74
72
  }
75
73
 
76
74
  subprocess.should_receive(:execute).
@@ -89,8 +87,9 @@ shared_examples "parallels desktop driver" do |options|
89
87
  interface.should include(:ip => vnic_options[:adapter_ip])
90
88
  interface.should include(:netmask => vnic_options[:netmask])
91
89
  interface.should include(:dhcp => nil)
92
- interface.should include(:name => hostonly_iface)
93
- interface[:name].should =~ /^(vnic(\d+))$/
90
+ # TODO: implement nicer tests for all supported PD versions
91
+ # interface.should include(:name => hostonly_iface)
92
+ # interface[:name].should =~ /^(vnic(\d+))$/
94
93
  end
95
94
  end
96
95
 
@@ -159,26 +158,6 @@ shared_examples "parallels desktop driver" do |options|
159
158
  end
160
159
  end
161
160
 
162
- describe "read_guest_ip" do
163
- let(:content) {'10.200.0.99="1394547632,1800,001c420000ff,01001c420000ff"'}
164
-
165
- it "returns an IP address assigned to the specified MAC" do
166
- driver.should_receive(:read_mac_address).and_return("001C420000FF")
167
- File.should_receive(:open).with(an_instance_of(String)).
168
- and_return(StringIO.new(content))
169
-
170
- subject.read_guest_ip.should == "10.200.0.99"
171
- end
172
-
173
- it "rises DhcpLeasesNotAccessible exception when file is not accessible" do
174
- File.stub(:open).and_call_original
175
- File.should_receive(:open).with(an_instance_of(String)).
176
- and_raise(Errno::EACCES)
177
- expect { subject.read_guest_ip }.
178
- to raise_error(VagrantPlugins::Parallels::Errors::DhcpLeasesNotAccessible)
179
- end
180
- end
181
-
182
161
  describe "read_guest_tools_iso_path" do
183
162
  before do
184
163
  subprocess.stub(:execute).
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.1.0
4
+ version: 1.2.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mikhail Zholobov
@@ -9,82 +9,82 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-15 00:00:00.000000000 Z
12
+ date: 2014-07-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: 1.5.2
21
- - - <
21
+ - - "<"
22
22
  - !ruby/object:Gem::Version
23
23
  version: 1.7.0
24
24
  type: :development
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - '>='
28
+ - - ">="
29
29
  - !ruby/object:Gem::Version
30
30
  version: 1.5.2
31
- - - <
31
+ - - "<"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.7.0
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: rake
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  type: :development
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: minitest
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  type: :development
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: rspec
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: 2.14.0
69
69
  type: :development
70
70
  prerelease: false
71
71
  version_requirements: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: 2.14.0
76
76
  - !ruby/object:Gem::Dependency
77
77
  name: i18n-tasks
78
78
  requirement: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.3.9
83
83
  type: :development
84
84
  prerelease: false
85
85
  version_requirements: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.3.9
90
90
  description: Enables Vagrant to manage Parallels virtual machines.
@@ -95,9 +95,18 @@ executables: []
95
95
  extensions: []
96
96
  extra_rdoc_files: []
97
97
  files:
98
- - config/i18n-tasks.yml.erb
98
+ - ".gitignore"
99
+ - ".travis.yml"
100
+ - CONTRIBUTING.md
99
101
  - Gemfile
102
+ - LICENSE.txt
103
+ - README.md
104
+ - Rakefile
105
+ - config/i18n-tasks.yml.erb
106
+ - lib/vagrant-parallels.rb
107
+ - lib/vagrant-parallels/action.rb
100
108
  - lib/vagrant-parallels/action/boot.rb
109
+ - lib/vagrant-parallels/action/clear_forwarded_ports.rb
101
110
  - lib/vagrant-parallels/action/clear_network_interfaces.rb
102
111
  - lib/vagrant-parallels/action/clear_shared_folders.rb
103
112
  - lib/vagrant-parallels/action/customize.rb
@@ -105,45 +114,46 @@ files:
105
114
  - lib/vagrant-parallels/action/destroy_unused_network_interfaces.rb
106
115
  - lib/vagrant-parallels/action/export.rb
107
116
  - lib/vagrant-parallels/action/forced_halt.rb
117
+ - lib/vagrant-parallels/action/forward_ports.rb
108
118
  - lib/vagrant-parallels/action/handle_guest_tools.rb
109
119
  - lib/vagrant-parallels/action/import.rb
110
- - lib/vagrant-parallels/action/is_driver_version.rb
111
120
  - lib/vagrant-parallels/action/network.rb
112
121
  - lib/vagrant-parallels/action/package.rb
113
122
  - lib/vagrant-parallels/action/package_config_files.rb
123
+ - lib/vagrant-parallels/action/prepare_forwarded_port_collision_params.rb
114
124
  - lib/vagrant-parallels/action/prepare_nfs_settings.rb
115
125
  - lib/vagrant-parallels/action/prepare_nfs_valid_ids.rb
116
126
  - lib/vagrant-parallels/action/resume.rb
127
+ - lib/vagrant-parallels/action/sane_defaults.rb
117
128
  - lib/vagrant-parallels/action/set_name.rb
118
- - lib/vagrant-parallels/action/set_power_consumption.rb
119
129
  - lib/vagrant-parallels/action/setup_package_files.rb
120
130
  - lib/vagrant-parallels/action/suspend.rb
121
- - lib/vagrant-parallels/action.rb
131
+ - lib/vagrant-parallels/cap/forwarded_ports.rb
122
132
  - lib/vagrant-parallels/cap/host_address.rb
123
133
  - lib/vagrant-parallels/cap/nic_mac_addresses.rb
124
134
  - lib/vagrant-parallels/cap/public_address.rb
125
135
  - lib/vagrant-parallels/config.rb
126
136
  - lib/vagrant-parallels/driver/base.rb
127
137
  - lib/vagrant-parallels/driver/meta.rb
138
+ - lib/vagrant-parallels/driver/pd_10.rb
128
139
  - lib/vagrant-parallels/driver/pd_8.rb
129
140
  - lib/vagrant-parallels/driver/pd_9.rb
130
141
  - lib/vagrant-parallels/errors.rb
131
142
  - lib/vagrant-parallels/guest_cap/darwin/mount_parallels_shared_folder.rb
132
143
  - lib/vagrant-parallels/guest_cap/linux/install_parallels_tools.rb
133
144
  - lib/vagrant-parallels/guest_cap/linux/mount_parallels_shared_folder.rb
145
+ - lib/vagrant-parallels/model/forwarded_port.rb
134
146
  - lib/vagrant-parallels/plugin.rb
135
147
  - lib/vagrant-parallels/provider.rb
136
148
  - lib/vagrant-parallels/synced_folder.rb
149
+ - lib/vagrant-parallels/util/compile_forwarded_ports.rb
137
150
  - lib/vagrant-parallels/version.rb
138
- - lib/vagrant-parallels.rb
139
- - LICENSE.txt
140
151
  - locales/en.yml
141
- - Rakefile
142
- - README.md
143
152
  - tasks/bundler.rake
144
153
  - tasks/test.rake
145
154
  - test/unit/base.rb
146
155
  - test/unit/config_test.rb
156
+ - test/unit/driver/pd_10_test.rb
147
157
  - test/unit/driver/pd_8_test.rb
148
158
  - test/unit/driver/pd_9_test.rb
149
159
  - test/unit/locales/locales_test.rb
@@ -151,8 +161,6 @@ files:
151
161
  - test/unit/support/shared/pd_driver_examples.rb
152
162
  - test/unit/synced_folder_test.rb
153
163
  - vagrant-parallels.gemspec
154
- - .gitignore
155
- - .travis.yml
156
164
  homepage: http://github.com/Parallels/vagrant-parallels
157
165
  licenses:
158
166
  - MIT
@@ -163,17 +171,17 @@ require_paths:
163
171
  - lib
164
172
  required_ruby_version: !ruby/object:Gem::Requirement
165
173
  requirements:
166
- - - '>='
174
+ - - ">="
167
175
  - !ruby/object:Gem::Version
168
176
  version: '0'
169
177
  required_rubygems_version: !ruby/object:Gem::Requirement
170
178
  requirements:
171
- - - '>='
179
+ - - ">="
172
180
  - !ruby/object:Gem::Version
173
181
  version: 1.3.6
174
182
  requirements: []
175
183
  rubyforge_project: vagrant-parallels
176
- rubygems_version: 2.0.14
184
+ rubygems_version: 2.2.1
177
185
  signing_key:
178
186
  specification_version: 4
179
187
  summary: Parallels provider for Vagrant.
@@ -1,28 +0,0 @@
1
- module VagrantPlugins
2
- module Parallels
3
- module Action
4
- # This middleware is meant to be used with Call and can check if
5
- # a version of Parallels Desktop satisfies the given constraint.
6
- class IsDriverVersion
7
- # @param [String] requirement Can be a full requirement specification,
8
- # like ">= 9.0.24229", or a list of them, like [">= 9","< 10.0.2"].
9
- def initialize(app, env, requirement, **opts)
10
- @app = app
11
- @logger = Log4r::Logger.new("vagrant::plugins::parallels::is_driver_version")
12
- @requirement = Gem::Requirement.new(requirement)
13
- @invert = !!opts[:invert]
14
- end
15
-
16
- def call(env)
17
- @logger.debug("Checking if 'prlctl' driver version satisfies '#{@requirement}'")
18
- driver_version = Gem::Version.new(env[:machine].provider.driver.version)
19
- @logger.debug("-- 'prlctl' driver version: #{driver_version}")
20
-
21
- env[:result] = @requirement.satisfied_by?(driver_version)
22
- env[:result] = !env[:result] if @invert
23
- @app.call(env)
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,34 +0,0 @@
1
- module VagrantPlugins
2
- module Parallels
3
- module Action
4
- # Important: It works only with Parallels Desktop >= 9 !
5
- # Use "IsDriverVersion" middleware to wrap it.
6
- class SetPowerConsumption
7
- def initialize(app, env)
8
- @logger = Log4r::Logger.new("vagrant::plugins::parallels::power_consumption")
9
- @app = app
10
- end
11
-
12
- def call(env)
13
- # Optimization of power consumption is defined by "Longer Battery Life" state.
14
- vm_settings = env[:machine].provider.driver.read_settings
15
-
16
- old_val = vm_settings.fetch("Longer battery life") == "on" ? true : false
17
- new_val = env[:machine].provider_config.optimize_power_consumption
18
-
19
- if old_val == new_val
20
- @logger.info("Skipping power consumption method because it is already set")
21
- return @app.call(env)
22
- end
23
-
24
- mode = new_val ? "Longer battery life" : "Better Performance"
25
- env[:ui].info I18n.t("vagrant_parallels.parallels.power_consumption.set_mode",
26
- mode: mode)
27
- env[:machine].provider.driver.set_power_consumption_mode(new_val)
28
-
29
- @app.call(env)
30
- end
31
- end
32
- end
33
- end
34
- end