diff --git a/pandora_console/godmode/agentes/configurar_agente.php b/pandora_console/godmode/agentes/configurar_agente.php index c37795df83..b23bbaaa54 100644 --- a/pandora_console/godmode/agentes/configurar_agente.php +++ b/pandora_console/godmode/agentes/configurar_agente.php @@ -1607,6 +1607,15 @@ if ($update_module || $create_module) { ); } + if ($prediction_module === MODULE_PREDICTION_PLANNING) { + $custom_string_2 = get_parameter('estimation_type', 'estimation_calculation'); + if ($custom_string_2 === 'estimation_calculation') { + $custom_string_1 = get_parameter('estimation_days', -1); + } else { + $custom_string_1 = get_parameter('estimation_interval', '300'); + } + } + $active_snmp_v3 = get_parameter('active_snmp_v3'); /* @@ -1792,7 +1801,7 @@ if ($update_module) { "Fail to try update module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']) ); } else { - if ($prediction_module == 3) { + if ($prediction_module == MODULE_PREDICTION_SYNTHETIC) { enterprise_hook( 'modules_create_synthetic_operations', [ @@ -1937,7 +1946,7 @@ if ($create_module) { } } - if ($prediction_module == 3 && $serialize_ops == '') { + if ($prediction_module == MODULE_PREDICTION_SYNTHETIC && $serialize_ops == '') { $id_agent_module = false; } else { $id_agent_module = modules_create_agent_module( @@ -1978,7 +1987,7 @@ if ($create_module) { "Fail to try added module '".io_safe_output($name)."' for agent ".io_safe_output($agent['alias']) ); } else { - if ($prediction_module == 3) { + if ($prediction_module == MODULE_PREDICTION_SYNTHETIC) { enterprise_hook( 'modules_create_synthetic_operations', [ diff --git a/pandora_console/godmode/agentes/module_manager_editor_prediction.php b/pandora_console/godmode/agentes/module_manager_editor_prediction.php index 7c319fa531..cf35c8b0bf 100644 --- a/pandora_console/godmode/agentes/module_manager_editor_prediction.php +++ b/pandora_console/godmode/agentes/module_manager_editor_prediction.php @@ -14,6 +14,7 @@ enterprise_include_once('include/functions_policies.php'); enterprise_include_once('godmode/agentes/module_manager_editor_prediction.php'); require_once 'include/functions_agents.php'; +ui_require_jquery_file('validate'); $disabledBecauseInPolicy = false; $disabledTextBecauseInPolicy = ''; @@ -36,9 +37,9 @@ if ($row !== false && is_array($row)) { // Services are an Enterprise feature. $custom_integer_1 = $row['custom_integer_1']; - switch ($prediction_module) { + switch ((int) $prediction_module) { case MODULE_PREDICTION_SERVICE: - $is_service = true; + $selected = 'service_selected'; $custom_integer_2 = 0; break; @@ -61,20 +62,33 @@ if ($row !== false && is_array($row)) { if (isset($first_op[1]) && $first_op[1] == 'avg') { - $is_synthetic_avg = true; + $selected = 'synthetic_avg_selected'; } else { - $is_synthetic = true; + $selected = 'synthetic_selected'; } $custom_integer_1 = 0; $custom_integer_2 = 0; break; + case MODULE_PREDICTION_TRENDING: + $selected = 'trending_selected'; + $prediction_module = $custom_integer_1; + break; + + case MODULE_PREDICTION_PLANNING: + $selected = 'capacity_planning'; + $prediction_module = $custom_integer_1; + $estimation_interval = $custom_string_1; + $estimation_type = $custom_string_2; + break; + default: $prediction_module = $custom_integer_1; break; } } else { + $selected = 'capacity_planning'; $custom_integer_1 = 0; } @@ -97,7 +111,7 @@ $data[0] = __('Source module'); $data[0] .= ui_print_help_icon('prediction_source_module', true); $data[1] = ''; // Services and Synthetic are an Enterprise feature. -$module_service_synthetic_selector = enterprise_hook('get_module_service_synthetic_selector', [$is_service, $is_synthetic, $is_synthetic_avg]); +$module_service_synthetic_selector = enterprise_hook('get_module_service_synthetic_selector', [$selected]); if ($module_service_synthetic_selector !== ENTERPRISE_NOT_HOOK) { $data[1] = $module_service_synthetic_selector; @@ -112,16 +126,17 @@ $data[1] = '
'; $data[1] .= html_print_label(__('Agent'), 'agent_name', true).'
'; // Get module and agent of the target prediction module -if (!empty($prediction_module)) { +if (empty($prediction_module) === false) { $id_agente_clean = modules_get_agentmodule_agent($prediction_module); $prediction_module_agent = modules_get_agentmodule_agent_name($prediction_module); $agent_name_clean = $prediction_module_agent; + $agent_alias = agents_get_alias($id_agente_clean); } else { - $id_agente_clean = $id_agente; - $agent_name_clean = $agent_name; + $id_agente_clean = 0; + $agent_name_clean = ''; + $agent_alias = ''; } -$agent_alias = agents_get_alias($id_agente_clean); $params = []; $params['return'] = true; @@ -135,7 +150,8 @@ $params['use_hidden_input_idagent'] = true; $params['hidden_input_idagent_id'] = 'hidden-id_agente_module_prediction'; $data[1] .= ui_print_agent_autocomplete_input($params); -$data[1] .= html_print_label(__('Module'), 'prediction_module', true); +$data[1] .= '
'; +$data[1] .= html_print_label(__('Module'), 'prediction_module', true).'
'; if ($id_agente) { $sql = 'SELECT id_agente_modulo, nombre FROM tagente_modulo @@ -143,19 +159,23 @@ if ($id_agente) { AND history_data = 1 AND id_agente = '.$id_agente_clean.' AND id_agente_modulo <> '.$id_agente_modulo; - $data[1] .= html_print_select_from_sql( - $sql, - 'prediction_module', - $prediction_module, - false, - __('Select Module'), - 0, - true + + $data[1] .= html_print_input( + [ + 'type' => 'select_from_sql', + 'sql' => $sql, + 'name' => 'prediction_module', + 'selected' => $prediction_module, + 'nothing' => __('Select Module'), + 'nothing_value' => 0, + 'return' => true, + ] ); } else { $data[1] .= ''; } +$data[1] .= '
'; $data[1] .= html_print_label(__('Period'), 'custom_integer_2', true).'
'; $periods[0] = __('Weekly'); @@ -169,6 +189,56 @@ $data[1] .= '
'; $table_simple->colspan['prediction_module'][1] = 3; push_table_simple($data, 'prediction_module'); +$data = []; +$data[0] = ''; + +$data[1] .= html_print_label(__('Calculation type'), 'estimation_type', true).'
'; +$data[1] .= html_print_input( + [ + 'type' => 'select', + 'return' => 'true', + 'name' => 'estimation_type', + 'class' => 'w250px', + 'fields' => [ + 'estimation_absolute' => __('Estimated absolute value'), + 'estimation_calculation' => __('Calculation of days to reach limit'), + ], + 'selected' => $estimation_type, + ], + 'div', + false +); + +$data[1] .= '
'; +$data[1] .= html_print_label(__('Future estimation'), 'estimation_interval', true).'
'; +$data[1] .= html_print_input( + [ + 'type' => 'interval', + 'return' => 'true', + 'name' => 'estimation_interval', + 'value' => $estimation_interval, + ], + 'div', + false +); +$data[1] .= '
'; + + +$data[1] .= '
'; +$data[1] .= html_print_label(__('Limit value'), 'estimation_days', true).'
'; +$data[1] .= html_print_input( + [ + 'type' => 'number', + 'return' => 'true', + 'id' => 'estimation_days', + 'name' => 'estimation_days', + 'value' => $estimation_interval, + ] +); +$data[1] .= '
'; + +push_table_simple($data, 'capacity_planning'); + // Services are an Enterprise feature. $selector_form = enterprise_hook('get_selector_form', [$custom_integer_1]); if ($selector_form !== ENTERPRISE_NOT_HOOK) { @@ -187,10 +257,20 @@ if ($synthetic_module_form !== ENTERPRISE_NOT_HOOK) { $data[0] = ''; $data[1] = $synthetic_module_form; - $table_simple->colspan['synthetic_module'][1] = 3; push_table_simple($data, 'synthetic_module'); } +$trending_module_form = enterprise_hook('get_trending_module_form', [$custom_string_1]); +if ($trending_module_form !== ENTERPRISE_NOT_HOOK) { + $data = []; + $data[0] = ''; + $data[1] .= $trending_module_form; + + push_table_simple($data, 'trending_module'); +} + + + // Netflow modules are an Enterprise feature. $netflow_module_form = enterprise_hook('get_netflow_module_form', [$custom_integer_1]); if ($netflow_module_form !== ENTERPRISE_NOT_HOOK) { @@ -214,9 +294,7 @@ unset($table_advanced->data[3]); enterprise_hook( 'setup_services_synth', [ - $is_service, - $is_synthetic, - $is_synthetic_avg, + $selected, $is_netflow, $ops, ] diff --git a/pandora_console/include/constants.php b/pandora_console/include/constants.php index 164c6f3983..0b05df89fb 100644 --- a/pandora_console/include/constants.php +++ b/pandora_console/include/constants.php @@ -368,12 +368,15 @@ define('MODULE_WUX', 8); define('MODULE_WIZARD', 9); // Type of Modules of Prediction. +define('MODULE_PREDICTION_PLANNING', 1); define('MODULE_PREDICTION_SERVICE', 2); define('MODULE_PREDICTION_SYNTHETIC', 3); define('MODULE_PREDICTION_NETFLOW', 4); define('MODULE_PREDICTION_CLUSTER', 5); define('MODULE_PREDICTION_CLUSTER_AA', 6); define('MODULE_PREDICTION_CLUSTER_AP', 7); +define('MODULE_PREDICTION_TRENDING', 8); + // Forced agent OS ID for cluster agents. define('CLUSTER_OS_ID', 100);