Merge branch 'ent-3595-discovery-fase-2' into wip/3595
Former-commit-id: df24037730e212308a8e8805e0440e73e1ec0f16
This commit is contained in:
commit
ad432ffc12
|
@ -221,3 +221,219 @@ function run_graphviz($filename_map, $filename_dot, $layout, $graph)
|
|||
|
||||
return $filename_plain;
|
||||
}
|
||||
|
||||
|
||||
function open_graph($size_x=50, $size_y=25)
|
||||
{
|
||||
$size = '';
|
||||
|
||||
$size = $size_x.','.$size_y;
|
||||
|
||||
// BEWARE: graphwiz DONT use single ('), you need double (").
|
||||
$head = 'graph vmwaremap { labeljust=l; margin=0; ';
|
||||
$head .= 'ratio=fill;';
|
||||
$head .= 'root=0;';
|
||||
$head .= 'rankdir=LR;';
|
||||
$head .= 'size="'.$size.'";';
|
||||
|
||||
return $head;
|
||||
}
|
||||
|
||||
|
||||
function create_node($node, $font_size=10)
|
||||
{
|
||||
// Set node status.
|
||||
if (isset($node['status'])) {
|
||||
switch ($node['status']) {
|
||||
case AGENT_MODULE_STATUS_NORMAL:
|
||||
$status_color = COL_NORMAL;
|
||||
// Normal monitor.
|
||||
break;
|
||||
|
||||
case AGENT_MODULE_STATUS_CRITICAL_BAD:
|
||||
$status_color = COL_CRITICAL;
|
||||
// Critical monitor.
|
||||
break;
|
||||
|
||||
case AGENT_MODULE_STATUS_WARNING:
|
||||
$status_color = COL_WARNING;
|
||||
// Warning monitor.
|
||||
break;
|
||||
|
||||
case AGENT_STATUS_ALERT_FIRED:
|
||||
case AGENT_MODULE_STATUS_CRITICAL_ALERT:
|
||||
case AGENT_MODULE_STATUS_WARNING_ALERT:
|
||||
$status_color = COL_ALERTFIRED;
|
||||
// Alert fired.
|
||||
break;
|
||||
|
||||
case AGENT_MODULE_STATUS_NOT_INIT:
|
||||
$status_color = COL_NOTINIT;
|
||||
// Not init.
|
||||
break;
|
||||
|
||||
default:
|
||||
$status_color = COL_UNKNOWN;
|
||||
// Unknown monitor.
|
||||
break;
|
||||
}
|
||||
|
||||
$status_color = 'color="'.$status_color.'",';
|
||||
} else {
|
||||
$status_color = '';
|
||||
}
|
||||
|
||||
// Short name.
|
||||
if (isset($node['nombre'])) {
|
||||
$name = io_safe_output(strtolower($node['nombre']));
|
||||
if (strlen($name) > 16) {
|
||||
$name = substr($name, 0, 16).'...';
|
||||
}
|
||||
}
|
||||
|
||||
// Set node icon.
|
||||
if (isset($node['image'])) {
|
||||
if (file_exists($node['image'])) {
|
||||
$img_node = $node['image'];
|
||||
} else {
|
||||
$img_node = null;
|
||||
}
|
||||
} else {
|
||||
$img_node = null;
|
||||
}
|
||||
|
||||
$result = $node['id_node'].' [ '.$status_color.' fontsize='.$font_size.', style="filled", fixedsize=true, width=0.40, height=0.40, label=<<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0"><TR><TD>'.html_print_image($img_node, true, false, false, true).'</TD></TR>
|
||||
<TR><TD>'.$name.'</TD></TR></TABLE>>,
|
||||
shape="doublecircle",
|
||||
tooltip="ajax.php?page=operation/agentes/ver_agente&get_agent_status_tooltip=1&id_agent='.$node['id'].'"];';
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Returns an edge definition.
|
||||
*
|
||||
* @param string $head Origin.
|
||||
* @param string $tail Target.
|
||||
*
|
||||
* @return string Edge str.
|
||||
*/
|
||||
function create_edge($head, $tail)
|
||||
{
|
||||
// Token edgeURL allows node navigation.
|
||||
$edge = $head.' -- '.$tail.'[color="#BDBDBD", headclip=false, tailclip=false];'."\n";
|
||||
|
||||
return $edge;
|
||||
}
|
||||
|
||||
|
||||
// Closes a graph definition
|
||||
function close_graph()
|
||||
{
|
||||
return '}';
|
||||
}
|
||||
|
||||
|
||||
function loadfile_map($file='', $graph)
|
||||
{
|
||||
global $config;
|
||||
|
||||
$networkmap_nodes = [];
|
||||
|
||||
$relations = [];
|
||||
|
||||
$other_file = file($file);
|
||||
$graph = explode(']', $graph);
|
||||
|
||||
$ids = [];
|
||||
foreach ($graph as $node) {
|
||||
$line = str_replace("\n", ' ', $node);
|
||||
if (preg_match('/([0-9]+) \[.*tooltip.*id_agent=([0-9]+)/', $line, $match) != 0) {
|
||||
$ids[$match[1]] = ['id_agent' => $match[2]];
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($other_file as $key => $line) {
|
||||
$line = preg_replace('/[ ]+/', ' ', $line);
|
||||
|
||||
$data = [];
|
||||
|
||||
if (preg_match('/^node.*$/', $line) != 0) {
|
||||
$items = explode(' ', $line);
|
||||
$node_id = $items[1];
|
||||
$node_x = ($items[2] * 100);
|
||||
// 200 is for show more big
|
||||
$node_y = ($height_map - $items[3] * 100);
|
||||
// 200 is for show more big
|
||||
$data['id'] = $node_id;
|
||||
$data['image'] = '';
|
||||
$data['width'] = 10;
|
||||
$data['height'] = 10;
|
||||
$data['id_agent'] = 0;
|
||||
|
||||
if (preg_match('/<img src=\"([^\"]*)\"/', $line, $match) == 1) {
|
||||
$image = $match[1];
|
||||
$data['image'] = $config['homeurl'].'/'.$image;
|
||||
$size = getimagesize($config['homeurl'].'/'.$image);
|
||||
$data['image_width'] = $size[0];
|
||||
$data['image_height'] = $size[1];
|
||||
if ($ids[$node_id]['id_agent'] == '') {
|
||||
$data['id_agent'] = 0;
|
||||
$data['label'] = get_product_name();
|
||||
$data['color'] = COL_UNKNOWN;
|
||||
} else {
|
||||
$data['id_agent'] = $ids[$node_id]['id_agent'];
|
||||
$data['label'] = io_safe_output(agents_get_alias($data['id_agent']));
|
||||
|
||||
$status = agents_get_status($data['id_agent']);
|
||||
|
||||
switch ($status) {
|
||||
case 0:
|
||||
$status_color = COL_NORMAL;
|
||||
// Normal monitor
|
||||
break;
|
||||
|
||||
case 1:
|
||||
$status_color = COL_CRITICAL;
|
||||
// Critical monitor
|
||||
break;
|
||||
|
||||
case 2:
|
||||
$status_color = COL_WARNING;
|
||||
// Warning monitor
|
||||
break;
|
||||
|
||||
case 4:
|
||||
$status_color = COL_ALERTFIRED;
|
||||
// Alert fired
|
||||
break;
|
||||
|
||||
default:
|
||||
$status_color = COL_UNKNOWN;
|
||||
// Unknown monitor
|
||||
break;
|
||||
}
|
||||
|
||||
$data['color'] = $status_color;
|
||||
}
|
||||
}
|
||||
|
||||
$data['x'] = $node_x;
|
||||
$data['y'] = $node_y;
|
||||
|
||||
$networkmap_nodes['nodes'][] = $data;
|
||||
} else if (preg_match('/^edge.*$/', $line) != 0) {
|
||||
$items = explode(' ', $line);
|
||||
$line_orig = $items[2];
|
||||
$line_dest = $items[1];
|
||||
|
||||
$networkmap_nodes['arrows'][] = [
|
||||
'orig' => $line_orig,
|
||||
'dest' => $line_dest,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
return $networkmap_nodes;
|
||||
}
|
||||
|
|
|
@ -58,7 +58,7 @@
|
|||
overflow-y: scroll;
|
||||
}
|
||||
|
||||
#cluster_map {
|
||||
#simple_map {
|
||||
border: 1px solid lightgray;
|
||||
width: 900px;
|
||||
height: 500px;
|
||||
|
|
Loading…
Reference in New Issue