From a986c601ebc462faf44002b80b1655a555addb70 Mon Sep 17 00:00:00 2001 From: juanmanuelr Date: Tue, 24 Jul 2012 14:16:24 +0000 Subject: [PATCH] 2012-07-24 Juan Manuel Ramon * include/functions_agents.php include/functions_tags.php: Support for metaconsole tree counts. git-svn-id: https://svn.code.sf.net/p/pandora/code/trunk@6805 c3f86ba8-e40f-0410-aaad-9ba5e7f4b01f --- pandora_console/ChangeLog | 5 + pandora_console/include/functions_agents.php | 43 ++++ pandora_console/include/functions_tags.php | 230 +++++++++++++++---- 3 files changed, 227 insertions(+), 51 deletions(-) diff --git a/pandora_console/ChangeLog b/pandora_console/ChangeLog index 3aa367ac5e..2efa935c09 100644 --- a/pandora_console/ChangeLog +++ b/pandora_console/ChangeLog @@ -1,3 +1,8 @@ +2012-07-24 Juan Manuel Ramon + + * include/functions_agents.php + include/functions_tags.php: Support for metaconsole tree counts. + 2012-07-24 Sergio Martin * include/javascript/pandora_modules.js diff --git a/pandora_console/include/functions_agents.php b/pandora_console/include/functions_agents.php index b9dc6b00a8..9c55118db5 100644 --- a/pandora_console/include/functions_agents.php +++ b/pandora_console/include/functions_agents.php @@ -1702,6 +1702,7 @@ function agents_get_status($id_agent = 0, $noACLs = false) { else { return AGENT_MODULE_STATUS_NORMAL; } + } /** @@ -1947,6 +1948,7 @@ function agents_monitor_unknown ($id_agent, $filter="") { } // Get ok monitors by using the status code in modules. + function agents_monitor_ok ($id_agent, $filter="") { if ($filter) { @@ -1964,6 +1966,47 @@ function agents_monitor_ok ($id_agent, $filter="") { AND tagente.id_agente = $id_agent" . $filter); } +/** + * Get all monitors disabled of an specific agent. + * + * @param int The agent id + * @param string Additional filters + * + * @return mixed Total module count or false + */ +function agents_monitor_disabled ($id_agent, $filter="") { + + if ($filter) { + $filter = " AND ".$filter; + } + + return db_get_sql ("SELECT COUNT( DISTINCT tagente_modulo.id_agente_modulo) FROM tagente, tagente_modulo WHERE tagente_modulo.id_agente = tagente.id_agente AND tagente_modulo.disabled = 1 AND tagente.id_agente = $id_agent".$filter); +} + +/** + * Get all monitors notinit of an specific agent. + * + * @param int The agent id + * @param string Additional filters + * + * @return mixed Total module count or false + */ +function agents_monitor_notinit ($id_agent, $filter="") { + + if (!empty($filter)) { + $filter = " AND ".$filter; + } + + return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente_modulo ) + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente.disabled = 0 AND tagente.id_agente = tagente_estado.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente_modulo.disabled = 0 + AND tagente_modulo.id_tipo_modulo NOT IN (21,22,23) + AND utimestamp = 0 + AND tagente.id_agente = $id_agent ".$filter); +} + /** * Get all monitors of an specific agent. * diff --git a/pandora_console/include/functions_tags.php b/pandora_console/include/functions_tags.php index 72ddc4b36f..ff93f1b0b6 100644 --- a/pandora_console/include/functions_tags.php +++ b/pandora_console/include/functions_tags.php @@ -34,16 +34,15 @@ function tags_agent_critical ($id_tag) { //TODO REVIEW ORACLE AND POSTGRES return db_get_sql ("SELECT COUNT( DISTINCT tagente_estado.id_agente) - FROM tagente_estado, tagente, tagente_modulo - WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 - AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo + FROM tagente_estado, tagente, tagente_modulo, ttag_module + WHERE tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo + AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo + AND tagente_estado.id_agente = tagente.id_agente AND tagente_modulo.disabled = 0 - AND estado = 1 - AND tagente_estado.id_agente = tagente.id_agente - AND tagente.id_agente IN (SELECT id_agente - FROM tagente_modulo, ttag_module - WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo - AND ttag_module.id_tag = $id_tag)"); + AND estado = 1 + AND tagente.disabled = 0 + AND tagente_estado.utimestamp != 0 + AND ttag_module.id_tag = $id_tag"); } /** @@ -58,23 +57,95 @@ function tags_agent_unknown ($id_tag) { if (empty($id_tag)) return false; - //TODO REVIEW ORACLE AND POSTGRES + // Agent of module group X and critical status + $agents_critical = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 1 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; - return db_get_sql ("SELECT COUNT(min_estado) - FROM (SELECT MIN(tagente_estado.estado) as min_estado - FROM tagente_estado, tagente, tagente_modulo - WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 - AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo - AND tagente_modulo.disabled = 0 - AND tagente_estado.id_agente = tagente.id_agente - AND tagente_estado.estado != 0 - AND tagente.id_agente IN (SELECT id_agente - FROM tagente_modulo, ttag_module - WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo - AND ttag_module.id_tag = $id_tag) - GROUP BY tagente.id_agente HAVING min_estado = 3 - ) AS S1"); + // Agent of module group X and warning status + $agents_warning = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 2 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; + // Agent of module group X and unknown status + $agents_unknown = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 3 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; + + return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente + FROM tagente, tagente_modulo, tagente_estado, ttag_module + WHERE tagente.id_agente = tagente_modulo.id_agente + AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo + AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo + + AND ttag_module.id_tag = $id_tag + AND tagente.id_agente NOT IN ($agents_critical) + AND tagente.id_agente NOT IN ($agents_warning) + AND tagente.id_agente IN ($agents_unknown) ) AS t"); + +} + +/** + * Get total agents filtering by id_tag. + * + * @param int $id_tag Id of the tag to search total agents + * + * @return mixed Returns count of agents with this tag or false if they aren't. + */ +function tags_total_agents ($id_tag) { + + // Avoid mysql error + if (empty($id_tag)) + return; + + $total_agents = "SELECT COUNT(DISTINCT tagente.id_agente) + FROM tagente, tagente_modulo, ttag_module + WHERE tagente.id_agente = tagente_modulo.id_agente + AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo + AND ttag_module.id_tag = " . $id_tag; + + return db_get_sql ($total_agents); +} + +/** + * Get total agents filtering by id_tag that are disabled. + * + * @param int $id_tag Id of the tag to search total agents + * + * @return mixed Returns count of agents with this tag or false if they aren't. + */ +function tags_agent_disabled ($id_tag) { + + // Avoid mysql error + if (empty($id_tag)) + return; + + $total_agents_disabled = "SELECT COUNT(DISTINCT tagente.id_agente) + FROM tagente, tagente_modulo, ttag_module + WHERE tagente.id_agente = tagente_modulo.id_agente + AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo + AND tagente.disabled = 1 + AND ttag_module.id_tag = " . $id_tag; + + return db_get_sql ($total_agents_disabled); } /** @@ -89,20 +160,61 @@ function tags_agent_ok ($id_tag) { if (empty($id_tag)) return false; - //TODO REVIEW ORACLE AND POSTGRES + // Agent of module group X and critical status + $agents_critical = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 1 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; - return db_get_sql ("SELECT COUNT(max_estado) - FROM (SELECT MAX(tagente_estado.estado) as max_estado - FROM tagente_estado, tagente, tagente_modulo - WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 - AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo - AND tagente_modulo.disabled = 0 - AND tagente_estado.id_agente = tagente.id_agente - AND tagente.id_agente IN (SELECT id_agente - FROM tagente_modulo, ttag_module - WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo - AND ttag_module.id_tag = $id_tag) - GROUP BY tagente.id_agente HAVING max_estado = 0) AS S1"); + // Agent of module group X and warning status + $agents_warning = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 2 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; + + // Agent of module group X and unknown status + $agents_unknown = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 3 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; + + // Agent of module group X and ok status + $agents_ok = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 0 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; + + return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente + FROM tagente, tagente_modulo, tagente_estado, ttag_module + WHERE tagente.id_agente = tagente_modulo.id_agente + AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo + AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo + + AND ttag_module.id_tag = $id_tag + AND tagente.id_agente NOT IN ($agents_critical) + AND tagente.id_agente NOT IN ($agents_warning) + AND tagente.id_agente NOT IN ($agents_unknown) + AND tagente.id_agente IN ($agents_ok)) AS t"); } @@ -118,22 +230,38 @@ function tags_agent_warning ($id_tag) { if (empty($id_tag)) return false; - //TODO REVIEW ORACLE AND POSTGRES + // Agent critical status + $agents_critical = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 1 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; - return db_get_sql ("SELECT COUNT(min_estado) - FROM (SELECT MAX(tagente_estado.estado) as min_estado - FROM tagente_estado, tagente, tagente_modulo - WHERE tagente.disabled = 0 AND tagente_estado.utimestamp != 0 - AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo - AND tagente_modulo.disabled = 0 - - AND tagente_estado.id_agente = tagente.id_agente - AND tagente.id_agente IN (SELECT id_agente - FROM tagente_modulo, ttag_module - WHERE tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo - AND ttag_module.id_tag = $id_tag) - GROUP BY tagente.id_agente HAVING min_estado = 2) AS S1"); + // Agent warning status + $agents_warning = "SELECT tagente.id_agente + FROM tagente_estado, tagente, tagente_modulo + WHERE tagente_estado.id_agente = tagente.id_agente + AND tagente_estado.id_agente_modulo = tagente_modulo.id_agente_modulo + AND tagente.disabled = 0 + AND tagente_modulo.disabled = 0 + AND estado = 2 + AND tagente_estado.utimestamp != 0 + group by tagente.id_agente"; + + return db_get_sql ("SELECT COUNT(*) FROM ( SELECT DISTINCT tagente.id_agente + FROM tagente, tagente_modulo, tagente_estado, ttag_module + WHERE tagente.id_agente = tagente_modulo.id_agente + AND tagente_modulo.id_agente_modulo = tagente_estado.id_agente_modulo + AND tagente_modulo.id_agente_modulo = ttag_module.id_agente_modulo + AND ttag_module.id_tag = $id_tag + AND tagente.id_agente NOT IN ($agents_critical) + AND tagente.id_agente IN ($agents_warning)) AS t"); + } /**