2012-07-24 Juan Manuel Ramon <juanmanuel.ramon@artica.es>

* 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
This commit is contained in:
juanmanuelr 2012-07-24 14:16:24 +00:00
parent daf16f2d83
commit a986c601eb
3 changed files with 227 additions and 51 deletions

View File

@ -1,3 +1,8 @@
2012-07-24 Juan Manuel Ramon <juanmanuel.ramon@artica.es>
* include/functions_agents.php
include/functions_tags.php: Support for metaconsole tree counts.
2012-07-24 Sergio Martin <sergio.martin@artica.es>
* include/javascript/pandora_modules.js

View File

@ -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.
*

View File

@ -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");
}
/**