Skip to content
This repository has been archived by the owner on Jan 15, 2019. It is now read-only.

Commit

Permalink
Merge branch 'mfrosch/pendingstates' into next
Browse files Browse the repository at this point in the history
(refs #2602)
  • Loading branch information
lazyfrosch committed Mar 13, 2013
2 parents ee2ab4e + 9f92627 commit 898005f
Show file tree
Hide file tree
Showing 10 changed files with 101 additions and 41 deletions.
33 changes: 25 additions & 8 deletions app/modules/Api/config/views/host.xml
Expand Up @@ -13,11 +13,9 @@
oh.name1 AS HOST_NAME,
h.alias AS HOST_ALIAS,
h.display_name AS HOST_DISPLAY_NAME,
hs.current_state AS HOST_CURRENT_STATE,
hs.current_state AS HOST_STATUS,
COALESCE(hs.current_state,0) AS HOST_CURRENT_STATE,
COALESCE(hs.current_state,0) AS HOST_STATUS,
hs.last_hard_state AS HOST_HARD_STATE,
hs.current_state
AS host_status,
(CASE WHEN hs.last_state_change<='1970-01-01 00:00:00' THEN ps.program_start_time ELSE hs.last_state_change END) as DURATION_START,
hs.last_check AS HOST_LAST_CHECK,
hs.next_check AS HOST_NEXT_CHECK,
Expand All @@ -33,11 +31,11 @@
h.action_url AS HOST_ACTION_URL,
h.notes as HOST_NOTES,
h.notes_url AS HOST_NOTES_URL,
(hs.has_been_checked-1)*-1 as HOST_IS_PENDING,
((COALESCE(hs.has_been_checked,0)-1)*-1) as HOST_IS_PENDING,
hs.notifications_enabled as notifications_enabled,
hs.problem_has_been_acknowledged as problem_acknowledged,
hs.scheduled_downtime_depth as scheduled_downtime_depth,
hs.has_been_checked as host_has_been_checked
COALESCE(hs.has_been_checked,0) AS host_has_been_checked
FROM IcingaHosts h
LEFT JOIN h.instance i
LEFT JOIN h.status hs
Expand Down Expand Up @@ -134,10 +132,29 @@
<select>osg.object_id AS servicegroup_object_id</select>
</filter>


<!--
the following filters has been changed/introduced to
allow missing initial states to show up
as pending (#3844 #3838)
-->
<filter name="host_is_pending" type="dql">
<!--
<resolve>((hs.has_been_checked-1)*-1)</resolve>
<select>((hs.has_been_checked-1)*-1) AS host_is_pending</select>
-->
<resolve>((COALESCE(hs.has_been_checked,0)-1)*-1)</resolve>
</filter>

<filter name="host_has_been_checked" type="dql">
<resolve>COALESCE(hs.has_been_checked,0)</resolve>
</filter>

<filter name="host_status" type="dql">
<resolve>COALESCE(hs.current_state,0)</resolve>
</filter>

<filter name="host_current_state" type="dql">
<resolve>COALESCE(hs.current_state,0)</resolve>
</filter>
</dql>

Expand Down Expand Up @@ -172,7 +189,7 @@
hs.has_been_checked as host_has_been_checked
FROM IcingaHosts h
INNER JOIN h.instance i
INNER JOIN h.status hs WITH
LEFT JOIN h.status hs WITH
(
hs.current_state != 0 AND
hs.problem_has_been_acknowledged = 0 AND
Expand Down
12 changes: 6 additions & 6 deletions app/modules/Api/config/views/hostgroups.xml
Expand Up @@ -14,16 +14,16 @@
hg.hostgroup_id AS hostgroup_id,
i.instance_id AS instance_id,
i.instance_name AS instance_name,
COUNT(hs.current_state) AS host_status_count,
hs.current_state AS host_current_state,
hs.current_state AS host_status,
hs.has_been_checked as host_has_been_checked
COUNT(COALESCE(hs.current_state,0)) AS host_status_count,
COALESCE(hs.current_state,0) AS host_current_state,
COALESCE(hs.current_state,0) AS host_status,
COALESCE(hs.has_been_checked,0) as host_has_been_checked
FROM IcingaHostgroups hg
INNER JOIN hg.instance i
INNER JOIN hg.object o
INNER JOIN hg.members hgm
INNER JOIN hgm.status hs
INNER JOIN hs.host h
LEFT JOIN hgm.status hs
LEFT JOIN hs.host h
GROUP BY hs.current_state, o.name1,
hg.alias, hg.hostgroup_id, i.instance_id, i.instance_name,
Expand Down
4 changes: 2 additions & 2 deletions app/modules/Api/config/views/overview.xml
Expand Up @@ -177,8 +177,8 @@
) AS service_checks_disabled
FROM IcingaServices s
INNER JOIN s.host h
INNER JOIN h.status hs
INNER JOIN s.status ss
LEFT JOIN h.status hs
LEFT JOIN s.status ss
]]>
</query>

