implemented disable modules scheduled downtime

This commit is contained in:
alejandro.campos@artica.es 2022-08-31 16:14:38 +02:00
parent 8efb8c46b1
commit a479ab84f7
5 changed files with 67 additions and 15 deletions

View File

@ -754,7 +754,8 @@ if ($agents !== false) {
$in_planned_downtime = db_get_sql( $in_planned_downtime = db_get_sql(
'SELECT executed FROM tplanned_downtime 'SELECT executed FROM tplanned_downtime
INNER JOIN tplanned_downtime_agents ON tplanned_downtime.id = tplanned_downtime_agents.id_downtime INNER JOIN tplanned_downtime_agents ON tplanned_downtime.id = tplanned_downtime_agents.id_downtime
WHERE tplanned_downtime_agents.id_agent = '.$agent['id_agente'].' AND tplanned_downtime.executed = 1' WHERE tplanned_downtime_agents.id_agent = '.$agent['id_agente'].' AND tplanned_downtime.executed = 1
AND tplanned_downtime.type_downtime <> "disable_agent_modules"'
); );
if ($agent['disabled']) { if ($agent['disabled']) {

View File

@ -993,6 +993,24 @@ foreach ($modules as $module) {
} }
if ($module['disabled']) { if ($module['disabled']) {
$dt_disabled_icon = '';
$in_planned_downtime = db_get_sql(
'SELECT executed FROM tplanned_downtime
INNER JOIN tplanned_downtime_modules ON tplanned_downtime.id = tplanned_downtime_modules.id_downtime
WHERE tplanned_downtime.executed = 1
AND tplanned_downtime.type_downtime = "disable_agent_modules"
AND tplanned_downtime_modules.id_agent_module = '.$module['id_agente_modulo']
);
if ($in_planned_downtime !== false) {
$dt_disabled_icon = ui_print_help_tip(
__('Module in scheduled downtime'),
true,
'images/minireloj-16.png'
);
}
$data[0] .= '<em class="disabled_module">'.ui_print_truncate_text( $data[0] .= '<em class="disabled_module">'.ui_print_truncate_text(
$module['nombre'], $module['nombre'],
'module_medium', 'module_medium',
@ -1001,7 +1019,7 @@ foreach ($modules as $module) {
true, true,
'[&hellip;]', '[&hellip;]',
'font-size: 7.2pt' 'font-size: 7.2pt'
).'</em>'; ).$dt_disabled_icon.'</em>';
} else { } else {
$data[0] .= ui_print_truncate_text( $data[0] .= ui_print_truncate_text(
$module['nombre'], $module['nombre'],

View File

@ -593,6 +593,7 @@ $table->data[3][1] = html_print_select(
[ [
'quiet' => __('Quiet'), 'quiet' => __('Quiet'),
'disable_agents' => __('Disabled Agents'), 'disable_agents' => __('Disabled Agents'),
'disable_agent_modules' => __('Disable Modules'),
'disable_agents_alerts' => __('Disabled only Alerts'), 'disable_agents_alerts' => __('Disabled only Alerts'),
], ],
'type_downtime', 'type_downtime',

View File

@ -539,6 +539,8 @@ function planned_downtimes_migrate_malformed_downtimes_copy_items($original_down
*/ */
function planned_downtimes_stop($downtime) function planned_downtimes_stop($downtime)
{ {
global $config;
$result = false; $result = false;
$message = ''; $message = '';
@ -672,6 +674,21 @@ function planned_downtimes_stop($downtime)
} }
break; break;
case 'disable_agent_modules':
$update_sql = sprintf(
'UPDATE tagente_modulo tam, tagente ta, tplanned_downtime_modules tpdm
SET tam.disabled = 0, ta.update_module_count = 1
WHERE tpdm.id_agent_module = tam.id_agente_modulo AND
ta.id_agente = tam.id_agente AND
tpdm.id_downtime = %d',
$id_downtime
);
db_process_sql($update_sql);
$count = '';
break;
case 'disable_agents_alerts': case 'disable_agents_alerts':
$agents = db_get_all_rows_filter( $agents = db_get_all_rows_filter(
'tplanned_downtime_agents', 'tplanned_downtime_agents',

View File

@ -2322,6 +2322,13 @@ sub pandora_planned_downtime_set_disabled_elements($$$) {
} }
if ($only_alerts == 0) { if ($only_alerts == 0) {
if ($downtime->{'type_downtime'} eq 'disable_agent_modules') {
db_do($dbh,'UPDATE tagente_modulo tam, tagente ta, tplanned_downtime_modules tpdm
SET tam.disabled = 1, ta.update_module_count = 1
WHERE tpdm.id_agent_module = tam.id_agente_modulo AND
ta.id_agente = tam.id_agente AND
tpdm.id_downtime = ?', $downtime->{'id'});
} else {
db_do($dbh,'UPDATE tplanned_downtime_agents tp, tagente ta db_do($dbh,'UPDATE tplanned_downtime_agents tp, tagente ta
SET tp.manually_disabled = ta.disabled SET tp.manually_disabled = ta.disabled
WHERE tp.id_agent = ta.id_agente AND tp.id_downtime = ?',$downtime->{'id'}); WHERE tp.id_agent = ta.id_agente AND tp.id_downtime = ?',$downtime->{'id'});
@ -2330,7 +2337,7 @@ sub pandora_planned_downtime_set_disabled_elements($$$) {
SET ta.disabled = 1, ta.update_module_count = 1 SET ta.disabled = 1, ta.update_module_count = 1
WHERE tpa.id_agent = ta.id_agente AND WHERE tpa.id_agent = ta.id_agente AND
tpa.id_downtime = ?',$downtime->{'id'}); tpa.id_downtime = ?',$downtime->{'id'});
}
} else { } else {
my @downtime_agents = get_db_rows($dbh, 'SELECT * my @downtime_agents = get_db_rows($dbh, 'SELECT *
FROM tplanned_downtime_agents FROM tplanned_downtime_agents
@ -2364,10 +2371,18 @@ sub pandora_planned_downtime_unset_disabled_elements($$$) {
} }
if ($only_alerts == 0) { if ($only_alerts == 0) {
if ($downtime->{'type_downtime'} eq 'disable_agent_modules') {
db_do($dbh,'UPDATE tagente_modulo tam, tagente ta, tplanned_downtime_modules tpdm
SET tam.disabled = 0, ta.update_module_count = 1
WHERE tpdm.id_agent_module = tam.id_agente_modulo AND
ta.id_agente = tam.id_agente AND
tpdm.id_downtime = ?', $downtime->{'id'});
} else {
db_do($dbh,'UPDATE tagente ta, tplanned_downtime_agents tpa db_do($dbh,'UPDATE tagente ta, tplanned_downtime_agents tpa
set ta.disabled = 0, ta.update_module_count = 1 set ta.disabled = 0, ta.update_module_count = 1
WHERE tpa.id_agent = ta.id_agente AND WHERE tpa.id_agent = ta.id_agente AND
tpa.manually_disabled = 0 AND tpa.id_downtime = ?',$downtime->{'id'}); tpa.manually_disabled = 0 AND tpa.id_downtime = ?',$downtime->{'id'});
}
} else { } else {
my @downtime_agents = get_db_rows($dbh, 'SELECT * my @downtime_agents = get_db_rows($dbh, 'SELECT *
FROM tplanned_downtime_agents FROM tplanned_downtime_agents