I wrote a small patch against the latest (as of yesterday) unreleased tree in
the mercurial repository.
It requires another CPAN dependency. The Time::Period perl module is used for
defining the time period(s) for sending email alerts.
It currently only a per service option
The configuration option is emailalertperiod.
if not defined it has a default of
wd {Mon-Fri} hr {12am-12pm}
period configuration options are explained in the Time::Period man page.
or you can check them out here
http://search.cpan.org/~pryan/Period-1.20/Period.pm
I did some testing and it seems to work correctly. Let me know what you think.
anthony
--- ldirectord 2009-11-10 04:42:45.000000000 -0500
+++ ldirectord.new 2009-11-11 01:09:36.000000000 -0500
@@ -260,6 +260,14 @@
Default: 0
+B<emailalertperiod = >I<time period>
+
+A valid time period as specified by the Time::Period perl module for sending
+email alerts.
+
+Default: wd {Mon-Fri} hr {12am-12pm}
+
+
B<emailalertstatus =
>B<all>|B<none>|B<starting>|B<running>|B<stopping>|B<reloading>,...
Comma delimited list of server states in which email alerts should be sent.
@@ -737,6 +745,7 @@
$FORKING
$EMAILALERT
$EMAILALERTFREQ
+ $EMAILALERTPERIOD
$EMAILALERTSTATUS
$EMAILALERTFROM
$SMTP
@@ -811,6 +820,7 @@
use Pod::Usage;
#use English;
#use Time::HiRes qw( gettimeofday tv_interval );
+use Time::Period;
use Socket;
use Socket6;
use Sys::Hostname;
@@ -1229,6 +1239,7 @@
$EMAILALERT = "";
$EMAILALERTFREQ = 0;
$EMAILALERTFROM = undef;
+ $EMAILALERTPERIOD = "wd {Mon-Sun} hr {12am-12pm}";
$EMAILALERTSTATUS = $DAEMON_STATUS_ALL;
$FAILURECOUNT = 1;
$FALLBACK = undef;
@@ -1257,6 +1268,7 @@
&config_error(0, "can not open file $CONFIG");
my $line = 0;
my $linedata;
+ my $alertperiod;
while(<CFGFILE>) {
$line++;
$linedata = $_;
@@ -1510,6 +1522,10 @@
} elsif ($rcmd =~
/^emailalertfreq\s*=\s*(\d*)/) {
$1 =~ /(\d+)/ or &config_error($line,
"invalid email alert frequency");
$vsrv{emailalertfreq} = $1;
+ } elsif ($rcmd =~
/^emailalertperiod\s*=\s*(.*)/) {
+ $alertperiod=$1;
+ (inPeriod(time, $alertperiod) != "-1")
or &config_error($line, "invalid email alert period");
+ $vsrv{emailalertperiod} = $1;
} elsif ($rcmd =~
/^emailalertstatus\s*=\s*(.*)/) {
$vsrv{emailalertstatus} =
&parse_emailalertstatus($line, $1);
} elsif ($rcmd =~
/^monitorfile\s*=\s*\"(.*)\"/ or
@@ -1643,6 +1659,11 @@
$1 =~ /(\d+)/ or &config_error($line,
"invalid email alert frequency");
$EMAILALERTFREQ = $1;
+ } elsif ($linedata =~ /^emailalertperiod\s*=\s*(.*)/) {
+ $alertperiod=$1;
+ (inPeriod(time, $alertperiod) != "-1") or
&config_error($line,
+ "invalid email alert period");
+ $EMAILALERTPERIOD = $1;
} elsif ($linedata =~ /^emailalertstatus\s*=\s*(.*)/) {
$EMAILALERTSTATUS = &parse_emailalertstatus($line, $1);
} elsif ($linedata =~ /^emailalertfrom\s*=\s*(.*)/) {
@@ -4193,11 +4214,18 @@
my $status = 0;
my $to_addr;
my $frequency;
+ my $alertperiod;
my $virtual_str;
my $id;
my $statusfilter;
my $smtp_server;
+ $alertperiod = defined $v->{emailalertperiod} ?
+ $v->{emailalertperiod} : $EMAILALERTPERIOD;
+ if (inPeriod(time, $alertperiod) != "1" ){
+ &ld_log("skipping email alert - alert period:".$alertperiod);
+ return 0;
+ }
$frequency = defined $v->{emailalertfreq} ? $v->{emailalert} :
$EMAILALERTFREQ;
@@ -4226,7 +4254,7 @@
$smtp_server = defined $v->{smtp} ? $v->{smtp} :
$SMTP;
- &ld_log("emailalert: $subject");
+ &ld_log("emailalert($alertperiod): $subject");
if (defined $smtp_server) {
$status = &ld_emailalert_net_smtp($smtp_server, $to_addr,
$subject);
}
_______________________________________________
Please read the documentation before posting - it's available at:
http://www.linuxvirtualserver.org/
LinuxVirtualServer.org mailing list - lvs-users@xxxxxxxxxxxxxxxxxxxxxx
Send requests to lvs-users-request@xxxxxxxxxxxxxxxxxxxxxx
or go to http://lists.graemef.net/mailman/listinfo/lvs-users
|