Sha256: 5ab94486d35ee20c3288547954488af3739bde0dcb0fc20db4ac2ec89918d16b

Contents?: true

Size: 1.43 KB

Versions: 7

Compression:

Stored size: 1.43 KB

Contents

# frozen_string_literal: true

module Facter
  module Resolvers
    class SolarisZone < BaseResolver
      @log = Facter::Log.new(self)
      @semaphore = Mutex.new
      @fact_list ||= {}
      class << self
        private

        def post_resolve(fact_name)
          @fact_list.fetch(fact_name) { build_zone_fact(fact_name) }
        end

        def build_zone_fact(fact_name)
          return unless File.executable?('/usr/sbin/zoneadm')

          command = '/usr/sbin/zoneadm list -cp'
          zone_adm_output, status = Open3.capture2(command)
          unless status.to_s.include?('exit 0')
            @log.debug("Command #{command} returned status: #{status}")
            return
          end
          if zone_adm_output.empty?
            @log.debug("Command #{command} returned an empty result")
            return
          end
          @fact_list[:zone] = create_zone_facts(zone_adm_output)

          @fact_list[fact_name]
        end

        def create_zone_facts(zones_result)
          zones_fact = []
          zones_result.each_line do |zone_line|
            id, name, status, path, uuid, brand, ip_type = zone_line.split(':')
            zones_fact << {
              brand: brand,
              id: id,
              iptype: ip_type.chomp,
              name: name,
              uuid: uuid,
              status: status,
              path: path

            }
          end
          zones_fact
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
facter-4.0.20 lib/resolvers/solaris/zone_resolver.rb
facter-4.0.19 lib/resolvers/solaris/zone_resolver.rb
facter-4.0.18 lib/resolvers/solaris/zone_resolver.rb
facter-4.0.17 lib/resolvers/solaris/zone_resolver.rb
facter-4.0.16 lib/resolvers/solaris/zone_resolver.rb
facter-4.0.15 lib/resolvers/solaris/zone_resolver.rb
facter-4.0.14 lib/resolvers/solaris/zone_resolver.rb