lib/cloudstack-cli/commands/snapshot.rb in cloudstack-cli-1.4.1 vs lib/cloudstack-cli/commands/snapshot.rb in cloudstack-cli-1.4.2
- old
+ new
@@ -4,27 +4,36 @@
option :account, desc: "the account associated with the snapshot"
option :project, desc: "the project associated with the snapshot"
option :domain, desc: "the domain name of the snapshot's account"
option :listall, default: true, desc: "list all resources the caller has rights on"
option :state, desc: "filter snapshots by state"
+ option :format, default: "table",
+ enum: %w(table json yaml)
def list
resolve_account
resolve_project
resolve_domain
snapshots = client.list_snapshots(options)
if snapshots.size < 1
say "No snapshots found."
else
- table = [%w(Account Name Volume Created Type State)]
- snapshots = filter_by(snapshots, :state, options[:state]) if options[:state]
- snapshots.each do |snapshot|
- table << [
- snapshot['account'], snapshot['name'], snapshot['volumename'],
- snapshot['created'], snapshot['snapshottype'], snapshot['state']
- ]
+ case options[:format].to_sym
+ when :yaml
+ puts({snapshots: snapshots}.to_yaml)
+ when :json
+ puts JSON.pretty_generate(snapshots: snapshots)
+ else
+ table = [%w(Account Name Volume Created Type State)]
+ snapshots = filter_by(snapshots, :state, options[:state]) if options[:state]
+ snapshots.each do |snapshot|
+ table << [
+ snapshot['account'], snapshot['name'], snapshot['volumename'],
+ snapshot['created'], snapshot['snapshottype'], snapshot['state']
+ ]
+ end
+ print_table table
+ say "Total number of snapshots: #{snapshots.size}"
end
- print_table table
- say "Total number of snapshots: #{snapshots.size}"
end
end
end