vagrant-libvirt 0.0.36 → 0.0.37

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/Gemfile +1 -0
  4. data/README.md +171 -13
  5. data/lib/vagrant-libvirt/action/create_domain.rb +44 -19
  6. data/lib/vagrant-libvirt/action/create_domain_volume.rb +12 -12
  7. data/lib/vagrant-libvirt/action/create_network_interfaces.rb +37 -39
  8. data/lib/vagrant-libvirt/action/create_networks.rb +34 -34
  9. data/lib/vagrant-libvirt/action/destroy_domain.rb +7 -8
  10. data/lib/vagrant-libvirt/action/destroy_networks.rb +12 -13
  11. data/lib/vagrant-libvirt/action/forward_ports.rb +21 -23
  12. data/lib/vagrant-libvirt/action/halt_domain.rb +8 -9
  13. data/lib/vagrant-libvirt/action/handle_box_image.rb +28 -27
  14. data/lib/vagrant-libvirt/action/handle_storage_pool.rb +8 -8
  15. data/lib/vagrant-libvirt/action/is_created.rb +1 -1
  16. data/lib/vagrant-libvirt/action/is_running.rb +2 -2
  17. data/lib/vagrant-libvirt/action/is_suspended.rb +4 -4
  18. data/lib/vagrant-libvirt/action/message_already_created.rb +2 -2
  19. data/lib/vagrant-libvirt/action/message_not_created.rb +2 -2
  20. data/lib/vagrant-libvirt/action/message_not_running.rb +2 -2
  21. data/lib/vagrant-libvirt/action/message_not_suspended.rb +2 -2
  22. data/lib/vagrant-libvirt/action/package_domain.rb +6 -5
  23. data/lib/vagrant-libvirt/action/prepare_nfs_settings.rb +7 -6
  24. data/lib/vagrant-libvirt/action/prepare_nfs_valid_ids.rb +2 -2
  25. data/lib/vagrant-libvirt/action/prune_nfs_exports.rb +3 -3
  26. data/lib/vagrant-libvirt/action/read_mac_addresses.rb +8 -10
  27. data/lib/vagrant-libvirt/action/remove_libvirt_image.rb +4 -4
  28. data/lib/vagrant-libvirt/action/remove_stale_volume.rb +8 -7
  29. data/lib/vagrant-libvirt/action/resume_domain.rb +5 -5
  30. data/lib/vagrant-libvirt/action/set_boot_order.rb +70 -27
  31. data/lib/vagrant-libvirt/action/set_name_of_domain.rb +10 -12
  32. data/lib/vagrant-libvirt/action/share_folders.rb +16 -18
  33. data/lib/vagrant-libvirt/action/start_domain.rb +59 -64
  34. data/lib/vagrant-libvirt/action/suspend_domain.rb +5 -5
  35. data/lib/vagrant-libvirt/action/wait_till_up.rb +24 -26
  36. data/lib/vagrant-libvirt/action.rb +18 -23
  37. data/lib/vagrant-libvirt/cap/mount_p9.rb +11 -10
  38. data/lib/vagrant-libvirt/cap/nic_mac_addresses.rb +1 -1
  39. data/lib/vagrant-libvirt/cap/synced_folder.rb +20 -19
  40. data/lib/vagrant-libvirt/config.rb +164 -136
  41. data/lib/vagrant-libvirt/driver.rb +10 -13
  42. data/lib/vagrant-libvirt/errors.rb +4 -3
  43. data/lib/vagrant-libvirt/plugin.rb +4 -6
  44. data/lib/vagrant-libvirt/provider.rb +23 -24
  45. data/lib/vagrant-libvirt/templates/domain.xml.erb +14 -1
  46. data/lib/vagrant-libvirt/templates/private_network.xml.erb +4 -0
  47. data/lib/vagrant-libvirt/util/collection.rb +0 -3
  48. data/lib/vagrant-libvirt/util/erb_template.rb +6 -10
  49. data/lib/vagrant-libvirt/util/error_codes.rb +32 -33
  50. data/lib/vagrant-libvirt/util/network_util.rb +29 -21
  51. data/lib/vagrant-libvirt/util.rb +3 -4
  52. data/lib/vagrant-libvirt/version.rb +1 -1
  53. data/locales/en.yml +3 -0
  54. data/spec/spec_helper.rb +3 -0
  55. data/spec/support/environment_helper.rb +5 -7
  56. data/spec/support/libvirt_context.rb +13 -11
  57. data/spec/support/sharedcontext.rb +9 -10
  58. data/spec/unit/action/destroy_domain_spec.rb +38 -37
  59. data/spec/unit/action/set_name_of_domain_spec.rb +4 -4
  60. data/spec/unit/action/wait_till_up_spec.rb +45 -46
  61. data/spec/unit/config_spec.rb +106 -0
  62. data/spec/unit/templates/domain_all_settings.xml +125 -0
  63. data/spec/unit/templates/domain_defaults.xml +44 -0
  64. data/spec/unit/templates/domain_spec.rb +69 -0
  65. data/tools/create_box.sh +8 -2
  66. metadata +12 -3