Expand Down
39 changes: 32 additions & 7 deletions app/modules/Api/config/views/service.xml
Expand Up @@ -17,11 +17,11 @@
os.name2 AS SERVICE_NAME,
s.display_name AS SERVICE_DISPLAY_NAME,
ss.process_performance_data AS SERVICE_PROCESS_PERFORMANCE_DATA,
ss.current_state AS SERVICE_CURRENT_STATE,
ss.current_state AS SERVICE_STATUS,
COALESCE(ss.current_state,0) AS SERVICE_CURRENT_STATE,
COALESCE(ss.current_state,0) AS SERVICE_STATUS,
ss.last_hard_state AS SERVICE_HARD_STATE,
hs.last_hard_state AS HOST_HARD_STATE,
hs.current_state AS HOST_CURRENT_STATE,
COALESCE(hs.current_state,0) AS HOST_CURRENT_STATE,
(CASE WHEN ss.last_state_change<='1970-01-01 00:00:00' THEN ps.program_start_time ELSE ss.last_state_change END) as DURATION_START,
ps.program_start_time AS SERVICE_PROGRAM_START_TIME,
ss.last_check AS SERVICE_LAST_CHECK,
Expand All @@ -40,12 +40,12 @@
h.notes_url AS HOST_NOTES_URL,
s.notes as SERVICE_NOTES,
s.notes_url AS SERVICE_NOTES_URL,
ss.has_been_checked as service_has_been_checked
COALESCE(ss.has_been_checked,0) as service_has_been_checked
FROM IcingaServices s
INNER JOIN s.instance i
INNER JOIN s.status ss
LEFT JOIN s.status ss
INNER JOIN s.host h
INNER JOIN h.status hs
LEFT JOIN h.status hs
INNER JOIN h.object oh
INNER JOIN s.object os
INNER JOIN i.programstatus as ps
Expand Down Expand Up @@ -154,9 +154,34 @@
<select>osg.object_id AS servicegroup_object_id</select>
</filter>

