Sha256: bc49658321bceb1d968b199994972edd8ce302504c46c45d53fc102db5864a32

Contents?: true

Size: 1.06 KB

Versions: 7

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Facter
  module Resolvers
    module Freebsd
      class Virtual < BaseResolver
        init_resolver

        class << self
          # :model

          VM_GUEST_SYSCTL_NAMES = {
            'hv' => 'hyperv',
            'microsoft' => 'hyperv',
            'oracle' => 'virtualbox',
            'xen' => 'xenu',
            'none' => nil
          }.freeze

          private

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

          def read_facts(fact_name)
            require_relative 'ffi/ffi_helper'

            if Facter::Freebsd::FfiHelper.sysctl_by_name(:long, 'security.jail.jailed').zero?
              vm = Facter::Freebsd::FfiHelper.sysctl_by_name(:string, 'kern.vm_guest')

              vm = VM_GUEST_SYSCTL_NAMES[vm] if VM_GUEST_SYSCTL_NAMES.key?(vm)

              @fact_list[:vm] = vm
            else
              @fact_list[:vm] = 'jail'
            end

            @fact_list[fact_name]
          end
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
facter-4.10.0 lib/facter/resolvers/freebsd/virtual.rb
facter-4.9.0 lib/facter/resolvers/freebsd/virtual.rb
facter-4.8.0 lib/facter/resolvers/freebsd/virtual.rb
facter-4.7.1 lib/facter/resolvers/freebsd/virtual.rb
facter-4.7.0 lib/facter/resolvers/freebsd/virtual.rb
facter-4.6.1 lib/facter/resolvers/freebsd/virtual.rb
facter-4.6.0 lib/facter/resolvers/freebsd/virtual.rb