vagrant-libvirt 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b55fc32f8adb0cb243c614739bd328914c41ba8af23ca327dc41e2dba2a5eefe
4
- data.tar.gz: de8042a84390599e5f4eb7ae9ea63a2306644e7562b41bec3afeae795fe01333
3
+ metadata.gz: 8cce5cc2c14c33a541cb2c0a446dd76692685131abbff67992976e736cd0f04e
4
+ data.tar.gz: 4abe7566cc6269cb8c9fa4cac79cdfe6a1d5919e7305ffec1a214e937853c4ea
5
5
  SHA512:
6
- metadata.gz: 3958a03dca08540b0c49f444de1ba8164cdbc40056e3206b1af674c28f9cb15eda0a290f0044089e5f35f7ce69c1424828259042a64f19cea85f46f9ae738071
7
- data.tar.gz: 5d60cf7e10f6468b3e2597a211634e6a04138dc22a7f320bbc753c07b1e8d3a4ae83de15fd6294061d0f282990e2a68e40b9a7849db6fe3db232055141d42b5c
6
+ metadata.gz: 2eb5a19c0aa21eccd856d8056270669d201ceec6f3f6cfb209ec7e6185bfcca0a25fd1b60556bef4ea92ed261b6069c17011c2c0083999c146065dc216656beb
7
+ data.tar.gz: c3ffc56e5e8d680f87541be65a9990fd77a0e8235c070a413eb5d44d63f7cb1b5bbc712ea6c8b5fb8fe45ef85d72a967e31f241ea0461a9b943f7cd79eb6151b
data/README.md CHANGED
@@ -1788,11 +1788,25 @@ $ bundle exec rspec spec/
1788
1788
  If those pass, you're ready to start developing the plugin. You can test the
1789
1789
  plugin without installing it into your Vagrant environment by just creating a
1790
1790
  `Vagrantfile` in the top level of this directory (it is gitignored) that uses
1791
- it. Don't forget to add following line at the beginning of your `Vagrantfile`
1792
- while in development mode:
1791
+ it. You can add the following line to your Vagrantfile while in development to
1792
+ ensure vagrant checks that the plugin is installed:
1793
1793
 
1794
1794
  ```ruby
1795
- Vagrant.require_plugin "vagrant-libvirt"
1795
+ Vagrant.configure("2") do |config|
1796
+ config.vagrant.plugins = "vagrant-libvirt"
1797
+ end
1798
+ ```
1799
+ Or add the following to the top of the file to ensure that any required plugins
1800
+ are installed globally:
1801
+ ```ruby
1802
+ REQUIRED_PLUGINS = %w(vagrant-libvirt)
1803
+ exit unless REQUIRED_PLUGINS.all? do |plugin|
1804
+ Vagrant.has_plugin?(plugin) || (
1805
+ puts "The #{plugin} plugin is required. Please install it with:"
1806
+ puts "$ vagrant plugin install #{plugin}"
1807
+ false
1808
+ )
1809
+ end
1796
1810
  ```
1797
1811
 
1798
1812
  Now you can use bundler to execute Vagrant:
@@ -186,11 +186,11 @@ module VagrantPlugins
186
186
 
187
187
  b2.use Call, DestroyConfirm do |env2, b3|
188
188
  if env2[:result]
189
+ b3.use ProvisionerCleanup, :before
189
190
  b3.use ClearForwardedPorts
190
191
  b3.use PruneNFSExports
191
192
  b3.use DestroyDomain
192
193
  b3.use DestroyNetworks
193
- b3.use ProvisionerCleanup
194
194
  else
195
195
  b3.use MessageWillNotDestroy
196
196
  end
@@ -97,11 +97,13 @@ module VagrantPlugins
97
97
  return get_ipaddress_from_system domain.mac
98
98
  end
99
99
 
100
- # Get IP address from arp table
100
+ # Get IP address from dhcp leases table
101
101
  begin
102
102
  ip_address = get_ipaddress_from_domain(domain)
103
103
  rescue Fog::Errors::TimeoutError
104
104
  @logger.info('Timeout at waiting for an ip address for machine %s' % machine.name)
105
+
106
+ raise
105
107
  end
106
108
 
107
109
  unless ip_address
@@ -26,6 +26,7 @@ module VagrantPlugins
26
26
  end
27
27
 
28
28
  action_hook(:remove_libvirt_image) do |hook|
29
+ require_relative 'action'
29
30
  hook.after Vagrant::Action::Builtin::BoxRemove, Action.remove_libvirt_image
30
31
  end
31
32
 
@@ -1 +1 @@
1
- 0.4.0
1
+ 0.4.1
@@ -0,0 +1,24 @@
1
+ ##
2
+ # A simple extension of the Proc class that supports setting a custom binding
3
+ # and evaluates everything in the Proc using the new binding.
4
+
5
+ class ProcWithBinding < Proc
6
+ ##
7
+ # Set the binding for this instance
8
+
9
+ def apply_binding(bind, *args)
10
+ @binding = bind
11
+ instance_exec(*args, &self)
12
+ end
13
+
14
+ def method_missing(method, *args)
15
+ begin
16
+ method_from_binding = eval("method(#{method.inspect})", @binding)
17
+ return method_from_binding.call(*args)
18
+ rescue NameError
19
+ # fall through on purpose
20
+ end
21
+
22
+ super
23
+ end
24
+ end
@@ -12,7 +12,7 @@ describe VagrantPlugins::ProviderLibvirt::Action::WaitTillUp do
12
12
  include_context 'libvirt'
13
13
  include_context 'unit'
14
14
 
15
- let (:driver) { double('driver') }
15
+ let (:driver) { VagrantPlugins::ProviderLibvirt::Driver.new env[:machine] }
16
16
 
