vagrant-parallels 1.4.3 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -24,7 +24,6 @@ module VagrantPlugins
24
24
  b.use ClearNetworkInterfaces
25
25
  b.use ForwardPorts
26
26
  b.use SetHostname
27
- b.use SaneDefaults
28
27
  b.use Customize, 'pre-boot'
29
28
  b.use Boot
30
29
  b.use Customize, 'post-boot'
@@ -278,6 +277,7 @@ module VagrantPlugins
278
277
  if env1[:result]
279
278
  b1.use Customize, 'pre-import'
280
279
  b1.use Import
280
+ b1.use SaneDefaults
281
281
  b1.use Customize, 'post-import'
282
282
  end
283
283
  end
@@ -4,9 +4,17 @@ module VagrantPlugins
4
4
  class Destroy
5
5
  def initialize(app, env)
6
6
  @app = app
7
+ @logger = Log4r::Logger.new('vagrant_parallels::action::destroy')
7
8
  end
8
9
 
9
10
  def call(env)
11
+ # Disable requiring password for delete action [GH-67].
12
+ # It is available only since PD 10.
13
+ if env[:machine].provider.pd_version_satisfies?('>= 10')
14
+ @logger.info('Disabling password restrictions: remove-vm')
15
+ env[:machine].provider.driver.disable_password_restrictions(['remove-vm'])
16
+ end
17
+
10
18
  env[:ui].info I18n.t('vagrant.actions.vm.destroy.destroying')
11
19
  env[:machine].provider.driver.delete
12
20
  env[:machine].id = nil
@@ -12,6 +12,14 @@ module VagrantPlugins
12
12
  def call(env)
13
13
  @machine = env[:machine]
14
14
 
15
+ # Disable requiring password for register and clone actions [GH-67].
16
+ # It is available only since PD 10.
17
+ if env[:machine].provider.pd_version_satisfies?('>= 10')
18
+ acts = ['clone-vm']
19
+ @logger.info("Disabling password restrictions: #{acts.join(', ')}")
20
+ env[:machine].provider.driver.disable_password_restrictions(acts)
21
+ end
22
+
15
23
  # Register template to be able to clone it further
16
24
  register_template(template_path.to_s)
17
25
 
@@ -14,17 +14,14 @@ module VagrantPlugins
14
14
  # helpers.
15
15
  @env = env
16
16
 
17
- # Disable requiring password on such operations as creating, adding,
18
- # removing or coning the virtual machine. [GH-67]
19
- # It is available only since PD 10.
20
- if env[:machine].provider.pd_version_satisfies?('>= 10')
21
- @logger.info('Disabling any password restrictions...')
22
- env[:machine].provider.driver.disable_password_restrictions
23
- end
17
+ settings = default_settings
18
+
19
+ @app.call(env) if settings.empty?
20
+ @env[:ui].info I18n.t('vagrant_parallels.actions.vm.sane_defaults.setting')
24
21
 
25
- if env[:machine].provider.pd_version_satisfies?('>= 9')
26
- @logger.info('Setting the power consumption mode...')
27
- set_power_consumption
22
+ default_settings.each do |setting, value|
23
+ @env[:machine].provider.driver.execute_prlctl(
24
+ 'set', @env[:machine].id, "--#{setting.to_s.gsub('_','-')}", value)
28
25
  end
29
26
 
30
27
  @app.call(env)
@@ -32,21 +29,42 @@ module VagrantPlugins
32
29
 
33
30
  private
34
31
 
35
- def set_power_consumption
36
- # Optimization of power consumption is defined by "Longer Battery Life" state.
37
- vm_settings = @env[:machine].provider.driver.read_settings
32
+ def default_settings
33
+ settings = {}
38
34
 
39
- old_val = vm_settings.fetch('Longer battery life') == 'on' ? true : false
40
- new_val = @env[:machine].provider_config.optimize_power_consumption
35
+ return settings if @env[:machine].provider.pd_version_satisfies?('< 9')
36
+ settings.merge!(
37
+ startup_view: 'same',
38
+ on_shutdown: 'close',
39
+ on_window_close: 'keep-running',
40
+ auto_share_camera: 'off',
41
+ smart_guard: 'off',
42
+ longer_battery_life: 'on'
43
+ )
41
44
 
42
- if old_val == new_val
43
- @logger.info('Skipping power consumption method because it is already set')
44
- else
45
- mode = new_val ? 'Longer battery life' : 'Better Performance'
46
- @env[:ui].info I18n.t('vagrant_parallels.parallels.power_consumption.set_mode',
47
- mode: mode)
48
- @env[:machine].provider.driver.set_power_consumption_mode(new_val)
45
+ # Check the legacy option
46
+ if !@env[:machine].provider_config.optimize_power_consumption
47
+ settings[:longer_battery_life] = 'off'
49
48
  end
