app/services/dashboard_service.rb
class DashboardService
def display_precision
0
end
def graph_precision
0
end
def format_utilization_data(used_cpu, used_mem, total_cpu, total_mem)
{
:cpu => used_cpu.any? ? format_cpu(used_cpu, total_cpu) : nil,
:memory => used_mem.any? ? format_memory(used_mem, total_mem) : nil,
}
end
def format_cpu(used, total)
{
:dataAvailable => true,
:used => cpu_num(used.values.last).round(display_precision),
:total => cpu_num(total.values.last).round(0),
:xData => used.keys,
:yData => used.values.map { |v| cpu_num(v).round(graph_precision) },
}
end
def cpu_num(val)
(val || 0)
end
def format_memory(used, total)
{
:dataAvailable => true,
:used => mem_num(used.values.last).round(display_precision),
:total => mem_num(total.values.last).round(0),
:xData => used.keys,
:yData => used.values.map { |v| mem_num(v).round(graph_precision) },
}
end
def mem_num(val)
((val || 0) / 1024.0)
end
def get_icon(ems)
ActionController::Base.helpers.image_path(ems.decorate.fileicon)
end
def get_url_to_entity(controller, entity, ems_id = nil, ems = nil)
if controller.present?
if ems_id.present?
controller.polymorphic_url(ems, :display => entity.to_s.pluralize)
else
controller.url_for_only_path(:action => 'show_list',
:controller => entity.to_sym)
end
end
end
def format_data(resource, attributes, attr_icon, attr_url, attr_hsh)
attr_data = []
attributes.each do |attr|
attr_data.push(
:id => "#{attr_hsh[attr]}_#{@record_id}",
:iconClass => attr_icon[attr],
:title => attr_hsh[attr],
:count => @record.send(attr).count,
:href => get_url(resource, @record_id, attr_url[attr])
)
end
attr_data
end
def status_data
{
:iconImage => get_icon(@record),
:largeIcon => true,
}
end
end