Sha256: 5fecf9a8ab84e777a420c8f5cd631f5649da91fd05e063ea9fd4d93774ae407f

Contents?: true

Size: 1.81 KB

Versions: 20

Compression:

Stored size: 1.81 KB

Contents

require "vmc/cli/v2_check_cli"

module VMC
  module App
    class Base < V2CheckCLI
      # choose the right color for app/instance state
      def state_color(s)
        case s
        when "STARTING"
          :neutral
        when "STARTED", "RUNNING"
          :good
        when "DOWN"
          :bad
        when "FLAPPING"
          :error
        when "N/A"
          :unknown
        else
          :warning
        end
      end

      def app_status(a)
        health = a.health

        if a.debug_mode == "suspend" && health == "0%"
          c("suspended", :neutral)
        else
          c(health.downcase, state_color(health))
        end
      end

      def memory_choices(exclude = 0)
        info = client.info

        usage = info[:usage]
        limit = info[:limits][:memory]

        ceiling =
          if usage
            used = usage[:memory]
            limit - used + exclude
          else
            limit
          end

        mem = 64
        choices = []
        until mem > ceiling
          choices << human_mb(mem)
          mem *= 2
        end

        choices
      end

      def human_mb(num)
        human_size(num * 1024 * 1024, 0)
      end

      def human_size(num, precision = 1)
        sizes = %w(G M K)
        sizes.each.with_index do |suf, i|
          pow = sizes.size - i
          unit = 1024.0 ** pow
          if num >= unit
            return format("%.#{precision}f%s", num / unit, suf)
          end
        end

        format("%.#{precision}fB", num)
      end

      def megabytes(str)
        if str =~ /T$/i
          str.to_i * 1024 * 1024
        elsif str =~ /G$/i
          str.to_i * 1024
        elsif str =~ /M$/i
          str.to_i
        elsif str =~ /K$/i
          str.to_i / 1024
        else # assume megabytes
          str.to_i
        end
      end
    end
  end
end

Version data entries

20 entries across 20 versions & 2 rubygems

Version Path
cloulu-1.0.0 lib/vmc/cli/app/base.rb
cloulu-0.7.0 lib/vmc/cli/app/base.rb
cloulu-0.6.6 lib/vmc/cli/app/base.rb
cloulu-0.6.5 lib/vmc/cli/app/base.rb
cloulu-0.6.1 lib/vmc/cli/app/base.rb
cloulu-0.6.0 lib/vmc/cli/app/base.rb
cloulu-0.5.1 lib/vmc/cli/app/base.rb
cloulu-0.5.0 lib/vmc/cli/app/base.rb
cloulu-0.3.0 lib/vmc/cli/app/base.rb
cloulu-0.2.6 lib/vmc/cli/app/base.rb
cloulu-0.2.5 lib/vmc/cli/app/base.rb
cloulu-0.2.4 lib/vmc/cli/app/base.rb
cloulu-0.2.3 lib/vmc/cli/app/base.rb
cloulu-0.2.1 lib/vmc/cli/app/base.rb
cloulu-0.2.0 lib/vmc/cli/app/base.rb
cloulu-0.1.6 lib/vmc/cli/app/base.rb
cloulu-0.1.5 lib/vmc/cli/app/base.rb
cloulu-0.1.2 lib/vmc/cli/app/base.rb
cloulu-0.1.1 lib/vmc/cli/app/base.rb
vmc-0.5.1 lib/vmc/cli/app/base.rb