vagrant-parallels 1.4.3 → 1.5.0

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.
@@ -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