Sha256: cb2ef262213da7a955ca1fc9d10adf8c49e0a4fee2083bc823f65bfc429ba03e

Contents?: true

Size: 1.03 KB

Versions: 5

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module Facter
  module Resolvers
    module Openbsd
      class Virtual < BaseResolver
        init_resolver

        class << self
          # :model

          VM_GUEST_SYSCTL_NAMES = {
            'VMM' => 'vmm',
            'vServer' => 'vserver',
            'oracle' => 'virtualbox',
            'xen' => 'xenu',
            'none' => nil
          }.freeze

          private

          def post_resolve(fact_name, _options)
            @fact_list.fetch(fact_name) { read_facts(fact_name) }
          end

          CTL_HW = 6
          HW_PRODUCT = 15

          def read_facts(fact_name)
            require 'facter/resolvers/bsd/ffi/ffi_helper'

            vm = Facter::Bsd::FfiHelper.sysctl(:string, [CTL_HW, HW_PRODUCT])
            vm = if VM_GUEST_SYSCTL_NAMES.key?(vm)
                   VM_GUEST_SYSCTL_NAMES[vm]
                 else
                   'physical'
                 end
            @fact_list[:vm] = vm
            @fact_list[fact_name]
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
facter-4.10.0 lib/facter/resolvers/openbsd/virtual.rb
facter-4.9.0 lib/facter/resolvers/openbsd/virtual.rb
facter-4.8.0 lib/facter/resolvers/openbsd/virtual.rb
facter-4.7.1 lib/facter/resolvers/openbsd/virtual.rb
facter-4.7.0 lib/facter/resolvers/openbsd/virtual.rb