@@ -5,7 +5,6 @@ require 'vagrant/util/scoped_hash_override'
5
5
  module VagrantPlugins
6
6
  module ProviderLibvirt
7
7
  module Action
8
-
9
8
  # Create network interfaces for domain, before domain is running.
10
9
  # Networks for connecting those interfaces should be already prepared.
11
10
  class CreateNetworkInterfaces
@@ -27,10 +26,11 @@ module VagrantPlugins
27
26
  # Get domain first.
28
27
  begin
29
28
  domain = env[:machine].provider.driver.connection.client.lookup_domain_by_uuid(
30
- env[:machine].id.to_s)
29
+ env[:machine].id.to_s
30
+ )
31
31
  rescue => e
32
32
  raise Errors::NoDomainError,
33
- :error_message => e.message
33
+ error_message: e.message
34
34
  end
35
35
 
36
36
  # Setup list of interfaces before creating them.
@@ -39,11 +39,10 @@ module VagrantPlugins
39
39
  # Vagrant gives you adapter 0 by default
40
40
  # Assign interfaces to slots.
41
41
  configured_networks(env, @logger).each do |options|
42
-
43
42
  # dont need to create interface for this type
44
43
  next if options[:iface_type] == :forwarded_port
45
44
 
46
- # TODO fill first ifaces with adapter option specified.
45
+ # TODO: fill first ifaces with adapter option specified.
47
46
  if options[:adapter]
48
47
  if adapters[options[:adapter]]
49
48
  raise Errors::InterfaceSlotNotAvailable
@@ -54,13 +53,14 @@ module VagrantPlugins
54
53
  else
55
54
  free_slot = find_empty(adapters)
56
55
  @logger.debug "Adapter not specified so found slot #{free_slot}"
57
- raise Errors::InterfaceSlotNotAvailable if free_slot == nil
56
+ raise Errors::InterfaceSlotNotAvailable if free_slot.nil?
58
57
  end
59
58
 
60
59
  # We have slot for interface, fill it with interface configuration.
61
60
  adapters[free_slot] = options
62
61
  adapters[free_slot][:network_name] = interface_network(
63
- env[:machine].provider.driver.connection.client, adapters[free_slot])
62
+ env[:machine].provider.driver.connection.client, adapters[free_slot]
63
+ )
64
64
  end
65
65
 
66
66
  # Create each interface as new domain device.
@@ -95,18 +95,17 @@ module VagrantPlugins
95
95
  end
96
96
  # default mcast tunnel to 239.255.1.1. Web search says this
97
97
  # 239.255.x.x is a safe range to use for general use mcast
98
- if @type == 'mcast'
99
- default_ip = '239.255.1.1'
100
- else
101
- default_ip = '127.0.0.1'
102
- end
98
+ default_ip = if @type == 'mcast'
99
+ '239.255.1.1'
100
+ else
101
+ '127.0.0.1'
102
+ end
103
103
  @tunnel_ip = iface_configuration.fetch(:tunnel_ip, default_ip)
104
104
  @model_type = iface_configuration.fetch(:model_type, @nic_model_type)
105
105
  template_name = 'tunnel_interface'
