Sha256: 7f248da575c16aa4703f2dc99e08a23e78a160fda591e382667a3d3465c20430

Contents?: true

Size: 808 Bytes

Versions: 1

Compression:

Stored size: 808 Bytes

Contents

module LitmusPaper
  module Metric
    class AvailableMemory
      MULTIPLIER = {
        "GB" => 1024*1024*1024,
        "MB" => 1024*1024,
        "KB" => 1024
      }

      def initialize(weight, facter = DeferredFacter)
        @weight = weight
        @facter = facter
      end

      def current_health
        @weight * memory_free / memory_total
      end

      def memory_total
        return @memory_total unless @memory_total.nil?

        size, scale = @facter.value('memorytotal').split(' ')
        @memory_total = (size.to_f * MULTIPLIER[scale]).to_i
      end

      def memory_free
        size, scale = @facter.value('memoryfree').split(' ')
        (size.to_f * MULTIPLIER[scale]).to_i
      end

      def to_s
        "Metric::AvailableMemory(#{@weight})"
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
litmus_paper-0.2.2 lib/litmus_paper/metric/available_memory.rb