diff --git a/lib/facter/resolvers/windows/virtualization.rb b/lib/facter/resolvers/windows/virtualization.rb index e955028cf..836300df5 100644 --- a/lib/facter/resolvers/windows/virtualization.rb +++ b/lib/facter/resolvers/windows/virtualization.rb @@ -49,7 +49,7 @@ def determine_hypervisor_by_manufacturer(comp) 'hyperv' elsif /^Xen/.match?(manufacturer) 'xen' - elsif /^Amazon EC2/.match?(manufacturer) + elsif /^(Amazon EC2|QEMU)/.match?(manufacturer) 'kvm' else 'physical' diff --git a/spec/facter/resolvers/windows/virtualization_spec.rb b/spec/facter/resolvers/windows/virtualization_spec.rb index b2a501523..fb11f7f49 100644 --- a/spec/facter/resolvers/windows/virtualization_spec.rb +++ b/spec/facter/resolvers/windows/virtualization_spec.rb @@ -181,6 +181,26 @@ end end + describe '#resolve Proxmox/QEMU VM' do + before do + allow(win32ole).to receive(:Model).and_return(model) + allow(win32ole).to receive(:Manufacturer).and_return(manufacturer) + allow(win32ole).to receive(:OEMStringArray).and_return('') + end + + let(:query_result) { [win32ole] } + let(:model) { 'Standard PC (i440FX + PIIX, 1996)' } + let(:manufacturer) { 'QEMU' } + + it 'detects virtual machine model' do + expect(Facter::Resolvers::Windows::Virtualization.resolve(:virtual)).to eql('kvm') + end + + it 'detects that is virtual' do + expect(Facter::Resolvers::Windows::Virtualization.resolve(:is_virtual)).to be(true) + end + end + describe '#resolve Physical Machine' do before do allow(win32ole).to receive(:Model).and_return(model)