vagrant-libvirt 0.6.3 → 0.8.1

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 (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +65 -13
  3. data/lib/vagrant-libvirt/action/cleanup_on_failure.rb +76 -0
  4. data/lib/vagrant-libvirt/action/create_domain.rb +56 -10
  5. data/lib/vagrant-libvirt/action/create_network_interfaces.rb +5 -1
  6. data/lib/vagrant-libvirt/action/create_networks.rb +24 -0
  7. data/lib/vagrant-libvirt/action/destroy_domain.rb +106 -21
  8. data/lib/vagrant-libvirt/action/destroy_networks.rb +1 -1
  9. data/lib/vagrant-libvirt/action/forward_ports.rb +12 -11
  10. data/lib/vagrant-libvirt/action/prepare_nfs_settings.rb +1 -1
  11. data/lib/vagrant-libvirt/action/start_domain.rb +36 -0
  12. data/lib/vagrant-libvirt/action/wait_till_up.rb +6 -32
  13. data/lib/vagrant-libvirt/action.rb +72 -83
  14. data/lib/vagrant-libvirt/config.rb +85 -30
  15. data/lib/vagrant-libvirt/driver.rb +11 -9
  16. data/lib/vagrant-libvirt/errors.rb +12 -0
  17. data/lib/vagrant-libvirt/templates/domain.xml.erb +228 -218
  18. data/lib/vagrant-libvirt/templates/private_network.xml.erb +4 -1
  19. data/lib/vagrant-libvirt/util/network_util.rb +15 -3
  20. data/lib/vagrant-libvirt/util/nfs.rb +2 -0
  21. data/lib/vagrant-libvirt/util/resolvers.rb +80 -0
  22. data/lib/vagrant-libvirt/version +1 -1
  23. data/locales/en.yml +17 -0
  24. data/spec/spec_helper.rb +36 -23
  25. data/spec/support/libvirt_context.rb +7 -4
  26. data/spec/support/sharedcontext.rb +1 -1
  27. data/spec/unit/action/cleanup_on_failure_spec.rb +131 -0
  28. data/spec/unit/action/create_domain_spec/additional_disks_domain.xml +6 -18
  29. data/spec/unit/action/create_domain_spec/custom_disk_settings.xml +43 -0
  30. data/spec/unit/action/create_domain_spec/default_domain.xml +6 -18
  31. data/spec/unit/action/create_domain_spec/two_disk_settings.xml +49 -0
  32. data/spec/unit/action/create_domain_spec.rb +51 -7
  33. data/spec/unit/action/create_domain_volume_spec.rb +5 -3
  34. data/spec/unit/action/destroy_domain_spec/additional_disks_domain.xml +47 -0
  35. data/spec/unit/action/destroy_domain_spec/box_multiple_disks.xml +55 -0
  36. data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks.xml +72 -0
  37. data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks_no_aliases.xml +67 -0
  38. data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_disks.xml +67 -0
  39. data/spec/unit/action/destroy_domain_spec/cdrom_domain.xml +48 -0
  40. data/spec/unit/action/destroy_domain_spec.rb +134 -30
  41. data/spec/unit/action/forward_ports_spec.rb +10 -2
  42. data/spec/unit/action/prepare_nfs_settings_spec.rb +59 -0
  43. data/spec/unit/action/shutdown_domain_spec.rb +1 -1
  44. data/spec/unit/action/start_domain_spec/clock_timer_rtc.xml +6 -18
  45. data/spec/unit/action/start_domain_spec/default.xml +6 -18
  46. data/spec/unit/action/start_domain_spec/default_added_tpm_path.xml +6 -18
  47. data/spec/unit/action/start_domain_spec/default_added_tpm_version.xml +6 -18
  48. data/spec/unit/action/start_domain_spec/existing.xml +1 -1
  49. data/spec/unit/action/wait_till_up_spec.rb +4 -43
  50. data/spec/unit/action_spec.rb +2 -0
  51. data/spec/unit/config_spec.rb +133 -26
  52. data/spec/unit/driver_spec.rb +154 -10
  53. data/spec/unit/templates/domain_all_settings.xml +56 -77
  54. data/spec/unit/templates/domain_cpu_mode_passthrough.xml +39 -0
  55. data/spec/unit/templates/domain_custom_cpu_model.xml +6 -18
  56. data/spec/unit/templates/domain_defaults.xml +6 -18
  57. data/spec/unit/templates/domain_spec.rb +39 -13
  58. data/spec/unit/templates/tpm/version_1.2.xml +6 -18
  59. data/spec/unit/templates/tpm/version_2.0.xml +6 -18
  60. data/spec/unit/util/resolvers_spec.rb +116 -0
  61. metadata +40 -41
@@ -5,15 +5,11 @@
5
5
  <uuid></uuid>
6
6
  <memory></memory>
7
7
  <vcpu>1</vcpu>
8
-
9
-
10
8
  <cpu mode='host-model'>
11
- <model fallback='allow'></model>
9
+ <model fallback='allow'></model>
12
10
  </cpu>
13
-
14
-
15
11
  <os>
16
- <type>hvm</type>
12
+ <type>hvm</type>
17
13
  <kernel></kernel>
18
14
  <initrd></initrd>
19
15
  <cmdline></cmdline>
@@ -26,29 +22,21 @@
26
22
  <clock offset='utc'>
27
23
  </clock>
28
24
  <devices>
29
-
30
-
31
25
  <serial type='pty'>
32
26
  <target port='0'/>
33
27
  </serial>
34
28
  <console type='pty'>
35
29
  <target port='0'/>
36
30
  </console>
37
-
38
-
39
31
  <input type='mouse' bus='ps2'/>
40
-
41
- <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us' />
42
- <video>
43
- <model type='cirrus' vram='9216' heads='1'/>
44
- </video>
45
-
46
-
32
+ <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
33
+ <video>
34
+ <model type='cirrus' vram='16384' heads='1'/>
35
+ </video>
47
36
  <tpm model='tpm-tis'>
48
37
  <backend type='passthrough'>
49
38
  <device path='/dev/tpm0'/>
50
39
  </backend>
51
40
  </tpm>
52
41
  </devices>
53
-
54
42
  </domain>
@@ -5,15 +5,11 @@
5
5
  <uuid></uuid>
6
6
  <memory></memory>
7
7
  <vcpu>1</vcpu>
8
-
9
-
10
8
  <cpu mode='host-model'>
11
- <model fallback='allow'></model>
9
+ <model fallback='allow'></model>
12
10
  </cpu>
13
-
14
-
15
11
  <os>
16
- <type>hvm</type>
12
+ <type>hvm</type>
17
13
  <kernel></kernel>
18
14
  <initrd></initrd>
19
15
  <cmdline></cmdline>
@@ -26,28 +22,20 @@
26
22
  <clock offset='utc'>
27
23
  </clock>
28
24
  <devices>
29
-
30
-
31
25
  <serial type='pty'>
32
26
  <target port='0'/>
33
27
  </serial>
34
28
  <console type='pty'>
35
29
  <target port='0'/>
36
30
  </console>
37
-
38
-
39
31
  <input type='mouse' bus='ps2'/>
40
-
41
- <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us' />
42
- <video>
43
- <model type='cirrus' vram='9216' heads='1'/>
44
- </video>
45
-
46
-
32
+ <graphics type='vnc' port='-1' autoport='yes' listen='127.0.0.1' keymap='en-us'/>
33
+ <video>
34
+ <model type='cirrus' vram='16384' heads='1'/>
35
+ </video>
47
36
  <tpm model='tpm-crb'>
48
37
  <backend type='emulator' version='2.0'>
49
38
  </backend>
50
39
  </tpm>
51
40
  </devices>
52
-
53
41
  </domain>
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ require 'vagrant-libvirt/util/resolvers'
6
+
7
+ describe VagrantPlugins::ProviderLibvirt::Util::DiskDeviceResolver do
8
+ subject { described_class.new }
9
+
10
+ def deep_clone_disks(disk_array)
11
+ new_array = []
12
+ disk_array.each do |disk|
13
+ new_array.push disk.dup
14
+ end
15
+
16
+ new_array
17
+ end
18
+
19
+ describe '#resolve!' do
20
+ context 'when using default prefix' do
21
+ [
22
+ [
23
+ [{:name => 'single-disk'}],
24
+ [{:name => 'single-disk', :device => 'vda'}],
25
+ ],
26
+ [
27
+ [{:name => 'disk1'}, {:name => 'disk2'}],
28
+ [{:name => 'disk1', :device => 'vda'}, {:name => 'disk2', :device => 'vdb'}],
29
+ ],
30
+ [
31
+ [{:name => 'disk1'}, {:name => 'disk2', :device => 'vdc'}],
32
+ [{:name => 'disk1', :device => 'vda'}, {:name => 'disk2', :device => 'vdc'}],
33
+ ],
34
+ [
35
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2'}],
36
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2', :device => 'vda'}],
37
+ ],
38
+ ].each do |input_disks, output_disks, options={}|
39
+ opts = {}.merge!(options)
40
+ it "should handle inputs: #{input_disks}" do
41
+ disks = deep_clone_disks(input_disks)
42
+ expect(subject.resolve!(disks)).to eq(output_disks)
43
+ expect(disks).to_not eq(input_disks)
44
+ end
45
+ end
46
+ end
47
+
48
+ context 'when using different default prefix' do
49
+ let(:subject) { described_class.new('sd') }
50
+ [
51
+ [
52
+ [{:name => 'single-disk'}],
53
+ [{:name => 'single-disk', :device => 'sda'}],
54
+ ],
55
+ [
56
+ [{:name => 'disk1'}, {:name => 'disk2'}],
57
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2', :device => 'sdb'}],
58
+ ],
59
+ [
60
+ [{:name => 'disk1'}, {:name => 'disk2', :device => 'vdc'}],
61
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2', :device => 'vdc'}],
62
+ ],
63
+ [
64
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2'}],
65
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2', :device => 'sdb'}],
66
+ ],
67
+ [
68
+ [{:name => 'disk1'}, {:name => 'disk2', :device => 'sda'}],
69
+ [{:name => 'disk1', :device => 'sdb'}, {:name => 'disk2', :device => 'sda'}],
70
+ ],
71
+ ].each do |input_disks, output_disks, options={}|
72
+ opts = {}.merge!(options)
73
+ it "should handle inputs: #{input_disks}" do
74
+ disks = deep_clone_disks(input_disks)
75
+ expect(subject.resolve!(disks)).to eq(output_disks)
76
+ end
77
+ end
78
+ end
79
+
80
+ context 'when using custom prefix' do
81
+ [
82
+ [
83
+ [{:name => 'existing-disk', :device => 'vda'}],
84
+ [{:name => 'single-disk'}],
85
+ [{:name => 'single-disk', :device => 'sda'}],
86
+ {:prefix => 'sd'},
87
+ ],
88
+ [
89
+ [{:name => 'existing-disk', :device => 'vda'}],
90
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2'}],
91
+ [{:name => 'disk1', :device => 'sda'}, {:name => 'disk2', :device => 'sdb'}],
92
+ {:prefix => 'sd'},
93
+ ],
94
+ ].each do |existing, input_disks, output_disks, options={}|
95
+ opts = {}.merge!(options)
96
+ it "should handle inputs: #{input_disks} with opts: #{opts}" do
97
+ disks = deep_clone_disks(input_disks)
98
+ subject.resolve(existing)
99
+ expect(subject.resolve!(disks, opts)).to eq(output_disks)
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ describe '#resolve' do
106
+ let(:input_disks) { [{:name => 'single-disk'}] }
107
+ let(:output_disks) { [{:name => 'single-disk', :device => 'vda'}] }
108
+
109
+ it "should resolve without modifying" do
110
+ disks = deep_clone_disks(input_disks)
111
+ expect(subject.resolve(disks)).to eq(output_disks)
112
+ expect(disks).to_not eq(output_disks)
113
+ expect(disks).to eq(input_disks)
114
+ end
115
+ end
116
+ end
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.6.3
4
+ version: 0.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lukas Stanek
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2021-10-17 00:00:00.000000000 Z
14
+ date: 2022-04-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rspec-core
@@ -55,34 +55,6 @@ dependencies:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '3.5'
58
- - !ruby/object:Gem::Dependency
59
- name: simplecov
60
- requirement: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: '0'
65
- type: :development
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- version: '0'
72
- - !ruby/object:Gem::Dependency
73
- name: simplecov-lcov
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
58
  - !ruby/object:Gem::Dependency
87
59
  name: fog-libvirt
88
60
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +140,7 @@ files:
168
140
  - lib/vagrant-libvirt.rb
169
141
  - lib/vagrant-libvirt/action.rb
170
142
  - lib/vagrant-libvirt/action/clean_machine_folder.rb
143
+ - lib/vagrant-libvirt/action/cleanup_on_failure.rb
171
144
  - lib/vagrant-libvirt/action/create_domain.rb
172
145
  - lib/vagrant-libvirt/action/create_domain_volume.rb
173
146
  - lib/vagrant-libvirt/action/create_network_interfaces.rb
@@ -223,6 +196,7 @@ files:
223
196
  - lib/vagrant-libvirt/util/error_codes.rb
224
197
  - lib/vagrant-libvirt/util/network_util.rb
225
198
  - lib/vagrant-libvirt/util/nfs.rb
199
+ - lib/vagrant-libvirt/util/resolvers.rb
226
200
  - lib/vagrant-libvirt/util/storage_util.rb
227
201
  - lib/vagrant-libvirt/util/timer.rb
228
202
  - lib/vagrant-libvirt/util/ui.rb
@@ -237,21 +211,31 @@ files:
237
211
  - spec/support/sharedcontext.rb
238
212
  - spec/support/temporary_dir.rb
239
213
  - spec/unit/action/clean_machine_folder_spec.rb
214
+ - spec/unit/action/cleanup_on_failure_spec.rb
240
215
  - spec/unit/action/create_domain_spec.rb
241
216
  - spec/unit/action/create_domain_spec/additional_disks_domain.xml
217
+ - spec/unit/action/create_domain_spec/custom_disk_settings.xml
242
218
  - spec/unit/action/create_domain_spec/default_domain.xml
243
219
  - spec/unit/action/create_domain_spec/default_system_storage_pool.xml
244
220
  - spec/unit/action/create_domain_spec/default_user_storage_pool.xml
221
+ - spec/unit/action/create_domain_spec/two_disk_settings.xml
245
222
  - spec/unit/action/create_domain_volume_spec.rb
246
223
  - spec/unit/action/create_domain_volume_spec/one_disk_in_storage.xml
247
224
  - spec/unit/action/create_domain_volume_spec/three_disks_in_storage_disk_0.xml
248
225
  - spec/unit/action/create_domain_volume_spec/three_disks_in_storage_disk_1.xml
249
226
  - spec/unit/action/create_domain_volume_spec/three_disks_in_storage_disk_2.xml
250
227
  - spec/unit/action/destroy_domain_spec.rb
228
+ - spec/unit/action/destroy_domain_spec/additional_disks_domain.xml
229
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks.xml
230
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks.xml
231
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks_no_aliases.xml
232
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_disks.xml
233
+ - spec/unit/action/destroy_domain_spec/cdrom_domain.xml
251
234
  - spec/unit/action/forward_ports_spec.rb
252
235
  - spec/unit/action/halt_domain_spec.rb
253
236
  - spec/unit/action/handle_box_image_spec.rb
254
237
  - spec/unit/action/package_domain_spec.rb
238
+ - spec/unit/action/prepare_nfs_settings_spec.rb
255
239
  - spec/unit/action/set_name_of_domain_spec.rb
256
240
  - spec/unit/action/shutdown_domain_spec.rb
257
241
  - spec/unit/action/start_domain_spec.rb
@@ -266,16 +250,19 @@ files:
266
250
  - spec/unit/driver_spec.rb
267
251
  - spec/unit/provider_spec.rb
268
252
  - spec/unit/templates/domain_all_settings.xml
253
+ - spec/unit/templates/domain_cpu_mode_passthrough.xml
269
254
  - spec/unit/templates/domain_custom_cpu_model.xml
270
255
  - spec/unit/templates/domain_defaults.xml
271
256
  - spec/unit/templates/domain_spec.rb
272
257
  - spec/unit/templates/tpm/version_1.2.xml
273
258
  - spec/unit/templates/tpm/version_2.0.xml
274
259
  - spec/unit/util/byte_number_spec.rb
260
+ - spec/unit/util/resolvers_spec.rb
275
261
  homepage: https://github.com/vagrant-libvirt/vagrant-libvirt
276
262
  licenses:
277
263
  - MIT
278
- metadata: {}
264
+ metadata:
265
+ source_code_uri: https://github.com/vagrant-libvirt/vagrant-libvirt
279
266
  post_install_message:
280
267
  rdoc_options: []
281
268
  require_paths:
@@ -300,12 +287,14 @@ test_files:
300
287
  - spec/support/binding_proc.rb
301
288
  - spec/support/environment_helper.rb
302
289
  - spec/support/libvirt_context.rb
303
- - spec/support/temporary_dir.rb
304
290
  - spec/support/sharedcontext.rb
291
+ - spec/support/temporary_dir.rb
305
292
  - spec/unit/action/create_domain_spec/default_system_storage_pool.xml
306
293
  - spec/unit/action/create_domain_spec/default_user_storage_pool.xml
307
294
  - spec/unit/action/create_domain_spec/additional_disks_domain.xml
295
+ - spec/unit/action/create_domain_spec/custom_disk_settings.xml
308
296
  - spec/unit/action/create_domain_spec/default_domain.xml
297
+ - spec/unit/action/create_domain_spec/two_disk_settings.xml
309
298
  - spec/unit/action/create_domain_volume_spec/one_disk_in_storage.xml
310
299
  - spec/unit/action/create_domain_volume_spec/three_disks_in_storage_disk_0.xml
311
300
  - spec/unit/action/create_domain_volume_spec/three_disks_in_storage_disk_1.xml
@@ -316,26 +305,36 @@ test_files:
316
305
  - spec/unit/action/start_domain_spec/default_added_tpm_version.xml
317
306
  - spec/unit/action/start_domain_spec/existing.xml
318
307
  - spec/unit/action/clean_machine_folder_spec.rb
319
- - spec/unit/action/forward_ports_spec.rb
320
- - spec/unit/action/set_name_of_domain_spec.rb
321
- - spec/unit/action/wait_till_up_spec.rb
322
- - spec/unit/action/create_domain_volume_spec.rb
323
- - spec/unit/action/start_domain_spec.rb
308
+ - spec/unit/action/cleanup_on_failure_spec.rb
324
309
  - spec/unit/action/destroy_domain_spec.rb
310
+ - spec/unit/action/destroy_domain_spec/additional_disks_domain.xml
311
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks.xml
312
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks.xml
313
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks_no_aliases.xml
314
+ - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_disks.xml
315
+ - spec/unit/action/destroy_domain_spec/cdrom_domain.xml
325
316
  - spec/unit/action/halt_domain_spec.rb
326
- - spec/unit/action/create_domain_spec.rb
317
+ - spec/unit/action/handle_box_image_spec.rb
327
318
  - spec/unit/action/package_domain_spec.rb
319
+ - spec/unit/action/prepare_nfs_settings_spec.rb
320
+ - spec/unit/action/set_name_of_domain_spec.rb
328
321
  - spec/unit/action/shutdown_domain_spec.rb
329
- - spec/unit/action/handle_box_image_spec.rb
322
+ - spec/unit/action/start_domain_spec.rb
323
+ - spec/unit/action/create_domain_spec.rb
324
+ - spec/unit/action/create_domain_volume_spec.rb
325
+ - spec/unit/action/wait_till_up_spec.rb
326
+ - spec/unit/action/forward_ports_spec.rb
330
327
  - spec/unit/templates/tpm/version_1.2.xml
331
328
  - spec/unit/templates/tpm/version_2.0.xml
329
+ - spec/unit/templates/domain_all_settings.xml
330
+ - spec/unit/templates/domain_cpu_mode_passthrough.xml
332
331
  - spec/unit/templates/domain_custom_cpu_model.xml
333
332
  - spec/unit/templates/domain_defaults.xml
334
333
  - spec/unit/templates/domain_spec.rb
335
- - spec/unit/templates/domain_all_settings.xml
336
334
  - spec/unit/util/byte_number_spec.rb
335
+ - spec/unit/util/resolvers_spec.rb
337
336
  - spec/unit/provider_spec.rb
337
+ - spec/unit/action_spec.rb
338
338
  - spec/unit/config_spec.rb
339
339
  - spec/unit/driver_spec.rb
340
- - spec/unit/action_spec.rb
341
340
  - spec/spec_helper.rb