vagrant-libvirt 0.10.3 → 0.10.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e424c510119507bbfc057c3f53ddef7151863d0680be4957c104cacd514ce737
4
- data.tar.gz: 9453b83d2078e8787535da2dc6c558bfa44a44b4ce87e2218485e11d8eea0f70
3
+ metadata.gz: b5b3a11dacc2b43a80c7419af116d73d2a7e636c325296f22681f23a0d033a20
4
+ data.tar.gz: 408df37e3ec6a923f884f15a73778d33408ac59169f8152822b0634e384a09a8
5
5
  SHA512:
6
- metadata.gz: 3abe6c5883f9c6b2b38890d7a2dfe1f87fc2f9290aad30e4742e62d9ba736ed6aacbb394b161e44621ab354087ba5b395d119bb31b006baf6166152553ea8d43
7
- data.tar.gz: 69ce100c38dc5b7968da4bf2f0369e3eaa1b61763aa7d1fcd03cad117e060bc45df35560691c9928aebe42851414b6ba6ee73441943061e9a871461d70a21dcd
6
+ metadata.gz: b890ae1fa0eb2f5ef7b212be83acc94eff485f673e3b1bdd40a1f16afbc035af0996a8e31db76148866cc51f5c9c9bf09cc61549e7c3767ba647a4db55265410
7
+ data.tar.gz: 211e8ce3e5cf1088e9137fc6ec26829e1fede30b1b714388c48369ddd6d9b7cc4b2aa147776f14f5faa120df0a7a1e9d3bbee13e8f58492b4d17fd3a64afd343
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'diffy'
4
3
  require 'log4r'
4
+
5
+ require 'equivalent-xml'
5
6
  require 'rexml/document'
6
7
 
7
8
  module VagrantPlugins
@@ -425,24 +426,29 @@ module VagrantPlugins
425
426
  end
426
427
 
427
428
  begin
428
- proposed = Nokogiri::XML(new_xml, &:noblanks)
429
+ # need to check whether the updated XML contains all the changes requested
429
430
 
430
- # This normalizes the attribute order to be consistent across both XML docs to eliminate differences
431
- # for subsequent comparison by diffy
432
- updated_xml_descr = REXML::Document.new(libvirt_domain.xml_desc(1))
433
- updated_xml = String.new
434
- updated_xml_descr.write(updated_xml)
431
+ # This normalizes the attribute order to be consistent across both XML docs to
432
+ # eliminate differences for subsequent comparison by diffy
433
+ applied_xml_descr = REXML::Document.new(libvirt_domain.xml_desc(1))
434
+ applied_xml = String.new
435
+ applied_xml_descr.write(applied_xml)
436
+
437
+ proposed = Nokogiri::XML(new_xml, &:noblanks)
438
+ applied = Nokogiri::XML(applied_xml, &:noblanks)
435
439
 
436
- updated = Nokogiri::XML(updated_xml, &:noblanks)
440
+ if !EquivalentXml.equivalent?(proposed, applied)
441
+ require 'diffy'
437
442
 
438
- pretty_proposed = StringIO.new
439
- pretty_updated = StringIO.new
440
- proposed.write_xml_to(pretty_proposed, indent: 2)
441
- updated.write_xml_to(pretty_updated, indent: 2)
443
+ # pretty print the XML as even though there can be additional changes,
444
+ # the output with diffy appears to be clearer
445
+ pretty_proposed = StringIO.new
446
+ pretty_applied = StringIO.new
447
+ proposed.write_xml_to(pretty_proposed, indent: 2)
448
+ applied.write_xml_to(pretty_applied, indent: 2)
442
449
 
443
- diff = Diffy::Diff.new(pretty_proposed.string, pretty_updated.string, :context => 3).to_s(:text)
450
+ diff = Diffy::Diff.new(pretty_proposed.string, pretty_applied.string, :context => 3).to_s(:text)
444
451
 
445
- unless diff.empty?
446
452
  error_msg = "Libvirt failed to fully update the domain with the specified XML. Result differs from requested:\n" +
447
453
  "--- requested\n+++ result\n#{diff}\n" +
448
454
  "Typically this means there is a bug in the XML being sent, please log an issue"
