lib/cloudstack-cli/commands/storage_pool.rb in cloudstack-cli-1.4.1 vs lib/cloudstack-cli/commands/storage_pool.rb in cloudstack-cli-1.4.2
- old
+ new
@@ -3,37 +3,46 @@
desc 'list', 'list storage_pools'
option :zone, desc: "zone name for the storage pool"
option :name, desc: "name of the storage pool"
option :keyword, desc: "list by keyword"
option :state, desc: "filter by state (Up, Maintenance)"
+ option :format, default: "table",
+ enum: %w(table json yaml)
def list
resolve_zone
storage_pools = client.list_storage_pools(options)
if storage_pools.size < 1
say "No storage pools found."
else
- storage_pools = filter_by(storage_pools, "state", options[:state]) if options[:state]
- table = [%w(Name Pod State Zone)]
- table[0] << "Size [GB]"
- table[0] << "Used [GB]"
- table[0] << "Used [%]"
- table[0] << "Alocated [GB]"
- table[0] << "Alocated [%]"
- table[0] << "Type"
- storage_pools.each do |storage_pool|
- total = storage_pool['disksizetotal'] / 1024**3
- used = (storage_pool['disksizeused'] / 1024**3) rescue 0
- allocated = (storage_pool['disksizeallocated'] / 1024**3) rescue 0
- table << [
- storage_pool['name'], storage_pool['podname'],
- storage_pool['state'], storage_pool['zonename'],
- total, used, (100.0 / total * used).round(0),
- allocated, (100.0 / total * allocated).round(0),
- storage_pool['type']
- ]
+ case options[:format].to_sym
+ when :yaml
+ puts({storage_pools: storage_pools}.to_yaml)
+ when :json
+ puts JSON.pretty_generate(storage_pools: storage_pools)
+ else
+ storage_pools = filter_by(storage_pools, "state", options[:state]) if options[:state]
+ table = [%w(Name Pod State Zone)]
+ table[0] << "Size [GB]"
+ table[0] << "Used [GB]"
+ table[0] << "Used [%]"
+ table[0] << "Alocated [GB]"
+ table[0] << "Alocated [%]"
+ table[0] << "Type"
+ storage_pools.each do |storage_pool|
+ total = storage_pool['disksizetotal'] / 1024**3
+ used = (storage_pool['disksizeused'] / 1024**3) rescue 0
+ allocated = (storage_pool['disksizeallocated'] / 1024**3) rescue 0
+ table << [
+ storage_pool['name'], storage_pool['podname'],
+ storage_pool['state'], storage_pool['zonename'],
+ total, used, (100.0 / total * used).round(0),
+ allocated, (100.0 / total * allocated).round(0),
+ storage_pool['type']
+ ]
+ end
+ print_table table
+ say "Total number of storage_pools: #{storage_pools.size}"
end
- print_table table
- say "Total number of storage_pools: #{storage_pools.size}"
end
end
end