106
106
  @logger.info("Setting up #{@type} tunnel interface using #{@tunnel_ip} port #{@tunnel_port}")
107
107
  end
108
108
 
109
-
110
109
  message = "Creating network interface eth#{@iface_number}"
111
110
  message << " connected to network #{@network_name}."
112
111
  if @mac
@@ -119,31 +118,29 @@ module VagrantPlugins
119
118
  domain.attach_device(to_xml(template_name))
120
119
  rescue => e
121
120
  raise Errors::AttachDeviceError,
122
- :error_message => e.message
121
+ error_message: e.message
123
122
  end
124
123
 
125
124
  # Re-read the network configuration and grab the MAC address
126
- unless @mac
127
- xml = Nokogiri::XML(domain.xml_desc)
128
- if iface_configuration[:iface_type] == :public_network
129
- if @type == 'direct'
130
- @mac = xml.xpath("/domain/devices/interface[source[@dev='#{@device}']]/mac/@address")
131
- elsif !@portgroup.nil?
132
- @mac = xml.xpath("/domain/devices/interface[source[@network='#{@network_name}']]/mac/@address")
133
- else
134
- @mac = xml.xpath("/domain/devices/interface[source[@bridge='#{@device}']]/mac/@address")
135
- end
136
- else
125
+ next if @mac
126
+ xml = Nokogiri::XML(domain.xml_desc)
127
+ if iface_configuration[:iface_type] == :public_network
128
+ if @type == 'direct'
129
+ @mac = xml.xpath("/domain/devices/interface[source[@dev='#{@device}']]/mac/@address")
130
+ elsif !@portgroup.nil?
137
131
  @mac = xml.xpath("/domain/devices/interface[source[@network='#{@network_name}']]/mac/@address")
132
+ else
133
+ @mac = xml.xpath("/domain/devices/interface[source[@bridge='#{@device}']]/mac/@address")
138
134
  end
139
- iface_configuration[:mac] = @mac.to_s
135
+ else
136
+ @mac = xml.xpath("/domain/devices/interface[source[@network='#{@network_name}']]/mac/@address")
140
137
  end
138
+ iface_configuration[:mac] = @mac.to_s
141
139
  end
142
140
 
143
141
  # Continue the middleware chain.
144
142
  @app.call(env)
145
143
 
146
-
147
144
  if env[:machine].config.vm.box
148
145
  # Configure interfaces that user requested. Machine should be up and
149
146
  # running now.
@@ -158,17 +155,17 @@ module VagrantPlugins
158
155
  @logger.debug "Configuring interface slot_number #{slot_number} options #{options}"
159
156
 
160
157
  network = {
161
- :interface => slot_number,
162
- :use_dhcp_assigned_default_route => options[:use_dhcp_assigned_default_route],
163
- :mac_address => options[:mac],
158
+ interface: slot_number,
159
+ use_dhcp_assigned_default_route: options[:use_dhcp_assigned_default_route],
160
+ mac_address: options[:mac]
164
161
  }
165
162
 
166
163
  if options[:ip]
167
164
  network = {
168
- :type => :static,
169
- :ip => options[:ip],
170
- :netmask => options[:netmask],
171
- :gateway => options[:gateway],
165
+ type: :static,
166
+ ip: options[:ip],
167
+ netmask: options[:netmask],
168
+ gateway: options[:gateway]
172
169
  }.merge(network)
173
170
  else
174
171
  network[:type] = :dhcp
@@ -182,18 +179,19 @@ module VagrantPlugins
182
179
 
183
180
  env[:ui].info I18n.t('vagrant.actions.vm.network.configuring')
184
181
  env[:machine].guest.capability(
185
- :configure_networks, networks_to_configure)
182
+ :configure_networks, networks_to_configure
183
+ )
186
184
 
187
185
  end
188
186
  end
189
187
 
190
188
  private
191
189
 
192
- def find_empty(array, start=0, stop=@nic_adapter_count)
190
+ def find_empty(array, start = 0, stop = @nic_adapter_count)
193
191
  (start..stop).each do |i|
194
192
  return i unless array[i]
195
193
  end
