class Egi::Fedcloud::Vmhound::Formatter
Constants
- FORMATS
- LINE_SEPARATOR
- RECORD_SEPARATOR
Public Class Methods
as_json(data, opts = {})
click to toggle source
# File lib/egi/fedcloud/vmhound/formatter.rb, line 35 def as_json(data, opts = {}) Egi::Fedcloud::Vmhound::Log.debug "[#{self}] Transforming #{data.inspect} into a JSON document" return '{}' if data.blank? JSON.generate(data) end
as_plain(data, opts = {})
click to toggle source
# File lib/egi/fedcloud/vmhound/formatter.rb, line 43 def as_plain(data, opts = {}) Egi::Fedcloud::Vmhound::Log.debug "[#{self}] Transforming #{data.inspect} into plain text" return '' if data.blank? lines = {} data.each do |vm| Egi::Fedcloud::Vmhound::Log.warn "[#{self}] #{vm[:owner][:name]} doesn't " \ "have a contact e-mail! VM[#{vm[:id]}]" if vm[:owner][:email].blank? next if vm[:owner][:email].blank? line_key = "\"#{vm[:owner][:name]} in #{vm[:owner][:groups].first}\" <#{vm[:owner][:email]}>" lines[line_key] ||= [] lines[line_key] << "#{vm[:id]} is #{vm[:state]} on #{vm[:host]}" end plain = [] lines.each_pair do |line_key, line_vals| plain << "#{line_key}: #{line_vals.count} VMs#{LINE_SEPARATOR}#{line_vals.join LINE_SEPARATOR}" end plain.join RECORD_SEPARATOR end
as_table(data, opts = {})
click to toggle source
# File lib/egi/fedcloud/vmhound/formatter.rb, line 12 def as_table(data, opts = {}) Egi::Fedcloud::Vmhound::Log.debug "[#{self}] Transforming #{data.inspect} into a table" data ||= [] table = Terminal::Table.new table.add_row [ ' >>> VM ID <<< ', ' >>> Group <<< ', ' >>> Contact <<< ', ' >>> Host <<< ', ' >>> State <<< ', ] table.add_separator data.each do |vm| table.add_separator table.add_row [ vm[:id], vm[:group], vm[:owner][:email], vm[:host], vm[:state] ] end table end