Merge branch 'bugfix/fix-join-to-comments-8616'

fixes #8616
This commit is contained in:
Johannes Meyer 2015-08-11 15:27:51 +02:00
commit 2d7e56c46e
10 changed files with 3 additions and 337 deletions

View File

@ -98,9 +98,6 @@ class Monitoring_HostController extends MonitoredObjectController
'service_notifications_enabled',
'service_action_url',
'service_notes_url',
'service_last_comment',
'service_last_ack',
'service_last_downtime',
'service_active_checks_enabled',
'service_passive_checks_enabled',
'current_check_attempt' => 'service_current_check_attempt',

View File

@ -57,9 +57,7 @@ class Monitoring_HostsController extends Controller
'host_handled',
'host_acknowledged',
'host_in_downtime',
'host_last_ack',
'host_is_flapping',
'host_last_comment',
'host_output',
'host_notifications_enabled',
'host_active_checks_enabled',
@ -96,9 +94,7 @@ class Monitoring_HostsController extends Controller
'host_handled',
'host_acknowledged',
'host_in_downtime',
'host_last_ack',
'host_is_flapping',
'host_last_comment',
'host_output',
'host_notifications_enabled',
'host_active_checks_enabled',

View File

@ -87,9 +87,6 @@ class Monitoring_ListController extends Controller
'host_notifications_enabled',
'host_action_url',
'host_notes_url',
'host_last_comment',
'host_last_ack',
'host_last_downtime',
'host_active_checks_enabled',
'host_passive_checks_enabled',
'host_current_check_attempt',
@ -175,9 +172,6 @@ class Monitoring_ListController extends Controller
'service_notifications_enabled',
'service_action_url',
'service_notes_url',
'service_last_comment',
'service_last_ack',
'service_last_downtime',
'service_active_checks_enabled',
'service_passive_checks_enabled',
'current_check_attempt' => 'service_current_check_attempt',

View File

@ -68,8 +68,6 @@ class Monitoring_ServicesController extends Controller
'service_in_downtime',
'service_is_flapping',
'service_output',
'service_last_ack',
'service_last_comment',
'service_notifications_enabled',
'service_active_checks_enabled',
'service_passive_checks_enabled'
@ -115,8 +113,6 @@ class Monitoring_ServicesController extends Controller
'service_acknowledged',
'service_in_downtime',
'service_is_flapping',
'service_last_comment',
'service_last_ack',
'service_notifications_enabled',
'service_active_checks_enabled',
'service_passive_checks_enabled'

View File

@ -31,9 +31,6 @@ class Zend_View_Helper_HostFlags extends Zend_View_Helper_Abstract
$icons[] = $this->view->icon('eye-off', $this->view->translate('Active Checks Disabled'));
}
}
if (isset($host->host_last_comment) && $host->host_last_comment !== null) {
$icons[] = $this->view->icon('comment', $this->view->translate('Last Comment: ') . $host->host_last_comment);
}
return $icons;
}
}
}

View File