196
- return nil
194
+ nil
197
195
  end
198
196
 
199
197
  # Return network name according to interface options.
@@ -202,7 +200,7 @@ module VagrantPlugins
202
200
  return 'tunnel_interface' if options.fetch(:tunnel_type, nil)
203
201
 
204
202
  if options[:network_name]
205
- @logger.debug "Found network by name"
203
+ @logger.debug 'Found network by name'
206
204
  return options[:network_name]
207
205
  end
208
206
 
@@ -215,7 +213,7 @@ module VagrantPlugins
215
213
  address = network_address(options[:ip], options[:netmask])
216
214
  available_networks.each do |network|
217
215
  if address == network[:network_address]
218
- @logger.debug "Found network by ip"
216
+ @logger.debug 'Found network by ip'
219
217
  return network[:name]
220
218
  end
221
219
  end
@@ -36,7 +36,7 @@ module VagrantPlugins
36
36
  configured_networks(env, @logger).each do |options|
37
37
  # Only need to create private networks
38
38
  next if options[:iface_type] != :private_network ||
39
- options.fetch(:tunnel_type, nil)
39
+ options.fetch(:tunnel_type, nil)
40
40
  @logger.debug "Searching for network with options #{options}"
41
41
 
42
42
  # should fix other methods so this doesn't have to be instance var
@@ -46,7 +46,8 @@ module VagrantPlugins
46
46
  # list is used throughout this class and should be easier to
47
47
  # process than libvirt API calls.
48
48
  @available_networks = libvirt_networks(
49
- env[:machine].provider.driver.connection.client)
49
+ env[:machine].provider.driver.connection.client
50
+ )
50
51
 
51
52
  # Prepare a hash describing network for this specific interface.
52
53
  @interface_network = {
@@ -55,9 +56,11 @@ module VagrantPlugins
55
56
  netmask: @options[:netmask],
56
57
  network_address: nil,
57
58
  bridge_name: nil,
59
+ ipv6_address: options[:ipv6_address] || nil,
60
+ ipv6_prefix: options[:ipv6_prefix] || nil,
58
61
  created: false,
59
62
  active: false,
60
- autostart: false,
63
+ autostart: options[:autostart] || false,
61
64
  guest_ipv6: @options[:guest_ipv6] || 'yes',
62
65
  libvirt_network: nil
63
66
  }
@@ -129,24 +132,22 @@ module VagrantPlugins
129
132
  @interface_network[:network_address] = net_address
130
133
 
131
134
  # if network is veryisolated, search by name
132
- if @options[:libvirt__forward_mode] == "veryisolated"
133
- network = lookup_network_by_name(@options[:network_name])
134
- elsif net_address
135
- # otherwise, search by ip (if set)
136
- network = lookup_network_by_ip(net_address)
137
- else
138
- # leaving this here to mimic prior behavior. If we get
139
- # here, something's probably broken.
140
- network = lookup_network_by_name(@options[:network_name])
141
- end
135
+ network = if @options[:libvirt__forward_mode] == 'veryisolated'
136
+ lookup_network_by_name(@options[:network_name])
137
+ elsif net_address
138
+ # otherwise, search by ip (if set)
139
+ lookup_network_by_ip(net_address)
140
+ else
141
+ # leaving this here to mimic prior behavior. If we get
142
+ # here, something's probably broken.
143
+ lookup_network_by_name(@options[:network_name])
144
+ end
142
145
  @interface_network = network if network
143
146
 
144
- if @interface_network[:created]
145
- verify_dhcp
146
- end
147
+ verify_dhcp if @interface_network[:created]
147
148
 
148
149
  if @options[:network_name]
149
- @logger.debug "Checking that network name does not clash with ip"
150
+ @logger.debug 'Checking that network name does not clash with ip'
150
151
  if @interface_network[:created]
151
152
  # Just check for mismatch error here - if name and ip from
152
153
  # config match together.
@@ -178,7 +179,7 @@ module VagrantPlugins
178
179
  # Is name for new network set? If not, generate a unique one.
179
180
  count = 0
180
181
  while @interface_network[:name].nil?
181
- @logger.debug "generating name for network"
182
+ @logger.debug 'generating name for network'
182
183
 
183
184
  # Generate a network name.
184
185
  network_name = env[:root_path].basename.to_s.dup
@@ -205,12 +206,12 @@ module VagrantPlugins
205
206
  def handle_network_name_option(env)
206
207
  return if @options[:ip] || \
207
208
  !@options[:network_name] || \
208
- !@options[:libvirt__forward_mode] == "veryisolated"
209
+ !@options[:libvirt__forward_mode] == 'veryisolated'
209
210
 
210
211
  network = lookup_network_by_name(@options[:network_name])
211
212
  @interface_network = network if network
212
213
 
213
- if @options[:libvirt__forward_mode] == "veryisolated"
214
+ if @options[:libvirt__forward_mode] == 'veryisolated'
214
215
  # if this interface has a network address, something's wrong.
215
216
  if @interface_network[:network_address]
216
217
  raise Errors::NetworkNotAvailableError,
@@ -228,6 +229,7 @@ module VagrantPlugins
228
229
  # Do we need to create new network?
229
230
  unless @interface_network[:created]
230
231
  @interface_network[:name] = @options[:network_name]
232
+ @interface_network[:ip_address] ||= @options[:host_ip]
231
233
 
232
234
  # Generate a unique name for network bridge.
233
235
  @interface_network[:bridge_name] = generate_bridge_name
@@ -266,7 +268,7 @@ module VagrantPlugins
266
268
 
267
269
  # Return the first available virbr interface name
268
270
  def generate_bridge_name
269
- @logger.debug "generating name for bridge"
271
+ @logger.debug 'generating name for bridge'
270
272
  count = 0
271
273
  while lookup_bridge_by_name(bridge_name = "virbr#{count}")
272
274
  count += 1
@@ -282,6 +284,9 @@ module VagrantPlugins
282
284
  @network_netmask = @interface_network[:netmask]
283
285
  @guest_ipv6 = @interface_network[:guest_ipv6]
284
286
 
287
+ @network_ipv6_address = @interface_network[:ipv6_address]
288
+ @network_ipv6_prefix = @interface_network[:ipv6_prefix]
289
+
285
290
  @network_forward_mode = @options[:forward_mode]
286
291
  if @options[:forward_device]
287
292
  @network_forward_device = @options[:forward_device]
@@ -290,7 +295,7 @@ module VagrantPlugins
290
295
  if @options[:dhcp_enabled]
291
296
  # Find out DHCP addresses pool range.
292
297
  network_address = "#{@interface_network[:network_address]}/"
293
- network_address << "#{@interface_network[:netmask]}"
298
+ network_address << (@interface_network[:netmask]).to_s
294
299
  net = @interface_network[:network_address] ? IPAddr.new(network_address) : nil
295
300
 
296
301
  # First is address of network, second is gateway (by default).
@@ -313,7 +318,7 @@ module VagrantPlugins
313
318
  begin
314
319
  @interface_network[:libvirt_network] = \
315
320
  @libvirt_client.define_network_xml(to_xml('private_network'))
316
- @logger.debug "created network"
321
+ @logger.debug 'created network'
317
322
  rescue => e
318
323
  raise Errors::CreateNetworkError, error_message: e.message
319
324
  end
@@ -332,21 +337,16 @@ module VagrantPlugins
332
337
  end
333
338
 
334
339
  def autostart_network
335
- begin
336
- @interface_network[:libvirt_network].autostart = true
337
- rescue => e
338
- raise Errors::AutostartNetworkError, error_message: e.message
339
- end
340
+ @interface_network[:libvirt_network].autostart = true
341
+ rescue => e
342
+ raise Errors::AutostartNetworkError, error_message: e.message
340
343
  end
341
344
 
342
345
  def activate_network
343
- begin
344
- @interface_network[:libvirt_network].create
345
- rescue => e
346
- raise Errors::ActivateNetworkError, error_message: e.message
347
- end
346
+ @interface_network[:libvirt_network].create
347
+ rescue => e
348
+ raise Errors::ActivateNetworkError, error_message: e.message
348
349
  end
349
-
350
350
  end
351
351
  end
352
352
  end
@@ -17,8 +17,9 @@ module VagrantPlugins
17
17
  # Fog libvirt currently doesn't support snapshots. Use
18
18
  # ruby-libvirt client directly. Note this is racy, see
19
19
  # http://www.libvirt.org/html/libvirt-libvirt.html#virDomainSnapshotListNames
20
- libvirt_domain = env[:machine].provider.driver.connection.client.lookup_domain_by_uuid(
21
- env[:machine].id)
20
+ libvirt_domain = env[:machine].provider.driver.connection.client.lookup_domain_by_uuid(
21
+ env[:machine].id
22
+ )
22
23
  libvirt_domain.list_snapshots.each do |name|
23
24
  @logger.info("Deleting snapshot '#{name}'")
24
25
  begin
@@ -29,14 +30,12 @@ module VagrantPlugins
29
30
  end
30
31
 
31
32
  # must remove managed saves
32
- if libvirt_domain.has_managed_save?
33
- libvirt_domain.managed_save_remove
34
- end
33
+ libvirt_domain.managed_save_remove if libvirt_domain.has_managed_save?
35
34
 
36
35
  domain = env[:machine].provider.driver.connection.servers.get(env[:machine].id.to_s)
37
36
 
38
- if env[:machine].provider_config.disks.empty? and
39
- env[:machine].provider_config.cdroms.empty?
37
+ if env[:machine].provider_config.disks.empty? &&
38
+ env[:machine].provider_config.cdroms.empty?
40
39
  # if using default configuration of disks and cdroms
41
40
  # cdroms are consider volumes, but cannot be destroyed
42
41
  domain.destroy(destroy_volumes: true)
@@ -56,7 +55,7 @@ module VagrantPlugins
56
55
  elsif disk[:path]
57
56
  poolname = env[:machine].provider_config.storage_pool_name
58
57
  libvirt_disk = domain.volumes.select do |x|
59
- # FIXME can remove pool/target.img and pool/123/target.img
58
+ # FIXME: can remove pool/target.img and pool/123/target.img
60
59
  x.path =~ /\/#{disk[:path]}$/ && x.pool_name == poolname
61
60
  end.first
62
61
  libvirt_disk.destroy if libvirt_disk
@@ -7,8 +7,7 @@ module VagrantPlugins
7
7
  # Destroy all networks created for this specific domain. Skip
8
8
  # removing if network has still active connections.
9
9
  class DestroyNetworks
10
-
11
- def initialize(app, env)
10
+ def initialize(app, _env)
12
11
  @logger = Log4r::Logger.new('vagrant_libvirt::action::destroy_networks')
13
12
  @app = app
14
13
  end
@@ -37,11 +36,12 @@ module VagrantPlugins
37
36
  # if there is an error or if the network just doesn't exist
38
37
  begin
39
38
  libvirt_network = env[:machine].provider.driver.connection.client.lookup_network_by_uuid(
40
- network_uuid)
39
+ network_uuid
40
+ )
41
41
  rescue Libvirt::RetrieveError => e
42
42
  # this network is already destroyed, so move on
43
43
  if e.message =~ /Network not found/
44
- @logger.info "It is already undefined"
44
+ @logger.info 'It is already undefined'
45
45
  next
46
46
  # some other error occured, so raise it again
47
47
  else
@@ -52,38 +52,37 @@ module VagrantPlugins
52
52
  # Skip removing if network has still active connections.
53
53
  xml = Nokogiri::XML(libvirt_network.xml_desc)
54
54
  connections = xml.xpath('/network/@connections').first
55
- if connections != nil
56
- @logger.info "Still has connections so will not undefine"
55
+ unless connections.nil?
56
+ @logger.info 'Still has connections so will not undefine'
57
57
  created_networks << network_uuid
58
58
  next
59
59
  end
60
60
 
61
-
62
61
  # Shutdown network first.
63
62
  # Undefine network.
64
63
  begin
65
64
  libvirt_network.destroy
66
65
  libvirt_network.undefine
67
- @logger.info "Undefined it"
66
+ @logger.info 'Undefined it'
68
67
  rescue => e
69
68
  raise Errors::DestroyNetworkError,
70
- network_name: libvirt_network.name,
71
- error_message: e.message
69
+ network_name: libvirt_network.name,
70
+ error_message: e.message
72
71
  end
73
72
  end
74
73
  file.close
75
74
 
76
75
  # Update status of created networks after removing some/all of them.
77
76
  # Not sure why we are doing this, something else seems to always delete the file
78
- if created_networks.length > 0
77
+ if !created_networks.empty?
79
78
  File.open(created_networks_file, 'w') do |file|
80
- @logger.info "Writing new created_networks file"
79
+ @logger.info 'Writing new created_networks file'
81
80
  created_networks.each do |network_uuid|
82
81
  file.puts network_uuid
83
82
  end
84
83
  end
85
84
  else
86
- @logger.info "Deleting created_networks file"
85
+ @logger.info 'Deleting created_networks file'
87
86
  File.delete(created_networks_file)
88
87
  end
89
88
 
@@ -5,7 +5,7 @@ module VagrantPlugins
5
5
  class ForwardPorts
6
6
  @@lock = Mutex.new
7
7
 
8
- def initialize(app, env)
8
+ def initialize(app, _env)
9
9
  @app = app
10
10
  @logger = Log4r::Logger.new('vagrant_libvirt::action::forward_ports')
11
11
  end
@@ -18,12 +18,11 @@ module VagrantPlugins
18
18
 
19
19
  # Warn if we're port forwarding to any privileged ports
20
20
  env[:forwarded_ports].each do |fp|
21
- if fp[:host] <= 1024
22
- env[:ui].warn I18n.t(
23
- 'vagrant.actions.vm.forward_ports.privileged_ports'
24
- )
25
- break
26
- end
21
+ next unless fp[:host] <= 1024
22
+ env[:ui].warn I18n.t(
23
+ 'vagrant.actions.vm.forward_ports.privileged_ports'
24
+ )
25
+ break
27
26
  end
28
27
 
29
28
  # Continue, we need the VM to be booted in order to grab its IP
@@ -44,8 +43,8 @@ module VagrantPlugins
44
43
  }
45
44
 
46
45
  @env[:ui].info(I18n.t(
47
- 'vagrant.actions.vm.forward_ports.forwarding_entry',
48
- message_attributes
46
+ 'vagrant.actions.vm.forward_ports.forwarding_entry',
47
+ message_attributes
49
48
  ))
50
49
 
51
50
  ssh_pid = redirect_port(
@@ -68,12 +67,11 @@ module VagrantPlugins
68
67
  config.vm.networks.each do |type, options|
69
68
  next if options[:disabled]
70
69
 
71
- if type == :forwarded_port && options[:id] != 'ssh'
72
- if options.fetch(:host_ip, '').to_s.strip.empty?
73
- options.delete(:host_ip)
74
- end
75
- mappings[options[:host]] = options
70
+ next unless type == :forwarded_port && options[:id] != 'ssh'
71
+ if options.fetch(:host_ip, '').to_s.strip.empty?
72
+ options.delete(:host_ip)
76
73
  end
74
+ mappings[options[:host]] = options
77
75
  end
78
76
 
79
77
  mappings.values
@@ -98,8 +96,8 @@ module VagrantPlugins
98
96
  PasswordAuthentication=no
99
97
  ForwardX11=#{ssh_info[:forward_x11] ? 'yes' : 'no'}
100
98
  ) + ssh_info[:private_key_path].map do |pk|
101
- "IdentityFile='\"#{pk}\"'"
102
- end).map { |s| s.prepend('-o ') }.join(' ')
99
+ "IdentityFile='\"#{pk}\"'"
100
+ end).map { |s| s.prepend('-o ') }.join(' ')
103
101
 
104
102
  options += " -o ProxyCommand=\"#{ssh_info[:proxy_command]}\"" if machine.provider_config.connect_via_ssh
105
103
 
@@ -111,7 +109,7 @@ module VagrantPlugins
111
109
  @env[:ui].info 'Requesting sudo for host port(s) <= 1024'
112
110
  r = system('sudo -v')
113
111
  if r
114
- ssh_cmd << 'sudo ' # add sudo prefix
112
+ ssh_cmd << 'sudo ' # add sudo prefix
115
113
  end
116
114
  end
117
115
  end
@@ -122,7 +120,7 @@ module VagrantPlugins
122
120
  log_file = ssh_forward_log_file(host_ip, host_port,
123
121
  guest_ip, guest_port)
124
122
  @logger.info "Logging to #{log_file}"
125
- spawn(ssh_cmd, [:out, :err] => [log_file, 'w'])
123
+ spawn(ssh_cmd, [:out, :err] => [log_file, 'w'])
126
124
  end
127
125
 
128
126
  def ssh_forward_log_file(host_ip, host_port, guest_ip, guest_port)
@@ -131,7 +129,7 @@ module VagrantPlugins
131
129
  File.join(
132
130
  log_dir,
133
131
  'ssh-forwarding-%s_%s-%s_%s.log' %
134
- [ host_ip, host_port, guest_ip, guest_port ]
132
+ [host_ip, host_port, guest_ip, guest_port]
135
133
  )
136
134
  end
137
135
 
@@ -155,7 +153,7 @@ module VagrantPlugins
155
153
  class ClearForwardedPorts
156
154
  @@lock = Mutex.new
157
155
 
158
- def initialize(app, env)
156
+ def initialize(app, _env)
159
157
  @app = app
160
158
  @logger = Log4r::Logger.new(
161
159
  'vagrant_libvirt::action::clear_forward_ports'
@@ -175,7 +173,7 @@ module VagrantPlugins
175
173
  kill_cmd = ''
176
174
 
177
175
  if tag[:port] <= 1024
178
- kill_cmd << 'sudo ' # add sudo prefix
176
+ kill_cmd << 'sudo ' # add sudo prefix
179
177
  end
180
178
 
181
179
  kill_cmd << "kill #{tag[:pid]}"
@@ -199,8 +197,8 @@ module VagrantPlugins
199
197
  glob = @env[:machine].data_dir.join('pids').to_s + '/ssh_*.pid'
200
198
  @ssh_pids = Dir[glob].map do |file|
201
199
  {
202
- :pid => File.read(file).strip.chomp,
203
- :port => File.basename(file)['ssh_'.length..-1*('.pid'.length+1)].to_i
200
+ pid: File.read(file).strip.chomp,
201
+ port: File.basename(file)['ssh_'.length..-1 * ('.pid'.length + 1)].to_i
204
202
  }
205
203
  end
206
204
  end
@@ -5,25 +5,25 @@ module VagrantPlugins
5
5
  module Action
6
6
  # Halt the domain.
7
7
  class HaltDomain
8
- def initialize(app, env)
9
- @logger = Log4r::Logger.new("vagrant_libvirt::action::halt_domain")
8
+ def initialize(app, _env)
9
+ @logger = Log4r::Logger.new('vagrant_libvirt::action::halt_domain')
10
10
  @app = app
11
11
  end
12
12
 
13
13
  def call(env)
14
- env[:ui].info(I18n.t("vagrant_libvirt.halt_domain"))
14
+ env[:ui].info(I18n.t('vagrant_libvirt.halt_domain'))
15
15
 
16
16
  domain = env[:machine].provider.driver.connection.servers.get(env[:machine].id.to_s)
17
- raise Errors::NoDomainError if domain == nil
17
+ raise Errors::NoDomainError if domain.nil?
18
18
 
19
- @logger.info("Trying gracefull shutdown.")
19
+ @logger.info('Trying gracefull shutdown.')
20
20
  domain.shutdown
21
21
  begin
22
- domain.wait_for(30) {
22
+ domain.wait_for(30) do
23
23
  !ready?
24
- }
24
+ end
25
25
  rescue Fog::Errors::TimeoutError
26
- @logger.info("VM is still running. Calling force poweroff.")
26
+ @logger.info('VM is still running. Calling force poweroff.')
27
27
  domain.poweroff
28
28
  end
29
29
 
@@ -33,4 +33,3 @@ module VagrantPlugins
33
33
  end
34
34
  end
35
35
  end
36
-