Sha256: eccf1152842369e43cfa17e617e8023d26202536676d7dd68f3bd2184c172d01

Contents?: true

Size: 1.54 KB

Versions: 10

Compression:

Stored size: 1.54 KB

Contents

# frozen_string_literal: true

module Facts
  module Solaris
    class Virtual
      FACT_NAME = 'virtual'

      def initialize
        @log = Facter::Log.new(self)
      end

      def call_the_resolver
        @log.debug('Solaris Virtual Resolver')

        fact_value = check_ldom || check_zone || check_xen || check_other_facts || 'physical'

        @log.debug("Fact value is: #{fact_value}")

        Facter::ResolvedFact.new(FACT_NAME, fact_value)
      end

      def check_ldom
        @log.debug('Checking LDoms')
        return unless Facter::Resolvers::Solaris::Ldom.resolve(:role_control) == 'false'

        Facter::Resolvers::Solaris::Ldom.resolve(:role_impl)
      end

      def check_zone
        @log.debug('Checking LDoms')
        zone_name = Facter::Resolvers::Solaris::ZoneName.resolve(:current_zone_name)

        return if zone_name == 'global'

        'zone'
      end

      def check_xen
        @log.debug('Checking XEN')
        Facter::Resolvers::Xen.resolve(:vm)
      end

      def check_other_facts
        isa = Facter::Resolvers::Uname.resolve(:processor)
        klass = isa == 'sparc' ? 'DmiSparc' : 'Dmi'

        product_name = Facter::Resolvers::Solaris.const_get(klass).resolve(:product_name)
        bios_vendor = Facter::Resolvers::Solaris.const_get(klass).resolve(:bios_vendor)

        return 'kvm' if bios_vendor&.include?('Amazon EC2')

        return unless product_name

        Facter::FactsUtils::HYPERVISORS_HASH.each { |key, value| return value if product_name.include?(key) }

        nil
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
facter-4.0.46 lib/facter/facts/solaris/virtual.rb
facter-4.0.44 lib/facter/facts/solaris/virtual.rb
facter-4.0.43 lib/facter/facts/solaris/virtual.rb
facter-4.0.42 lib/facter/facts/solaris/virtual.rb
facter-4.0.41 lib/facter/facts/solaris/virtual.rb
facter-4.0.40 lib/facter/facts/solaris/virtual.rb
facter-4.0.39 lib/facter/facts/solaris/virtual.rb
facter-4.0.38 lib/facter/facts/solaris/virtual.rb
facter-4.0.37 lib/facter/facts/solaris/virtual.rb
facter-4.0.36 lib/facter/facts/solaris/virtual.rb