@ -9,12 +9,10 @@ class Zend_View_Helper_ServiceFlags extends Zend_View_Helper_Abstract
$icons[] = $this->view->icon('attention-alt', $this->view->translate('Unhandled'));
}
if ($service->service_acknowledged && !$service->service_in_downtime) {
$icons[] = $this->view->icon('ok', $this->view->translate('Acknowledged') . (
$service->service_last_ack ? ': ' . $service->service_last_ack : ''
));
$icons[] = $this->view->icon('ok', $this->view->translate('Acknowledged'));
}
if ($service->service_is_flapping) {
$icons[] = $this->view->icon('flapping', $this->view->translate('Flapping')) ;
$icons[] = $this->view->icon('flapping', $this->view->translate('Flapping'));
}
if (!$service->service_notifications_enabled) {
$icons[] = $this->view->icon('bell-off-empty', $this->view->translate('Notifications Disabled'));
@ -22,12 +20,6 @@ class Zend_View_Helper_ServiceFlags extends Zend_View_Helper_Abstract
if ($service->service_in_downtime) {
$icons[] = $this->view->icon('plug', $this->view->translate('In Downtime'));
}
if (isset($service->service_last_comment) && $service->service_last_comment !== null) {
$icons[] = $this->view->icon(
'comment',
$this->view->translate('Last Comment: ') . $service->service_last_comment
);
}
if (!$service->service_active_checks_enabled) {
if (!$service->service_passive_checks_enabled) {
$icons[] = $this->view->icon('eye-off', $this->view->translate('Active And Passive Checks Disabled'));

View File

@ -131,18 +131,6 @@ class HoststatusQuery extends IdoQuery
'host_status_update_time' => 'hs.status_update_time',
'host_unhandled' => 'CASE WHEN (hs.problem_has_been_acknowledged + hs.scheduled_downtime_depth) = 0 THEN 1 ELSE 0 END'
),
'lasthostackcomment' => array(
'host_last_ack' => 'hlac.last_ack_data'
),
'lasthostcomment' => array(
'host_last_comment' => 'hlc.last_comment_data'
),
'lasthostdowntimecomment' => array(
'host_last_downtime' => 'hldc.last_downtime_data'
),
'lasthostflappingcomment' => array(
'host_last_flapping' => 'hlfc.last_flapping_data'
),
'servicegroups' => array(
'servicegroup' => 'sgo.name1 COLLATE latin1_general_ci',
'servicegroup_name' => 'sgo.name1',
@ -155,37 +143,6 @@ class HoststatusQuery extends IdoQuery
)
);
/**
* Create a sub query to join comments into status query
*
* @param int $entryType
* @param string $alias
*
* @return Zend_Db_Expr
*/
protected function createLastCommentSubQuery($entryType, $alias)
{
$sql = <<<SQL
SELECT
c.object_id,
'[' || c.author_name || '] ' || c.comment_data AS $alias
FROM
icinga_comments c
INNER JOIN
(
SELECT
MAX(comment_id) AS comment_id,
object_id
FROM
icinga_comments
WHERE
entry_type = $entryType
GROUP BY object_id
) ec ON ec.comment_id = c.comment_id
SQL;
return new Zend_Db_Expr('(' . $sql . ')');
}
/**
* {@inheritdoc}
*/
@ -242,54 +199,6 @@ SQL;
);
}
/**
* Join last host acknowledgement comment
*/
protected function joinLasthostackcomment()
{
$this->select->joinLeft(
array('hlac' => $this->createLastCommentSubQuery(4, 'last_ack_data')),
'hlac.object_id = ho.object_id',
array()
);
}
/**
* Join last host comment
*/
protected function joinLasthostcomment()
{
$this->select->joinLeft(
array('hlc' => $this->createLastCommentSubQuery(1, 'last_comment_data')),
'hlc.object_id = ho.object_id',
array()
);
}
/**
* Join last host downtime comment
*/
protected function joinLasthostdowntimeComment()
{
$this->select->joinLeft(
array('hldc' => $this->createLastCommentSubQuery(2, 'last_downtime_data')),
'hldc.object_id = ho.object_id',
array()
);
}
/**
* Join last host flapping comment
*/
protected function joinLasthostflappingcomment()
{
$this->select->joinLeft(
array('hlfc' => $this->createLastCommentSubQuery(3, 'last_flapping_data')),
'hlfc.object_id = ho.object_id',
array()
);
}
/**
* Join service groups
*/
@ -344,22 +253,6 @@ SQL;
$group[] = 'sps.unhandled_services_count';
}
if ($this->hasJoinedVirtualTable('lasthostackcomment')) {
$group[] = 'hlac.last_ack_data';
}
if ($this->hasJoinedVirtualTable('lasthostcomment')) {
$group[] = 'hlc.last_comment_data';
}
if ($this->hasJoinedVirtualTable('lasthostdowntimecomment')) {
$group[] = 'hldc.last_downtime_data';
}
if ($this->hasJoinedVirtualTable('lasthostflappingcomment')) {
$group[] = 'hlfc.last_flapping_data';
}
if ($this->hasJoinedVirtualTable('hostgroups')) {
$selected = false;
foreach ($this->columns as $alias => $column) {

View File

@ -3,8 +3,6 @@
namespace Icinga\Module\Monitoring\Backend\Ido\Query;
use Zend_Db_Expr;
class StatusQuery extends IdoQuery
{
/**
@ -310,42 +308,6 @@ class StatusQuery extends IdoQuery
ELSE 0
END'
),
'serviceproblemsummary' => array(
'host_unhandled_services' => 'sps.unhandled_services_count'
),
'lasthostcommentgeneric' => array(
'host_last_comment' => 'hlcg.last_comment_data'
),
'lasthostcommentdowntime' => array(
'host_last_downtime' => 'hlcd.last_downtime_data'
),
'lasthostcommentflapping' => array(
'host_last_flapping' => 'hlcf.last_flapping_data'
),
'lasthostcommentack' => array(
'host_last_ack' => 'hlca.last_ack_data'
),
'lastservicecommentgeneric' => array(
'service_last_comment' => 'slcg.last_comment_data'
),
'lastservicecommentdowntime' => array(
'service_last_downtime' => 'slcd.last_downtime_data'
),
'lastservicecommentflapping' => array(
'service_last_flapping' => 'slcf.last_flapping_data'
),
'lastservicecommentack' => array(
'service_last_ack' => 'slca.last_ack_data'
)
);
protected function joinBaseTables()
@ -527,155 +489,4 @@ class StatusQuery extends IdoQuery
return $this;
}
protected function joinServiceproblemsummary()
{
$select = <<<'SQL'
SELECT
SUM(
CASE WHEN(ss.problem_has_been_acknowledged + ss.scheduled_downtime_depth + COALESCE(hs.current_state, 0)) > 0
THEN 0
ELSE 1
END
) AS unhandled_services_count,
SUM(
CASE WHEN (ss.problem_has_been_acknowledged + ss.scheduled_downtime_depth + COALESCE(hs.current_state, 0) ) > 0
THEN 1
ELSE 0
END
) AS handled_services_count,
s.host_object_id
FROM
icinga_servicestatus ss
JOIN icinga_objects o ON o.object_id = ss.service_object_id
JOIN icinga_services s ON s.service_object_id = o.object_id
JOIN icinga_hoststatus hs ON hs.host_object_id = s.host_object_id
WHERE
o.is_active = 1
AND o.objecttype_id = 2
AND ss.current_state > 0
GROUP BY
s.host_object_id
SQL;
$this->select->joinLeft(
array('sps' => new Zend_Db_Expr('(' . $select . ')')),
'sps.host_object_id = hs.host_object_id',
array()
);
}
/**
* Create a subquery to join comments into status query
* @param int $entryType
* @param string $fieldName
* @return Zend_Db_Expr
*/
protected function getLastCommentSubQuery($entryType, $fieldName)
{
$sub = '(SELECT'
. ' c.object_id,'
. " '[' || c.author_name || '] ' || c.comment_data AS $fieldName"
. ' FROM icinga_comments c JOIN ('
. ' SELECT MAX(comment_id) AS comment_id, object_id FROM icinga_comments'
. ' WHERE entry_type = ' . $entryType . ' GROUP BY object_id'
. ' ) lc ON c.comment_id = lc.comment_id)';
return new Zend_Db_Expr($sub);
}
/**
* Join last host comment
*/
protected function joinLasthostcommentgeneric()
{
$this->select->joinLeft(
array('hlcg' => $this->getLastCommentSubQuery(1, 'last_comment_data')),
'hlcg.object_id = hs.host_object_id',
array()
);
}
/**
* Join last host downtime comment
*/
protected function joinLasthostcommentdowntime()
{
$this->select->joinLeft(
array('hlcd' => $this->getLastCommentSubQuery(2, 'last_downtime_data')),
'hlcd.object_id = hs.host_object_id',
array()
);
}
/**
* Join last host flapping comment
*/
protected function joinLastHostcommentflapping()
{
$this->select->joinLeft(
array('hlcf' => $this->getLastCommentSubQuery(3, 'last_flapping_data')),
'hlcf.object_id = hs.host_object_id',
array()
);
}
/**
* Join last host acknowledgement comment
*/
protected function joinLasthostcommentack()
{
$this->select->joinLeft(
array('hlca' => $this->getLastCommentSubQuery(4, 'last_ack_data')),
'hlca.object_id = hs.host_object_id',
array()
);
}
/**
* Join last service comment
*/
protected function joinLastservicecommentgeneric()
{
$this->select->joinLeft(
array('slcg' => $this->getLastCommentSubQuery(1, 'last_comment_data')),
'slcg.object_id = ss.service_object_id',
array()
);
}
/**
* Join last service downtime comment
*/
protected function joinLastservicecommentdowntime()
{
$this->select->joinLeft(
array('slcd' => $this->getLastCommentSubQuery(2, 'last_downtime_data')),
'slcd.object_id = ss.service_object_id',
array()
);
}
/**
* Join last service flapping comment
*/
protected function joinLastservicecommentflapping()
{
$this->select->joinLeft(
array('slcf' => $this->getLastCommentSubQuery(3, 'last_flapping_data')),
'slcf.object_id = ss.service_object_id',
array()
);
}
/**
* Join last service acknowledgement comment
*/
protected function joinLastservicecommentack()
{
$this->select->joinLeft(
array('slca' => $this->getLastCommentSubQuery(4, 'last_ack_data')),
'slca.object_id = ss.service_object_id',
array()
);
}
}

View File

@ -33,7 +33,6 @@ class HostStatus extends DataView
'host_check_command',
'host_perfdata',
'host_check_source',
'host_unhandled_services',
'host_passive_checks_enabled',
'host_passive_checks_enabled_changed',
'host_obsessing',
@ -52,10 +51,6 @@ class HostStatus extends DataView
'host_current_notification_number',
'host_percent_state_change',
'host_is_flapping',
'host_last_comment',
'host_last_downtime',
'host_last_ack',
'host_last_flapping',
'host_action_url',
'host_notes_url',
'host_percent_state_change',

View File

@ -49,10 +49,6 @@ class ServiceStatus extends DataView
'service_notifications_enabled_changed',
'service_action_url',
'service_notes_url',
'service_last_comment',
'service_last_downtime',
'service_last_flapping',
'service_last_ack',
'service_last_check',
'service_next_check',
'service_attempt',
@ -69,7 +65,6 @@ class ServiceStatus extends DataView
'host_unhandled_service_count',
'host_action_url',
'host_notes_url',
'host_last_comment',
'host_display_name',
'host_alias',
'host_ipv4',