vagrant-parallels 1.1.0 → 1.2.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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