Sha256: da85d9fbfdbfcc14256dd0260bf84adaffb5956a5be38c580228d4a785bcd1fc

Contents?: true

Size: 1.71 KB

Versions: 37

Compression:

Stored size: 1.71 KB

Contents

# frozen_string_literal: true

module Facts
  module Solaris
    class Ldom
      FACT_NAME = 'ldom'
      ALIASES = %w[
        ldom_domainchassis
        ldom_domaincontrol
        ldom_domainname
        ldom_domainrole_control
        ldom_domainrole_impl
        ldom_domainrole_io
        ldom_domainrole_root
        ldom_domainrole_service
        ldom_domainuuid
      ].freeze

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

      def call_the_resolver
        @log.debug('Solving the ldom fact.')
        fact_value = resolve_fact
        return Facter::ResolvedFact.new(FACT_NAME, nil) if fact_value.nil?

        create_resolved_facts_list(fact_value)
      end

      def resolve_fact
        chassis_serial = resolve(:chassis_serial)
        return nil if !chassis_serial || chassis_serial.empty?

        {
          domainchassis: chassis_serial,
          domaincontrol: resolve(:control_domain),
          domainname: resolve(:domain_name),
          domainrole: {
            control: resolve(:role_control),
            impl: resolve(:role_impl),
            io: resolve(:role_io),
            root: resolve(:role_root),
            service: resolve(:role_service)
          },
          domainuuid: resolve(:domain_uuid)
        }
      end

      def resolve(key)
        Facter::Resolvers::Solaris::Ldom.resolve(key)
      end

      def create_resolved_facts_list(fact_value)
        resolved_facts = [Facter::ResolvedFact.new(FACT_NAME, fact_value)]
        ALIASES.each do |fact_alias|
          key = fact_alias.split('_')[1..-1].map!(&:to_sym)
          resolved_facts << Facter::ResolvedFact.new(fact_alias, fact_value.dig(*key), :legacy)
        end

        resolved_facts
      end
    end
  end
end

Version data entries

37 entries across 37 versions & 1 rubygems

Version Path
facter-4.10.0 lib/facter/facts/solaris/ldom.rb
facter-4.9.0 lib/facter/facts/solaris/ldom.rb
facter-4.8.0 lib/facter/facts/solaris/ldom.rb
facter-4.7.1 lib/facter/facts/solaris/ldom.rb
facter-4.7.0 lib/facter/facts/solaris/ldom.rb
facter-4.5.2 lib/facter/facts/solaris/ldom.rb
facter-4.5.1 lib/facter/facts/solaris/ldom.rb
facter-4.5.0 lib/facter/facts/solaris/ldom.rb
facter-4.4.3 lib/facter/facts/solaris/ldom.rb
facter-4.4.2 lib/facter/facts/solaris/ldom.rb
facter-4.4.1 lib/facter/facts/solaris/ldom.rb
facter-4.4.0 lib/facter/facts/solaris/ldom.rb
facter-4.3.1 lib/facter/facts/solaris/ldom.rb
facter-4.3.0 lib/facter/facts/solaris/ldom.rb
facter-4.2.14 lib/facter/facts/solaris/ldom.rb
facter-4.2.13 lib/facter/facts/solaris/ldom.rb
facter-4.2.12 lib/facter/facts/solaris/ldom.rb
facter-4.2.11 lib/facter/facts/solaris/ldom.rb
facter-4.2.10 lib/facter/facts/solaris/ldom.rb
facter-4.2.9 lib/facter/facts/solaris/ldom.rb