17
17
  describe '#call' do
18
18
  before do
@@ -47,6 +47,24 @@ describe VagrantPlugins::ProviderLibvirt::Action::WaitTillUp do
47
47
  end
48
48
  end
49
49
 
50
+ context 'multiple timeouts waiting for IP' do
51
+ before do
52
+ allow(env).to receive(:[]).and_call_original
53
+ allow(env).to receive(:[]).with(:interrupted).and_return(false)
54
+ allow(logger).to receive(:debug)
55
+ allow(logger).to receive(:info)
56
+ end
57
+
58
+ it 'should abort after hitting limit' do
59
+ expect(domain).to receive(:wait_for).at_least(300).times.and_raise(::Fog::Errors::TimeoutError)
60
+ expect(app).to_not receive(:call)
61
+ expect(ui).to receive(:info).with('Waiting for domain to get an IP address...')
62
+ expect(ui).to_not receive(:info).with('Waiting for SSH to become available...')
63
+ expect(env[:machine].communicate).to_not receive(:ready?)
64
+ expect {subject.call(env) }.to raise_error(::Fog::Errors::TimeoutError)
65
+ end
66
+ end
67
+
50
68
  context 'if interrupted waiting for SSH' do
51
69
  before do
52
70
  allow(domain).to receive(:wait_for).and_return(true)
@@ -1,4 +1,4 @@
1
- require 'contextual_proc'
1
+ require 'support/binding_proc'
2
2
 
3
3
  require 'spec_helper'
4
4
  require 'support/sharedcontext'
@@ -103,7 +103,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
103
103
  :id_ssh_key_file => nil,
104
104
  },
105
105
  {
106
- :setup => ContextualProc.new {
106
+ :setup => ProcWithBinding.new {
107
107
  expect(File).to_not receive(:file?)
108
108
  }
109
109
  }
@@ -116,7 +116,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
116
116
  :id_ssh_key_file => "/home/tests/.ssh/id_rsa",
117
117
  },
118
118
  {
119
- :setup => ContextualProc.new {
119
+ :setup => ProcWithBinding.new {
120
120
  expect(File).to receive(:file?).with("/home/tests/.ssh/id_rsa").and_return(true)
121
121
  }
122
122
  }
@@ -263,7 +263,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
263
263
  {:connect_via_ssh => true},
264
264
  {:uri => 'qemu+ssh://localhost/system?no_verify=1', :id_ssh_key_file => nil},
265
265
  {
266
- :setup => ContextualProc.new {
266
+ :setup => ProcWithBinding.new {
267
267
  expect(File).to receive(:file?).with("/home/tests/.ssh/id_rsa").and_return(false)
268
268
  }
269
269
  }
@@ -272,7 +272,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
272
272
  {:connect_via_ssh => true},
273
273
  {:uri => 'qemu+ssh://localhost/system?no_verify=1&keyfile=/home/tests/.ssh/id_rsa', :id_ssh_key_file => '/home/tests/.ssh/id_rsa'},
274
274
  {
275
- :setup => ContextualProc.new {
275
+ :setup => ProcWithBinding.new {
276
276
  expect(File).to receive(:file?).with("/home/tests/.ssh/id_rsa").and_return(true)
277
277
  }
278
278
  }
@@ -294,7 +294,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
294
294
  end
295
295
 
296
296
  if !opts[:setup].nil?
297
- opts[:setup].apply(binding)
297
+ opts[:setup].apply_binding(binding)
298
298
  end
299
299
 
300
300
  inputs.each do |k, v|
@@ -362,7 +362,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
362
362
  {:connect_via_ssh => true, :host => 'remote', :username => 'myuser'},
363
363
  "ssh 'remote' -l 'myuser' -i '/home/tests/.ssh/id_rsa' -W %h:%p",
364
364
  {
365
- :setup => ContextualProc.new {
365
+ :setup => ProcWithBinding.new {
366
366
  expect(File).to receive(:file?).with("/home/tests/.ssh/id_rsa").and_return(true)
367
367
  }
368
368
  }
@@ -417,7 +417,7 @@ describe VagrantPlugins::ProviderLibvirt::Config do
417
417
  end
418
418
 
419
419
  if !opts[:setup].nil?
420
- opts[:setup].apply(binding)
420
+ opts[:setup].apply_binding(binding)
421
421
  end
422
422
 
423
423
  inputs.each do |k, v|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-libvirt
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Stanek
@@ -10,22 +10,8 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-03-21 00:00:00.000000000 Z
13
+ date: 2021-04-03 00:00:00.000000000 Z
14
14
  dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: contextual_proc
17
- requirement: !ruby/object:Gem::Requirement
18
- requirements:
19
- - - ">="
20
- - !ruby/object:Gem::Version
21
- version: '0'
22
- type: :development
23
- prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- version: '0'
29
15
  - !ruby/object:Gem::Dependency
30
16
  name: rspec-core
31
17
  requirement: !ruby/object:Gem::Requirement
@@ -223,6 +209,7 @@ files:
223
209
  - lib/vagrant-libvirt/version.rb
224
210
  - locales/en.yml
225
211
  - spec/spec_helper.rb
212
+ - spec/support/binding_proc.rb
226
213
  - spec/support/environment_helper.rb
227
214
  - spec/support/libvirt_context.rb
228
215
  - spec/support/sharedcontext.rb
@@ -291,5 +278,6 @@ test_files:
291
278
  - spec/unit/templates/domain_custom_cpu_model.xml
292
279
  - spec/support/libvirt_context.rb
293
280
  - spec/support/environment_helper.rb
281
+ - spec/support/binding_proc.rb
294
282
  - spec/support/sharedcontext.rb
295
283
  - spec/spec_helper.rb