Sha256: 927cc530e317d265452cb6b4f7e04888f63b1cb0e8b91c17c5ed10d7231bf716

Contents?: true

Size: 1.57 KB

Versions: 18

Compression:

Stored size: 1.57 KB

Contents

require "vmc/cli/app/base"

module VMC::App
  class Stats < Base
    desc "Display application instance status"
    group :apps, :info
    input :app, :desc => "Application to get the stats for",
          :argument => true, :from_given => by_name(:app)
    def stats
      app = input[:app]

      stats =
        with_progress("Getting stats for #{c(app.name, :name)}") do |s|
          begin
            app.stats
          rescue CFoundry::StatsError
            s.fail do
              err "Application #{b(app.name)} is not running."
              return
            end
          end
        end

      line unless quiet?

      table(
        %w{instance cpu memory disk},
        stats.sort_by { |idx, _| idx.to_i }.collect { |idx, info|
          idx = c("\##{idx}", :instance)

          if info[:state] == "DOWN"
            [idx, c("down", :bad)]
          else
            stats = info[:stats]
            usage = stats[:usage]

            if usage
              [ idx,
                "#{percentage(usage[:cpu])}",
                "#{usage(usage[:mem], stats[:mem_quota])}",
                "#{usage(usage[:disk], stats[:disk_quota])}"
              ]
            else
              [idx, c("n/a", :neutral)]
            end
          end
        })
    end

    def percentage(num, low = 50, mid = 70)
      color =
        if num <= low
          :good
        elsif num <= mid
          :warning
        else
          :bad
        end

      c(format("%.1f\%", num), color)
    end

    def usage(used, limit)
      "#{b(human_size(used))} of #{b(human_size(limit, 0))}"
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

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