Livestatus\StatusSummaryQuery: initial implementation

This commit is contained in:
Thomas Gelf 2014-11-16 17:12:25 +01:00
parent b2a55f0998
commit 42efbf0892
1 changed files with 65 additions and 0 deletions

View File

@ -0,0 +1,65 @@
<?php
// {{{ICINGA_LICENSE_HEADER}}}
// {{{ICINGA_LICENSE_HEADER}}}
namespace Icinga\Module\Monitoring\Backend\Livestatus\Query;
use Icinga\Protocol\Livestatus\Query;
use Icinga\Exception\ProgrammingError;
class StatusSummaryQuery extends Query
{
protected $table = 'services';
protected $available_columns = array(
'service_host_name' => 'host_name',
'services_total' => 'state != 9999',
'services_problem' => 'state > 0',
'services_problem_handled' => 'state > 0 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)',
'services_problem_unhandled' => 'state > 0 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0',
'services_ok' => 'state = 0',
'services_ok_not_checked' => 'state = 0 & accept_passive_checks = 0 & active_checks_enabled = 0',
'services_pending' => 'has_been_checked = 0',
'services_pending_not_checked' => 'has_been_checked = 0 & accept_passive_checks = 0 & active_checks_enabled = 0',
'services_warning' => 'state = 1',
'services_warning_handled' => 'state = 1 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)',
'services_warning_unhandled' => 'state = 1 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0',
'services_warning_passive' => 'state = 1 & accept_passive_checks = 1 & active_checks_enabled = 0',
'services_warning_not_checked' => 'state = 1 & accept_passive_checks = 0 & active_checks_enabled = 0',
'services_critical' => 'state = 2',
'services_critical_handled' => 'state = 2 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)',
'services_critical_unhandled' => 'state = 2 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0',
'services_critical_passive' => 'state = 2 & accept_passive_checks = 1 & active_checks_enabled = 0',
'services_critical_not_checked' => 'state = 2 & accept_passive_checks = 0 & active_checks_enabled = 0',
'services_unknown' => 'state = 3',
'services_unknown_handled' => 'state = 3 & (scheduled_downtime_depth > 0 | acknowledged = 1 | host_state > 0)',
'services_unknown_unhandled' => 'state = 3 & scheduled_downtime_depth = 0 & acknowledged = 0 & host_state = 0',
'services_unknown_passive' => 'state = 3 & accept_passive_checks = 1 & active_checks_enabled = 0',
'services_unknown_not_checked' => 'state = 3 & accept_passive_checks = 0 & active_checks_enabled = 0',
'services_active' => 'active_checks_enabled = 1',
'services_passive' => 'accept_passive_checks = 1 & active_checks_enabled = 0',
'services_not_checked' => 'active_checks_enabled = 0 & accept_passive_checks = 0',
);
protected function columnsToString()
{
$parts = array();
foreach ($this->columns as $col) {
if (! array_key_exists($col, $this->available_columns)) {
throw new ProgrammingError('No such column: %s', $col);
}
$filter = $this->filterStringToFilter($this->available_columns[$col]);
//Filter::fromQueryString(str_replace(' ', '', $this->available_columns[$col]));
$parts[] = $this->renderFilter( $filter, 'Stats', 0, false);
}
$this->preparedHeaders = $this->columns;
return implode("\n", $parts);
}
protected function renderkkFilter($filter, $type = 'Filter', $level = 0, $keylookup = true)
{
return parent::renderFilter($filter, 'Stats', $level, $keylookup);
}
}