Fixed the periodic planned downtimes start & stop functions

This commit is contained in:
Alejandro Gallardo Escobar 2014-11-27 16:06:11 +01:00
parent c07bca3a8b
commit df3c6f14fe

View File

@ -1582,18 +1582,14 @@ Start the planned downtime, the monthly type.
sub pandora_planned_downtime_monthly_start($$) { sub pandora_planned_downtime_monthly_start($$) {
my ($pa_config, $dbh) = @_; my ($pa_config, $dbh) = @_;
#my $local_time = localtime();
my @var_localtime = localtime(time); my @var_localtime = localtime(time);
my $year = $var_localtime[5] + 1900; my $year = $var_localtime[5] + 1900;
my $month = $var_localtime[4]; my $month = $var_localtime[4];
#my $number_day_month = $local_time->mday;
my $number_day_month = $var_localtime[3]; my $number_day_month = $var_localtime[3];
#my $number_last_day_month = $local_time->month_last_day;
my $number_last_day_month = month_have_days($month, $year); my $number_last_day_month = month_have_days($month, $year);
#my $time = $local_time->hms;
my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]); my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]);
# Start pending downtimes # Start pending downtimes
@ -1601,60 +1597,36 @@ sub pandora_planned_downtime_monthly_start($$) {
FROM tplanned_downtime FROM tplanned_downtime
WHERE type_periodicity = ' . $RDBMS_QUOTE_STRING . 'monthly' . $RDBMS_QUOTE_STRING . ' WHERE type_periodicity = ' . $RDBMS_QUOTE_STRING . 'monthly' . $RDBMS_QUOTE_STRING . '
AND executed = 0 AND executed = 0
AND periodically_day_from <= ? AND ((periodically_day_from = ? AND periodically_time_from <= ?) OR (periodically_day_from < ?))
AND periodically_day_to >= ?', AND ((periodically_day_to = ? AND periodically_time_to >= ?) OR (periodically_day_to > ?))',
$number_day_month, $number_day_month); $number_day_month, $time, $number_day_month,
$number_day_month, $time, $number_day_month);
foreach my $downtime (@downtimes) { foreach my $downtime (@downtimes) {
#Convert to identical type. if (!defined($downtime->{'description'})) {
$downtime->{'description'} = "N/A";
}
#my $date_downtime = Time::Piece->strptime( if (!defined($downtime->{'name'})) {
# $downtime->{'periodically_time_from'}, $downtime->{'name'} = "N/A";
# "%H:%M:%S"); }
#my $date_now_time = Time::Piece->strptime(
# $time, logger($pa_config, "Starting planned monthly downtime '" . $downtime->{'name'} . "'.", 10);
# "%H:%M:%S");
# db_do($dbh, 'UPDATE tplanned_downtime
#if ($date_now_time >= $date_downtime) { SET executed = 1
WHERE id = ?', $downtime->{'id'});
pandora_event ($pa_config,
"Server ".$pa_config->{'servername'}." started planned downtime: ".$downtime->{'name'}, 0, 0, 1, 0, 0, 'system', 0, $dbh);
if ( if ($downtime->{'type_downtime'} eq "quiet") {
(($time gt $downtime->{'periodically_time_from'}) pandora_planned_downtime_set_quiet_elements($pa_config, $dbh, $downtime->{'id'});
|| ($time eq $downtime->{'periodically_time_from'})) }
&& elsif (($downtime->{'type_downtime'} eq "disable_agents")
(($time lt $downtime->{'periodically_time_to'}) || ($downtime->{'type_downtime'} eq "disable_agents_alerts")) {
|| ($time eq $downtime->{'periodically_time_to'}))
) {
if (!defined($downtime->{'description'})) {
$downtime->{'description'} = "N/A";
}
if (!defined($downtime->{'name'})) {
$downtime->{'name'} = "N/A";
}
logger($pa_config, "Starting planned monthly downtime '" . $downtime->{'name'} . "'.", 10);
db_do($dbh, 'UPDATE tplanned_downtime
SET executed = 1
WHERE id = ?', $downtime->{'id'});
pandora_event ($pa_config,
"Server ".$pa_config->{'servername'}." started planned downtime: ".$downtime->{'name'}, 0, 0, 1, 0, 0, 'system', 0, $dbh);
if ($downtime->{'type_downtime'} eq "quiet") {
pandora_planned_downtime_set_quiet_elements($pa_config,
$dbh, $downtime->{'id'});
}
elsif (($downtime->{'type_downtime'} eq "disable_agents")
|| ($downtime->{'type_downtime'} eq "disable_agents_alerts")) {
pandora_planned_downtime_set_disabled_elements($pa_config,
$dbh, $downtime);
}
pandora_planned_downtime_set_disabled_elements($pa_config, $dbh, $downtime);
} }
} }
} }
@ -1670,18 +1642,14 @@ Start the planned downtime, the montly type.
sub pandora_planned_downtime_monthly_stop($$) { sub pandora_planned_downtime_monthly_stop($$) {
my ($pa_config, $dbh) = @_; my ($pa_config, $dbh) = @_;
#my $local_time = localtime();
my @var_localtime = localtime(time); my @var_localtime = localtime(time);
my $year = $var_localtime[5] + 1900; my $year = $var_localtime[5] + 1900;
my $month = $var_localtime[4]; my $month = $var_localtime[4];
#my $number_day_month = $local_time->mday;
my $number_day_month = $var_localtime[3]; my $number_day_month = $var_localtime[3];
#my $number_last_day_month = $local_time->month_last_day;
my $number_last_day_month = month_have_days($month, $year); my $number_last_day_month = month_have_days($month, $year);
#my $time = $local_time->hms;
my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]); my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]);
#With this stop the planned downtime for 31 (or 30) day in months #With this stop the planned downtime for 31 (or 30) day in months
@ -1703,53 +1671,38 @@ sub pandora_planned_downtime_monthly_stop($$) {
FROM tplanned_downtime FROM tplanned_downtime
WHERE type_periodicity = ' . $RDBMS_QUOTE_STRING . 'monthly' . $RDBMS_QUOTE_STRING . ' WHERE type_periodicity = ' . $RDBMS_QUOTE_STRING . 'monthly' . $RDBMS_QUOTE_STRING . '
AND executed = 1 AND executed = 1
AND type_execution <> ' . $RDBMS_QUOTE_STRING . 'once' . $RDBMS_QUOTE_STRING); AND type_execution <> ' . $RDBMS_QUOTE_STRING . 'once' . $RDBMS_QUOTE_STRING . '
AND (((periodically_day_from = ? AND periodically_time_from > ?) OR (periodically_day_from > ?))
OR ((periodically_day_to = ? AND periodically_time_to < ?) OR (periodically_day_to < ?)))',
$number_day_month, $time, $number_day_month,
$number_day_month, $time, $number_day_month);
foreach my $downtime (@downtimes) { foreach my $downtime (@downtimes) {
#Convert to identical type. if (!defined($downtime->{'description'})) {
#my $date_downtime = Time::Piece->strptime( $downtime->{'description'} = "N/A";
# $downtime->{'periodically_time_to'}, }
# "%H:%M:%S");
#my $date_now_time = Time::Piece->strptime(
# $time,
# "%H:%M:%S");
#
#if ($date_now_time <= $date_downtime) {
if (($time gt $downtime->{'periodically_time_to'})
||
($time lt $downtime->{'periodically_time_from'})
||
($downtime->{'periodically_day_from'} > $number_day_month)
||
($downtime->{'periodically_day_to'} < $number_day_month)
) {
if (!defined($downtime->{'description'})) { if (!defined($downtime->{'name'})) {
$downtime->{'description'} = "N/A"; $downtime->{'name'} = "N/A";
} }
if (!defined($downtime->{'name'})) { logger($pa_config, "Stopping planned monthly downtime '" . $downtime->{'name'} . "'.", 10);
$downtime->{'name'} = "N/A";
}
logger($pa_config, "Stopping planned monthly downtime '" . $downtime->{'name'} . "'.", 10); db_do($dbh, 'UPDATE tplanned_downtime
SET executed = 0
WHERE id = ?', $downtime->{'id'});
pandora_event ($pa_config,
"Server ".$pa_config->{'servername'}." stopped planned downtime: ".$downtime->{'name'}, 0, 0, 1, 0, 0, 'system', 0, $dbh);
db_do($dbh, 'UPDATE tplanned_downtime if ($downtime->{'type_downtime'} eq "quiet") {
SET executed = 0 pandora_planned_downtime_unset_quiet_elements($pa_config,
WHERE id = ?', $downtime->{'id'}); $dbh, $downtime->{'id'});
pandora_event ($pa_config, }
"Server ".$pa_config->{'servername'}." stopped planned downtime: ".$downtime->{'name'}, 0, 0, 1, 0, 0, 'system', 0, $dbh); elsif (($downtime->{'type_downtime'} eq "disable_agents")
|| ($downtime->{'type_downtime'} eq "disable_agents_alerts")) {
if ($downtime->{'type_downtime'} eq "quiet") { pandora_planned_downtime_unset_disabled_elements($pa_config,
pandora_planned_downtime_unset_quiet_elements($pa_config, $dbh, $downtime);
$dbh, $downtime->{'id'});
}
elsif (($downtime->{'type_downtime'} eq "disable_agents")
|| ($downtime->{'type_downtime'} eq "disable_agents_alerts")) {
pandora_planned_downtime_unset_disabled_elements($pa_config,
$dbh, $downtime);
}
} }
} }
} }
@ -1763,13 +1716,11 @@ Start the planned downtime, the montly type.
######################################################################## ########################################################################
sub pandora_planned_downtime_weekly_start($$) { sub pandora_planned_downtime_weekly_start($$) {
my ($pa_config, $dbh) = @_; my ($pa_config, $dbh) = @_;
#my $local_time = localtime();
my @var_localtime = localtime(time); my @var_localtime = localtime(time);
#my $number_day_week = $local_time->_wday;
my $number_day_week = $var_localtime[6]; my $number_day_week = $var_localtime[6];
#my $time = $local_time->hms;
my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]); my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]);
my $found = 0; my $found = 0;
@ -1784,6 +1735,7 @@ sub pandora_planned_downtime_weekly_start($$) {
my $across_date = $downtime->{'periodically_time_from'} gt $downtime->{'periodically_time_to'} ? 1 : 0 ; my $across_date = $downtime->{'periodically_time_from'} gt $downtime->{'periodically_time_to'} ? 1 : 0 ;
$found = 0; $found = 0;
$number_day_week = $var_localtime[6];
if ($across_date && ($time lt $downtime->{'periodically_time_to'})) { if ($across_date && ($time lt $downtime->{'periodically_time_to'})) {
$number_day_week--; $number_day_week--;
$number_day_week = 6 if ($number_day_week == -1); $number_day_week = 6 if ($number_day_week == -1);
@ -1820,15 +1772,6 @@ sub pandora_planned_downtime_weekly_start($$) {
my $start_downtime = 0; my $start_downtime = 0;
if ($found) { if ($found) {
#Convert to identical type.
#my $date_downtime = Time::Piece->strptime(
# $downtime->{'periodically_time_from'},
# "%H:%M:%S");
#my $date_now_time = Time::Piece->strptime(
# $time,
# "%H:%M:%S");
#
#if ($date_now_time >= $date_downtime) {
$start_downtime = 1 if (($across_date == 0) $start_downtime = 1 if (($across_date == 0)
&& ((($time gt $downtime->{'periodically_time_from'}) && ((($time gt $downtime->{'periodically_time_from'})
|| ($time eq $downtime->{'periodically_time_from'})) || ($time eq $downtime->{'periodically_time_from'}))
@ -1838,11 +1781,8 @@ sub pandora_planned_downtime_weekly_start($$) {
$start_downtime = 1 if (($across_date == 1) $start_downtime = 1 if (($across_date == 1)
&& ((($time gt $downtime->{'periodically_time_from'}) && ((($time gt $downtime->{'periodically_time_from'})
|| ($time eq $downtime->{'periodically_time_from'})) || ($time eq $downtime->{'periodically_time_from'}))
|| (($time lt $downtime->{'periodically_time_to' || (($time lt $downtime->{'periodically_time_to'})
}) || ($time eq $downtime->{'periodically_time_to'}))));
|| ($time eq $downtime->{'periodically_time_to'}
))));
} }
if ($start_downtime) { if ($start_downtime) {
@ -1850,7 +1790,6 @@ sub pandora_planned_downtime_weekly_start($$) {
$downtime->{'description'} = "N/A"; $downtime->{'description'} = "N/A";
} }
# logger($pa_config, "Starting planned weekly downtime '" . $downtime->{'name'} . "'.", 10);
if (!defined($downtime->{'name'})) { if (!defined($downtime->{'name'})) {
$downtime->{'name'} = "N/A"; $downtime->{'name'} = "N/A";
} }
@ -1885,16 +1824,15 @@ Stop the planned downtime, the montly type.
######################################################################## ########################################################################
sub pandora_planned_downtime_weekly_stop($$) { sub pandora_planned_downtime_weekly_stop($$) {
my ($pa_config, $dbh) = @_; my ($pa_config, $dbh) = @_;
#my $local_time = localtime();
my @var_localtime = localtime(time); my @var_localtime = localtime(time);
#my $number_day_week = $local_time->_wday;
my $number_day_week = $var_localtime[6]; my $number_day_week = $var_localtime[6];
#my $time = $local_time->hms;
my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]); my $time = sprintf("%02d:%02d:%02d", $var_localtime[2], $var_localtime[1], $var_localtime[0]);
my $found = 0; my $found = 0;
my $stop_downtime = 0;
# Start pending downtimes # Start pending downtimes
my @downtimes = get_db_rows($dbh, 'SELECT * my @downtimes = get_db_rows($dbh, 'SELECT *
@ -1904,18 +1842,9 @@ sub pandora_planned_downtime_weekly_stop($$) {
AND executed = 1'); AND executed = 1');
foreach my $downtime (@downtimes) { foreach my $downtime (@downtimes) {
#Convert to identical type.
#my $date_downtime = Time::Piece->strptime(
# $downtime->{'periodically_time_to'},
# "%H:%M:%S");
#my $date_now_time = Time::Piece->strptime(
# $time,
# "%H:%M:%S");
#
#if ($date_now_time <= $date_downtime) {
my $across_date = $downtime->{'periodically_time_from'} gt $downtime->{'periodically_time_to'} ? 1 : 0; my $across_date = $downtime->{'periodically_time_from'} gt $downtime->{'periodically_time_to'} ? 1 : 0;
my $found = 0; $found = 0;
$number_day_week = $var_localtime[6]; $number_day_week = $var_localtime[6];
if ($across_date && ($time lt $downtime->{'periodically_time_from'})) { if ($across_date && ($time lt $downtime->{'periodically_time_from'})) {
$number_day_week--; $number_day_week--;
@ -1951,7 +1880,7 @@ sub pandora_planned_downtime_weekly_stop($$) {
$found = 1; $found = 1;
} }
my $stop_downtime = 0; $stop_downtime = 0;
if ($found) { if ($found) {
$stop_downtime = 1 if (($across_date == 0) $stop_downtime = 1 if (($across_date == 0)
&& ((($time lt $downtime->{'periodically_time_from'}) && ((($time lt $downtime->{'periodically_time_from'})
@ -1966,8 +1895,11 @@ sub pandora_planned_downtime_weekly_stop($$) {
|| ($time eq $downtime->{'periodically_time_to'})))); || ($time eq $downtime->{'periodically_time_to'}))));
} }
else {
$stop_downtime = 1;
}
if ($stop_downtime){ if ($stop_downtime) {
if (!defined($downtime->{'description'})) { if (!defined($downtime->{'description'})) {
$downtime->{'description'} = "N/A"; $downtime->{'description'} = "N/A";
} }