Sha256: 9c429b30165ae54037c5e1fbc78431ccc6b56dbaab513506a75c6cc09f3336eb

Contents?: true

Size: 1.92 KB

Versions: 5

Compression:

Stored size: 1.92 KB

Contents

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.my_hosts.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

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
foreman_discovery-1.0.0 test/foreman_app/app/models/dashboard.rb
foreman_discovery-1.0.0.rc4 test/foreman_app/app/models/dashboard.rb
foreman_discovery-1.0.0.rc3 test/foreman_app/app/models/dashboard.rb
foreman_discovery-1.0.0.rc2 test/foreman_app/app/models/dashboard.rb
foreman_discovery-1.0.0.rc1 test/foreman_app/app/models/dashboard.rb