module GreenHat::Disk

Sidekiq Log Helpers

Public Class Methods

data() click to toggle source
# File lib/greenhat/accessors/disk.rb, line 4
def self.data
  df.map(&:data).flatten.compact
end
df(args = {}) click to toggle source
# File lib/greenhat/accessors/disk.rb, line 23
def self.df(args = {})
  things = Thing.where(name: 'df_h')

  # Host / Archive
  things.select! { |x| x.archive? args.archive } if args.archive

  things
end
format_output(file, name = false, limit = nil, filter = %w[tmpfs loop]) click to toggle source

Unified Output Handler rubocop:disable Metrics/MethodLength

# File lib/greenhat/accessors/disk.rb, line 34
def self.format_output(file, name = false, limit = nil, filter = %w[tmpfs loop])
  output = []

  output << file.friendly_name if name

  # Reject TMPFS
  disks = file.data.sort_by { |x| x.use.to_i }.reverse

  # Filter
  disks.reject! { |x| filter.any? { |y| x.filesystem.include? y } }

  disks = disks[0..limit - 1] if limit

  pad_mount, pad_size, pad_used, pad_avail = GreenHat::Disk.padding(disks)

  # Headers
  output << [
    'Mount'.ljust(pad_mount).pastel(:blue),
    'Size'.ljust(pad_size).pastel(:magenta),
    'Used'.ljust(pad_used).pastel(:cyan),
    'Avail'.ljust(pad_avail).pastel(:white),
    '% Use'.ljust(pad_avail).pastel(:green)
  ].join

  # Table Summary
  disks.map do |disk|
    # Pretty Disk Use
    use = [
      disk.use.rjust(5).ljust(5).pastel(:green),
      '  ['.pastel(:blue),
      ('=' * (disk.use.to_i / 2)).pastel(:green),
      ' ' * (50 - disk.use.to_i / 2),
      ']'.pastel(:blue)
    ].join

    # Whole Thing
    output << [
      disk.mounted_on.ljust(pad_mount).pastel(:blue),
      disk[:size].to_s.ljust(pad_size).pastel(:magenta),
      disk.used.to_s.ljust(pad_used).pastel(:cyan),
      disk.avail.to_s.ljust(pad_avail).pastel(:white),
      use
    ].join
  end

  output
end
max_padding(disks, key = :mounted_on) click to toggle source

Get Max Size

# File lib/greenhat/accessors/disk.rb, line 9
def self.max_padding(disks, key = :mounted_on)
  list = disks.map do |x|
    x.slice(key)
  end

  list.map(&:values).flatten.max_by(&:size).size + 4
end
padding(disks, keys = %i[mounted_on size used avail]) click to toggle source
# File lib/greenhat/accessors/disk.rb, line 17
def self.padding(disks, keys = %i[mounted_on size used avail])
  keys.map do |key|
    max_padding(disks, key)
  end
end