Sha256: 07b712f6b852115848ce699d41b512a01c110df9362f7f13bc23a4328fb0c23b

Contents?: true

Size: 1.7 KB

Versions: 36

Compression:

Stored size: 1.7 KB

Contents

class Capacity < CloudstackCli::Base
	CAPACITY_TYPES = {
		0 => {name: "Memory", unit: "GB", divider: 1024.0**3},
		1 => {name: "CPU", unit: "GHz", divider: 1000.0},
		2 => {name: "Storage", unit: "TB", divider: 1024.0**4},
		3 => {name: "Primary Storage", unit: "TB", divider: 1024.0**4},
		4 => {name: "Public IP's"},
		5 => {name: "Private IP's"},
		6 => {name: "Secondary Storage", unit: "TB", divider: 1024.0**4},
		7 => {name: "VLAN"},
		8 => {name: "Direct Attached Public IP's"},
		9 => {name: "Local Storage", unit: "TB", divider: 1024.0**4}
	}

  desc "list", "list system capacity"
  option :zone
  option :type, desc: "specify type, see types for a list of types"
  def list
  	capacities = client.list_capacity(options)
  	table = []
    header = ["Zone", "Type", "Capacity Used", "Capacity Total", "Used"]
    capacities.each do |c|
    	table << [
    		c['zonename'],
    	 	CAPACITY_TYPES[c['type']][:name],
    	 	capacity_to_s(c, 'capacityused'),
    	 	capacity_to_s(c, 'capacitytotal'),
    	 	"#{c['percentused']}%"
    	]
    end
    table = table.sort {|a, b|  [a[0], a[1]] <=> [b[0], b[1]]}.insert(0, header)
    print_table table
  end

  desc "types", "show capacity types"
  def types
    table = [['type', 'name']]
    CAPACITY_TYPES.each_pair do |type, data|
      table << [type, data[:name]]
    end
    print_table table
  end

  no_commands do

    def capacity_to_s(capacity, entity)
      value = CAPACITY_TYPES[capacity['type']][:divider] ? 
        (capacity[entity] / CAPACITY_TYPES[capacity['type']][:divider]).round(1) : 
        capacity[entity]
      CAPACITY_TYPES[capacity['type']][:unit] ? 
        "#{value} #{CAPACITY_TYPES[capacity['type']][:unit]}" :
        value.to_s
    end

  end

end

Version data entries

36 entries across 36 versions & 1 rubygems

Version Path
cloudstack-cli-0.15.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.15.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.14.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.14.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.13.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.13.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.12.3 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.12.2 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.12.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.12.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.11.2 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.11.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.11.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.10.2 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.10.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.10.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.9.1 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.9.0 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.8.3 lib/cloudstack-cli/commands/capacity.rb
cloudstack-cli-0.8.2 lib/cloudstack-cli/commands/capacity.rb