class Facter::Resolvers::Macosx::Mountpoints

Private Class Methods

post_resolve(fact_name, _options) click to toggle source
# File lib/facter/resolvers/macosx/mountpoints.rb, line 13
def post_resolve(fact_name, _options)
  @fact_list.fetch(fact_name) { read_mounts }
end
read_mounts() click to toggle source
# File lib/facter/resolvers/macosx/mountpoints.rb, line 17
def read_mounts
  mounts = {}
  begin
    Facter::Util::Resolvers::FilesystemHelper.read_mountpoints.each do |fs|
      device = fs.name
      filesystem = fs.mount_type
      path = fs.mount_point
      options = read_options(fs.options)

      mounts[path] = read_stats(path).tap do |hash|
        hash[:device] = device
        hash[:filesystem] = filesystem
        hash[:options] = options if options.any?
      end
    end
  rescue LoadError => e
    @log.debug("Could not read mounts: #{e}")
  end

  @fact_list[:mountpoints] = mounts
end
read_options(options) click to toggle source
# File lib/facter/resolvers/macosx/mountpoints.rb, line 60
def read_options(options)
  options_map = {
    'read-only' => 'readonly',
    'asynchronous' => 'async',
    'synchronous' => 'noasync',
    'quotas' => 'quota',
    'rootfs' => 'root',
    'defwrite' => 'deferwrites'
  }

  options.split(',').map(&:strip).map { |o| options_map.key?(o) ? options_map[o] : o }
end
read_stats(path) click to toggle source
# File lib/facter/resolvers/macosx/mountpoints.rb, line 39
def read_stats(path)
  begin
    stats = Facter::Util::Resolvers::FilesystemHelper.read_mountpoint_stats(path)
    size_bytes = stats.bytes_total
    available_bytes = stats.bytes_available
    used_bytes = size_bytes - available_bytes
  rescue Sys::Filesystem::Error, LoadError
    size_bytes = used_bytes = available_bytes = 0
  end

  {
    size_bytes: size_bytes,
    used_bytes: used_bytes,
    available_bytes: available_bytes,
    capacity: Facter::Util::Resolvers::FilesystemHelper.compute_capacity(used_bytes, size_bytes),
    size: Facter::Util::Facts::UnitConverter.bytes_to_human_readable(size_bytes),
    available: Facter::Util::Facts::UnitConverter.bytes_to_human_readable(available_bytes),
    used: Facter::Util::Facts::UnitConverter.bytes_to_human_readable(used_bytes)
  }
end