@@ -1 +1 @@
1
- 0.10.3
1
+ 0.10.4
@@ -0,0 +1,37 @@
1
+ <domain xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0' type=''>
2
+ <name/>
3
+ <title/>
4
+ <description/>
5
+ <uuid/>
6
+ <memory/>
7
+ <vcpu>1</vcpu>
8
+ <cpu check="none" mode="host-model">
9
+
10
+
11
+ </cpu>
12
+ <os>
13
+ <type>hvm</type>
14
+ <kernel/>
15
+ <initrd/>
16
+ <cmdline/>
17
+ </os>
18
+ <features>
19
+ <acpi/>
20
+ <apic/>
21
+ <pae/>
22
+ </features>
23
+ <clock offset='utc'/>
24
+ <devices>
25
+ <serial type='pty'>
26
+ <target port='0'/>
27
+ </serial>
28
+ <console type='pty'>
29
+ <target port='0'/>
30
+ </console>
31
+ <input bus='ps2' type='mouse'/>
32
+ <graphics autoport='yes' keymap='en-us' listen='127.0.0.1' port='-1' type='vnc'/>
33
+ <video>
34
+ <model heads='1' type='cirrus' vram='16384'/>
35
+ </video>
36
+ </devices>
37
+ </domain>
@@ -50,6 +50,31 @@ describe VagrantPlugins::ProviderLibvirt::Action::StartDomain do
50
50
  expect(subject.call(env)).to be_nil
51
51
  end
52
52
 
53
+ context 'when xml is formatted differently' do
54
+ let(:test_file) { 'default_with_different_formatting.xml' }
55
+ let(:updated_domain_xml) {
56
+ new_xml = domain_xml.dup
57
+ new_xml.gsub!(/<cpu .*<\/cpu>/m, '<cpu check="none" mode="host-passthrough"/>')
58
+ new_xml
59
+ }
60
+ let(:vagrantfile_providerconfig) do
61
+ <<-EOF
62
+ libvirt.cpu_mode = "host-passthrough"
63
+ EOF
64
+ end
65
+
66
+ it 'should correctly detect the domain was updated' do
67
+ expect(ui).to_not receive(:error)
68
+ expect(libvirt_domain).to receive(:autostart=)
69
+ expect(connection).to receive(:define_domain).and_return(libvirt_domain)
70
+ expect(libvirt_domain).to receive(:xml_desc).and_return(domain_xml, updated_domain_xml)
71
+ expect(domain).to receive(:start)
72
+
73
+ expect(subject.call(env)).to be_nil
74
+ end
75
+
76
+ end
77
+
53
78
  context 'when any setting changed' do
54
79
  let(:vagrantfile_providerconfig) do
55
80
  <<-EOF
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.10.3
4
+ version: 0.10.4
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: 2022-08-26 00:00:00.000000000 Z
14
+ date: 2022-08-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: fog-libvirt
@@ -55,6 +55,20 @@ dependencies:
55
55
  - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: equivalent-xml
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :runtime
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
58
72
  - !ruby/object:Gem::Dependency
59
73
  name: diffy
60
74
  requirement: !ruby/object:Gem::Requirement
@@ -290,6 +304,7 @@ files:
290
304
  - spec/unit/action/start_domain_spec/default.xml
291
305
  - spec/unit/action/start_domain_spec/default_added_tpm_path.xml
292
306
  - spec/unit/action/start_domain_spec/default_added_tpm_version.xml
307
+ - spec/unit/action/start_domain_spec/default_with_different_formatting.xml
293
308
  - spec/unit/action/start_domain_spec/existing.xml
294
309
  - spec/unit/action/start_domain_spec/existing_added_nvram.xml
295
310
  - spec/unit/action/start_domain_spec/nvram_domain.xml
@@ -417,6 +432,7 @@ test_files:
417
432
  - spec/unit/action/start_domain_spec/existing_added_nvram.xml
418
433
  - spec/unit/action/start_domain_spec/clock_timer_rtc.xml
419
434
  - spec/unit/action/start_domain_spec/existing.xml
435
+ - spec/unit/action/start_domain_spec/default_with_different_formatting.xml
420
436
  - spec/unit/action/destroy_domain_spec/additional_disks_domain.xml
421
437
  - spec/unit/action/destroy_domain_spec/box_multiple_disks.xml
422
438
  - spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks_no_aliases.xml