Project

General

Profile

Download (1.94 KB) Statistics
| Branch: | Tag: | Revision:
class Dashboard

attr_reader :report
# returns a status hash
def self.status(filter="")
new(filter).report
end

def initialize(filter="")
@filter = filter
@report = {}
fetch_data
end

def hosts
@hosts ||= Host.authorized(:view_hosts, Host).search_for(filter)
end

private
attr_writer :report
attr_accessor :filter
def fetch_data
report.update({
:total_hosts => hosts.count,
:bad_hosts => hosts.recent.with_error.count,
:bad_hosts_enabled => hosts.recent.with_error.alerts_enabled.count,
:active_hosts => hosts.recent.with_changes.count,
:active_hosts_ok => hosts.recent.with_changes.without_error.count,
:active_hosts_ok_enabled => hosts.recent.with_changes.without_error.alerts_enabled.count,
:ok_hosts => hosts.recent.successful.count,
:ok_hosts_enabled => hosts.recent.successful.alerts_enabled.count,
:out_of_sync_hosts => hosts.out_of_sync.count,
:out_of_sync_hosts_enabled => hosts.out_of_sync.alerts_enabled.count,
:disabled_hosts => hosts.alerts_disabled.count,
:pending_hosts => hosts.recent.with_pending_changes.count,
:pending_hosts_enabled => hosts.recent.with_pending_changes.alerts_enabled.count,
})
report[:good_hosts] = report[:ok_hosts] + report[:active_hosts_ok]
report[:good_hosts_enabled] = report[:ok_hosts_enabled] + report[:active_hosts_ok_enabled]
report[:percentage] = percentage
report[:reports_missing] = reports_missing
end

def percentage
return 0 if report[:ok_hosts_enabled] == 0 or report[:total_hosts] == 0
report[:ok_hosts_enabled] * 100 / report[:total_hosts]
end

def reports_missing
hosts.search_for('not has last_report and status.enabled = true').count
end

end
(4-4/15)