<!--
the following filters has been changed/introduced to
allow missing initial states to show up
as pending (#3844 #3838)
-->
<filter name="service_is_pending" type="dql">
<!--
<resolve>((ss.has_been_checked-1)*-1)</resolve>
<select>(ss.has_been_checked-1)*-1 AS service_is_pending</select>
-->
<resolve>(CASE WHEN ss.has_been_checked IS NULL THEN 1 ELSE (ss.has_been_checked-1)*-1 END)</resolve>
<select>(CASE WHEN ss.has_been_checked IS NULL THEN 1 ELSE (ss.has_been_checked-1)*-1 END) AS service_is_pending</select>
</filter>

<filter name="service_has_been_checked" type="dql">
<resolve>COALESCE(ss.has_been_checked,0)</resolve>
</filter>

<filter name="service_status" type="dql">
<resolve>COALESCE(ss.current_state,0)</resolve>
</filter>

<filter name="service_current_state" type="dql">
<resolve>COALESCE(ss.current_state,0)</resolve>
</filter>

<filter name="host_current_state" type="dql">
<resolve>COALESCE(hs.current_state,0)</resolve>
</filter>

</dql>
Expand Down Expand Up @@ -195,7 +220,7 @@
s.notes_url AS SERVICE_NOTES_URL
FROM IcingaServices s
INNER JOIN s.instance i
INNER JOIN s.status ss
LEFT JOIN s.status ss
INNER JOIN s.host h
INNER JOIN h.object oh
INNER JOIN s.object os
Expand Down
8 changes: 4 additions & 4 deletions app/modules/Api/config/views/servicegroups.xml
Expand Up @@ -35,15 +35,15 @@
sg.servicegroup_id AS servicegroup_id,
i.instance_id AS instance_id,
i.instance_name AS instance_name,
COUNT(ss.current_state) AS service_status_count,
ss.current_state AS service_status,
COUNT(COALESCE(ss.current_state,0)) AS service_status_count,
COALESCE(ss.current_state,0) AS service_status,
sg.servicegroup_id as servicegroup_id,
ss.has_been_checked as service_has_been_checked
COALESCE(ss.has_been_checked,0) as service_has_been_checked
FROM IcingaServicegroups sg
INNER JOIN sg.instance i
INNER JOIN sg.object o
INNER JOIN sg.members sgm
INNER JOIN sgm.status ss
LEFT JOIN sgm.status ss
INNER JOIN ss.service s
GROUP BY sg.servicegroup_id, ss.current_state, o.name1,
Expand Down
Expand Up @@ -173,7 +173,9 @@ public function resolveColumnAlias($alias) {
'HOST_OUTPUT' => 'hs.output',
'HOST_LONG_OUTPUT' => 'hs.long_output',
'HOST_PERFDATA' => 'hs.perfdata',
'HOST_CURRENT_STATE' => 'hs.current_state',
// Workaround for missing initial states #3844
//'HOST_CURRENT_STATE' => 'hs.current_state',
'HOST_CURRENT_STATE' => 'COALESCE(hs.current_state,0)',
'HOST_CURRENT_CHECK_ATTEMPT' => 'hs.current_check_attempt',
'HOST_MAX_CHECK_ATTEMPTS' => 'hs.max_check_attempts',
'HOST_LAST_CHECK' => 'hs.last_check',
Expand All @@ -182,7 +184,9 @@ public function resolveColumnAlias($alias) {
'HOST_LATENCY' => 'hs.latency',
'HOST_EXECUTION_TIME' => 'hs.execution_time',
'HOST_NEXT_CHECK' => 'hs.next_check',
'HOST_HAS_BEEN_CHECKED' => 'hs.has_been_checked',
// Workaround for missing initial states #3844
//'HOST_HAS_BEEN_CHECKED' => 'hs.has_been_checked',
'HOST_HAS_BEEN_CHECKED' => 'COALESCE(hs.has_been_checked,0)',
'HOST_LAST_HARD_STATE_CHANGE' => 'hs.last_hard_state_change',
'HOST_LAST_NOTIFICATION' => 'hs.last_notification',
'HOST_PROCESS_PERFORMANCE_DATA' => 'h.process_performance_data',
Expand All @@ -194,7 +198,9 @@ public function resolveColumnAlias($alias) {
'HOST_STATUS_UPDATE_TIME' => 'hs.status_update_time',
'HOST_ALL' => 'h.*',
'HOST_STATUS_ALL' => 'hs.*',
'HOST_STATE' => 'hs.current_state',
// Workaround for missing initial states #3844
//'HOST_STATE' => 'hs.current_state',
'HOST_STATE' => 'COALESCE(hs.current_state,0)',
'HOST_STATE_COUNT' => 'count(hs.current_state)',
'HOST_OBJECT_COUNT' => 'count(DISTINCT h.host_object_id)',
'HOST_PARENT_OBJECT_ID' => 'ohp.object_id',
Expand All @@ -204,7 +210,9 @@ public function resolveColumnAlias($alias) {
'HOST_CUSTOMVARIABLE_NAME' => 'cvsh.varname',
'HOST_CUSTOMVARIABLE_VALUE' => 'cvsh.varvalue',
'HOST_CURRENT_PROBLEM_STATE' => '(hs.current_state*(hs.problem_has_been_acknowledged-1)*(hs.scheduled_downtime_depth-1))',
'HOST_IS_PENDING' => '(hs.has_been_checked-1)*-1',
// Workaround for missing initial states #3844
//'HOST_IS_PENDING' => '(hs.has_been_checked-1)*-1',
'HOST_IS_PENDING' => '(CASE WHEN hs.has_been_checked IS NULL THEN 1 ELSE (hs.has_been_checked-1)*-1 END)',
// Service data

'SERVICE_ID' => 's.service_id',
Expand Down Expand Up @@ -232,7 +240,9 @@ public function resolveColumnAlias($alias) {
'SERVICE_LONG_OUTPUT' => 'ss.long_output',
'SERVICE_PERFDATA' => 'ss.perfdata',
'SERVICE_PROCESS_PERFORMANCE_DATA' => 's.process_performance_data',
'SERVICE_CURRENT_STATE' => 'ss.current_state',
// Workaround for missing initial states #3844
//'SERVICE_CURRENT_STATE' => 'ss.current_state',
'SERVICE_CURRENT_STATE' => 'COALESCE(ss.current_state,0)',
'SERVICE_CURRENT_CHECK_ATTEMPT'=>'ss.current_check_attempt',
'SERVICE_MAX_CHECK_ATTEMPTS'=> 'ss.max_check_attempts',
'SERVICE_LAST_CHECK' => 'ss.last_check',
Expand All @@ -241,7 +251,9 @@ public function resolveColumnAlias($alias) {
'SERVICE_LATENCY' => 'ss.latency',
'SERVICE_EXECUTION_TIME' => 'ss.execution_time',
'SERVICE_NEXT_CHECK' => 'ss.next_check',
'SERVICE_HAS_BEEN_CHECKED'=> 'ss.has_been_checked',
// Workaround for missing initial states #3844
//'SERVICE_HAS_BEEN_CHECKED'=> 'ss.has_been_checked',
'SERVICE_HAS_BEEN_CHECKED'=> 'COALESCE(ss.has_been_checked,0)',
'SERVICE_LAST_HARD_STATE'=> 'ss.last_hard_state',
'SERVICE_LAST_HARD_STATE_CHANGE'=>'ss.last_hard_state_change',
'SERVICE_LAST_NOTIFICATION'=> 'ss.last_notification',
Expand All @@ -258,7 +270,9 @@ public function resolveColumnAlias($alias) {
'SERVICE_STATE_COUNT' => 'count(ss.current_state)',
'SERVICE_OBJECT_COUNT' => 'count(DISTINCT s.service_object_id)',
'SERVICE_CURRENT_PROBLEM_STATE' => '(ss.current_state*(ss.problem_has_been_acknowledged-1)*(ss.scheduled_downtime_depth-1))',
'SERVICE_IS_PENDING' => '(ss.has_been_checked-1)*-1',
// Workaround for missing initial states #3844
//'SERVICE_IS_PENDING' => '(ss.has_been_checked-1)*-1',
'SERVICE_IS_PENDING' => '(CASE WHEN ss.has_been_checked IS NULL THEN 1 ELSE (ss.has_been_checked-1)*-1 END)',

// Config vars
'CONFIG_VAR_ID' => 'cfv.configfilevariable_id',
Expand Down
2 changes: 1 addition & 1 deletion app/modules/Api/models/Views/ApiDQLViewModel.class.php
Expand Up @@ -231,7 +231,7 @@ private function applyCredentials(IcingaDoctrine_Query &$query) {

public function getAliasedTableFromDQL($field) {
$results = array();
if(preg_match_all('/([A-Za-z_\.0-9]+?) AS '.$field.'/i',$this->currentQuery->getDql(),$results)) {
if(preg_match_all('/([A-Za-z_\.0-9]+?) AS '.preg_quote($field, "/").'/i',$this->currentQuery->getDql(),$results)) {
return $results[1][0];

} else return $field;
Expand Down
Expand Up @@ -138,7 +138,7 @@ Ext.ns('Cronk.grid');
this.hostStatus = function () {
return function (value, metaData, record, rowIndex, colIndex, store) {
if (Ext.isDefined(record.json.host_has_been_checked)) {
if (record.json.host_has_been_checked === 0) {
if (record.json.host_has_been_checked == 0) {
value = 99;
}
}
Expand Down
10 changes: 5 additions & 5 deletions app/modules/Cronks/lib/js/Cronk/grid/renderer/ColumnRenderer.js
Expand Up @@ -252,11 +252,11 @@ Ext.ns('Cronk.grid');
return function (value, metaData, record, rowIndex, colIndex, store) {

if (Ext.isDefined(record.json.service_is_pending)) {
if (record.json.service_is_pending > 0) {
if (record.json.service_is_pending == 1) {
value = 99;
}
} else if (Ext.isDefined(record.json.service_has_been_checked)) {
if (record.json.service_has_been_checked === 0) {
if (record.json.service_has_been_checked == 0) {
value = 99;
}
}
Expand All @@ -270,11 +270,11 @@ Ext.ns('Cronk.grid');
hostStatus: function (cfg) {
return function (value, metaData, record, rowIndex, colIndex, store) {
if (Ext.isDefined(record.json.host_is_pending)) {
if (record.json.host_is_pending > 0) {
if (record.json.host_is_pending == 1) {
value = 99;
}
} else if (Ext.isDefined(record.json.host_has_been_checked)) {
if (record.json.host_has_been_checked === 0) {
if (record.json.host_has_been_checked == 0) {
value = 99;
}
}
Expand Down Expand Up @@ -312,4 +312,4 @@ Ext.ns('Cronk.grid');
}
};

})();
})();
Expand Up @@ -106,9 +106,13 @@ public function getDataForType($type) {
foreach ($records as $record) {
$state = $record['a_current_state'];

/* DO NOT check for this, due to a missing inital (pending)
state this *can* be NULL (#3838) -mfrosch
*//*
if (!is_numeric($state)) {
continue;
}
*/

if ((!$record['a_has_been_checked'])) {
$state = IcingaConstants::HOST_PENDING;
Expand Down

0 comments on commit 898005f

Please sign in to comment.