49
+
50
+ return settings if @env[:machine].provider.pd_version_satisfies?('< 10.1.2')
51
+ settings.merge!(
52
+ shared_cloud: 'off',
53
+ shared_profile: 'off',
54
+ smart_mount: 'off',
55
+ sh_app_guest_to_host: 'off',
56
+ sh_app_host_to_guest: 'off',
57
+ time_sync: 'off'
58
+ )
59
+
60
+ return settings if @env[:machine].provider.pd_version_satisfies?('< 11')
61
+ settings.merge!(
62
+ startup_view: 'headless',
63
+ time_sync: 'on',
64
+ disable_timezone_sync: 'on'
65
+ )
66
+
67
+ settings
50
68
  end
51
69
  end
52
70
  end
@@ -77,10 +77,6 @@ module VagrantPlugins
77
77
  @functional_psf = true
78
78
  end
79
79
 
80
- if @optimize_power_consumption == UNSET_VALUE
81
- @optimize_power_consumption = true
82
- end
83
-
84
80
  @use_linked_clone = false if @use_linked_clone == UNSET_VALUE
85
81
 
86
82
  @name = nil if @name == UNSET_VALUE
@@ -108,6 +104,10 @@ module VagrantPlugins
108
104
  end
109
105
  end
110
106
 
107
+ if @optimize_power_consumption != UNSET_VALUE
108
+ machine.env.ui.warn I18n.t('vagrant_parallels.config.deprecate_power_consumption')
109
+ end
110
+
111
111
  { 'Parallels Provider' => errors }
112
112
  end
113
113
  end
@@ -156,7 +156,9 @@ module VagrantPlugins
156
156
  # Disables requiring password on such operations as creating, adding,
157
157
  # removing or cloning the virtual machine.
158
158
  #
159
- def disable_password_restrictions
159
+ # @param [Array<String>] acts List of actions. Available values:
160
+ # ['create-vm', 'add-vm', 'remove-vm', 'clone-vm']
161
+ def disable_password_restrictions(acts)
160
162
  raise NotImplementedError
161
163
  end
162
164
 
@@ -670,7 +672,13 @@ module VagrantPlugins
670
672
  # Parses given block (JSON string) to object
671
673
  def json(default=nil)
672
674
  data = yield
673
- JSON.parse(data) rescue default
675
+ begin
676
+ JSON.parse(data)
677
+ rescue JSON::ParserError
678
+ # Try to cleanup the data and parse it again [GH-204]
679
+ data = data[/(\{.*\}|\[.*\])/m]
680
+ JSON.parse(data) rescue default
681
+ end
674
682
  end
675
683
 
676
684
  # Executes a command and returns the raw result object.
@@ -49,10 +49,10 @@ module VagrantPlugins
49
49
  end
50
50
  end
51
51
 
52
- def disable_password_restrictions
52
+ def disable_password_restrictions(acts)
53
53
  server_info = json { execute_prlsrvctl('info', '--json') }
54
54
  server_info.fetch('Require password to',[]).each do |act|
55
- execute_prlsrvctl('set', '--require-pwd', "#{act}:off")
55
+ execute_prlsrvctl('set', '--require-pwd', "#{act}:off") if acts.include? act
56
56
  end
57
57
  end
58
58
 
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Parallels
3
- VERSION = '1.4.3'
3
+ VERSION = '1.5.0'
4
4
  end
5
5
  end
@@ -1,9 +1,6 @@
1
1
  en:
2
2
  vagrant_parallels:
3
3
  parallels:
4
- power_consumption:
5
- set_mode: |-
6
- Setting power consumption mode: "%{mode}"
7
4
  network_adapter: |-
8
5
  Adapter %{adapter}: %{type}%{extra}
9
6
  #-------------------------------------------------------------------------------
@@ -117,6 +114,17 @@ en:
117
114
  invalid_event: |-
118
115
  %{event} is not a valid event for customization. Valid events
119
116
  are: %{valid_events}
117
+ deprecate_power_consumption: |-
118
+ Setting "optimize_power_consumption" has been deprecated in the Parallels
119
+ provider and will be removed in the future releases. Power consumption
120
+ is enabled by default. If you want to keep it enabled, then just remove
121
+ this setting from your Vagrantfile. Otherwise, please replace it with
122
+ this block in order to disable the power consumption:
123
+
124
+ config.vm.provider "parallels" do |prl|
125
+ prl.customize ["set", :id, "--longer-battery-life", "off"]
126
+ end
127
+
120
128
  #-------------------------------------------------------------------------------
121
129
  # Translations for commands. e.g. `vagrant x`
122
130
  #-------------------------------------------------------------------------------
@@ -186,3 +194,5 @@ en:
186
194
  %{guest_port} => %{host_port}
187
195
  import:
188
196
  importing_linked: Importing base box '%{name}' as a linked clone...
197
+ sane_defaults:
198
+ setting: Setting the default configuration for VM...
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.3
4
+ version: 1.5.0
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-08-26 00:00:00.000000000 Z
12
+ date: 2015-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler