vagrant-libvirt 0.0.36 → 0.0.37

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