Send Linux-ha-cvs mailing list submissions to
[email protected]
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Linux-ha-cvs digest..."
Today's Topics:
1. Linux-HA CVS: ldirectord by horms from
([email protected])
2. Linux-HA CVS: ldirectord by horms from
([email protected])
3. Linux-HA CVS: ldirectord by horms from
([email protected])
----------------------------------------------------------------------
Message: 1
Date: Tue, 15 Aug 2006 02:46:22 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: ldirectord by horms from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : horms
Host :
Project : linux-ha
Module : ldirectord
Dir : linux-ha/ldirectord
Modified Files:
Tag: STABLE_1_2
ldirectord
Log Message:
Add Daemon Status
Keep track of the status of the daemon.
Currently one of: starting, running, stopping, reloading
Backport of 1.173 (ldirectord.cf 1.29)
Signed-Off-By: Simon Horman <[EMAIL PROTECTED]>
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/Attic/ldirectord,v
retrieving revision 1.77.2.76
retrieving revision 1.77.2.77
diff -u -3 -r1.77.2.76 -r1.77.2.77
--- ldirectord 15 Aug 2006 08:44:43 -0000 1.77.2.76
+++ ldirectord 15 Aug 2006 08:46:21 -0000 1.77.2.77
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-my($VERSION)=(qw$Id: ldirectord,v 1.77.2.76 2006/08/15 08:44:43 horms Exp
$)[2];
+my($VERSION)=(qw$Id: ldirectord,v 1.77.2.77 2006/08/15 08:46:21 horms Exp
$)[2];
######################################################################
# ldirectord http://www.vergenet.net/linux/ldirectord/
@@ -487,7 +487,6 @@
$CONNECTTIMEOUT
$LDIRECTORD
$LDIRLOG
- $LD_TERM_CALLED
$NEGOTIATETIMEOUT
$RUNPID
$CHECKTIMEOUT
@@ -505,7 +504,11 @@
$SUPERVISED
$IPVSADM
$checksum
- $initializing
+ $DAEMON_STATUS
+ $DAEMON_STATUS_STARTING
+ $DAEMON_STATUS_RUNNING
+ $DAEMON_STATUS_STOPPING
+ $DAEMON_STATUS_RELOADING
$opt_d
$opt_h
$pid
@@ -520,6 +523,11 @@
$CRLF
);
+$DAEMON_STATUS_STARTING = 0x1;
+$DAEMON_STATUS_RUNNING = 0x2;
+$DAEMON_STATUS_STOPPING = 0x4;
+$DAEMON_STATUS_RELOADING = 0x8;
+
# default values
$AUTOCHECK = "no";
$CHECKINTERVAL = 10;
@@ -531,7 +539,6 @@
$LDIRECTORD = "/usr/sbin/ldirectord";
}
$LDIRLOG = "/var/log/ldirectord.log";
-$LD_TERM_CALLED = 0;
$NEGOTIATETIMEOUT = 0;
$RUNPID = "/var/run/ldirectord";
$SUPERVISED = "no";
@@ -600,12 +607,12 @@
exec_wrapper($0, @OLD_ARGV);
}
-$initializing = 1;
+$DAEMON_STATUS = $DAEMON_STATUS_STARTING;
ld_init();
ld_setup();
ld_start();
ld_cmd_children("start", %LD_INSTANCE);
-$initializing = 0;
+$DAEMON_STATUS = $DAEMON_STATUS_RUNNING;
ld_main();
&ld_rm_file("$RUNPID.$CFGNAME.pid");
@@ -788,12 +795,12 @@
sub ld_handler_term
{
my ($signal) = (@_);
- if ($LD_TERM_CALLED){
+ if ($DAEMON_STATUS == $DAEMON_STATUS_STOPPING) {
$SIG{'__DIE__'} = "IGNORE";
$SIG{"$signal"} = "IGNORE";
die("Exit Handler Repeatedly Called\n");
}
- $LD_TERM_CALLED = 1;
+ $DAEMON_STATUS = $DAEMON_STATUS_STOPPING;
ld_cmd_children("stop", %LD_INSTANCE);
ld_stop();
@@ -815,6 +822,7 @@
{
@OLDVIRTUAL = @VIRTUAL;
my %OLD_INSTANCE = %LD_INSTANCE;
+ $DAEMON_STATUS = $DAEMON_STATUS_RELOADING;
eval {
&read_config();
my %NEW_INSTANCE = %LD_INSTANCE;
@@ -837,6 +845,7 @@
@VIRTUAL = @OLDVIRTUAL;
%LD_INSTANCE = %OLD_INSTANCE;
}
+ $DAEMON_STATUS = $DAEMON_STATUS_RUNNING;
undef @OLDVIRTUAL;
}
@@ -1529,7 +1538,7 @@
}
$msg = "$msg_prefix: $msg";
- if ($opt_d or $initializing==1) {
+ if ($opt_d or $DAEMON_STATUS == $DAEMON_STATUS_STARTING) {
print STDERR $msg;
}
else {
@@ -1551,7 +1560,7 @@
my ($line, $msg) = @_;
__config_log($line, "Error", $msg);
- if ($initializing) {
+ if ($DAEMON_STATUS == $DAEMON_STATUS_STARTING) {
&ld_rm_file("$RUNPID.$CFGNAME.pid");
&ld_exit(2, "config_error: Configuration Error");
} else {
------------------------------
Message: 2
Date: Tue, 15 Aug 2006 02:47:23 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: ldirectord by horms from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : horms
Host :
Project : linux-ha
Module : ldirectord
Dir : linux-ha/ldirectord
Modified Files:
Tag: STABLE_1_2
ldirectord
Log Message:
Add daemon status to body of email alerts
Backport of 1.174 (ldirectord.in 1.30)
Signed-Off-By: Simon Horman <[EMAIL PROTECTED]>
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/Attic/ldirectord,v
retrieving revision 1.77.2.77
retrieving revision 1.77.2.78
diff -u -3 -r1.77.2.77 -r1.77.2.78
--- ldirectord 15 Aug 2006 08:46:21 -0000 1.77.2.77
+++ ldirectord 15 Aug 2006 08:47:23 -0000 1.77.2.78
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-my($VERSION)=(qw$Id: ldirectord,v 1.77.2.77 2006/08/15 08:46:21 horms Exp
$)[2];
+my($VERSION)=(qw$Id: ldirectord,v 1.77.2.78 2006/08/15 08:47:23 horms Exp
$)[2];
######################################################################
# ldirectord http://www.vergenet.net/linux/ldirectord/
@@ -3164,6 +3164,24 @@
}
+sub daemon_status_str
+{
+ if ($DAEMON_STATUS == $DAEMON_STATUS_STARTING) {
+ return "starting";
+ }
+ elsif ($DAEMON_STATUS == $DAEMON_STATUS_RUNNING) {
+ return "running";
+ }
+ elsif ($DAEMON_STATUS == $DAEMON_STATUS_STOPPING) {
+ return "stopping";
+ }
+ elsif ($DAEMON_STATUS == $DAEMON_STATUS_RELOADING) {
+ return "reloading";
+ }
+ return "UNKNOWN";
+}
+
+
# ld_emailalert_send
# Send email alerts per virtual server
# pre: message: Message to email
@@ -3207,7 +3225,9 @@
unless ($emailmsg = new Mail::Send Subject=>$subject, To=>$to_addr
and $emailfh = $emailmsg->open
- and print $emailfh $subject
+ and print $emailfh "Log-Message: $subject\n" .
+ "Daemon-Status: " .
+ &daemon_status_str() . "\n"
and $emailfh->close) {
&ld_log("failed to send email message\n");
$status = 1;
------------------------------
Message: 3
Date: Tue, 15 Aug 2006 02:48:57 -0600 (MDT)
From: [email protected]
Subject: [Linux-ha-cvs] Linux-HA CVS: ldirectord by horms from
To: [EMAIL PROTECTED]
Message-ID: <[EMAIL PROTECTED]>
linux-ha CVS committal
Author : horms
Host :
Project : linux-ha
Module : ldirectord
Dir : linux-ha/ldirectord
Modified Files:
Tag: STABLE_1_2
ldirectord ldirectord.cf
Log Message:
Add emailalertstatus
Filter sending emailalerts based on the daemon's status
Backport of 1.176 (ldirectord.in 1.32)
Signed-Off-By: Simon Horman <[EMAIL PROTECTED]>
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/Attic/ldirectord,v
retrieving revision 1.77.2.78
retrieving revision 1.77.2.79
diff -u -3 -r1.77.2.78 -r1.77.2.79
--- ldirectord 15 Aug 2006 08:47:23 -0000 1.77.2.78
+++ ldirectord 15 Aug 2006 08:48:57 -0000 1.77.2.79
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-my($VERSION)=(qw$Id: ldirectord,v 1.77.2.78 2006/08/15 08:47:23 horms Exp
$)[2];
+my($VERSION)=(qw$Id: ldirectord,v 1.77.2.79 2006/08/15 08:48:57 horms Exp
$)[2];
######################################################################
# ldirectord http://www.vergenet.net/linux/ldirectord/
@@ -205,6 +205,19 @@
Default: 0
+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.
+B<all> is a short-hand for
+"B<starting>,B<running>,B<stopping>,B<reloading>". If B<none> is
+specified, no other option may be specified, otherwise options are ored
+with each other.
+
+If defined in a virtual server section then the global value is overridden.
+
+Default: all
+
+
B<execute = ">I<configuration>B<">
Use this directive to start an instance of ldirectord for
@@ -494,6 +507,7 @@
$QUIESCENT
$EMAILALERT
$EMAILALERTFREQ
+ $EMAILALERTSTATUS
$CALLBACK
$CFGNAME
@@ -509,6 +523,7 @@
$DAEMON_STATUS_RUNNING
$DAEMON_STATUS_STOPPING
$DAEMON_STATUS_RELOADING
+ $DAEMON_STATUS_ALL
$opt_d
$opt_h
$pid
@@ -527,6 +542,10 @@
$DAEMON_STATUS_RUNNING = 0x2;
$DAEMON_STATUS_STOPPING = 0x4;
$DAEMON_STATUS_RELOADING = 0x8;
+$DAEMON_STATUS_ALL = $DAEMON_STATUS_STARTING |
+ $DAEMON_STATUS_RUNNING |
+ $DAEMON_STATUS_STOPPING |
+ $DAEMON_STATUS_RELOADING;
# default values
$AUTOCHECK = "no";
@@ -545,6 +564,7 @@
$QUIESCENT = "yes";
$EMAILALERT = "";
$EMAILALERTFREQ = 0;
+$EMAILALERTSTATUS = $DAEMON_STATUS_ALL;
$CRLF = "\x0d\x0a";
@@ -849,6 +869,50 @@
undef @OLDVIRTUAL;
}
+sub parse_emailalertstatus
+{
+ my ($line, $arg) = (@_);
+
+ my @s = split/\s*,\s*/, $arg;
+ my $none = 0;
+ my $status = 0;
+
+ for my $i (@s) {
+ if ($i eq "none") {
+ $none++;
+ }
+ }
+
+ for my $i (@s) {
+ if ($i eq "none") {
+ next;
+ }
+ elsif ($i eq "all") {
+ $status = $DAEMON_STATUS_ALL;
+ }
+ elsif ($i eq "starting") {
+ $status |= $DAEMON_STATUS_STARTING;
+ }
+ elsif ($i eq "stopping") {
+ $status |= $DAEMON_STATUS_STOPPING;
+ }
+ elsif ($i eq "running") {
+ $status |= $DAEMON_STATUS_RUNNING;
+ }
+ elsif ($i eq "reloading") {
+ $status |= $DAEMON_STATUS_RELOADING;
+ }
+ else {
+ &config_error($line,
+ "invalid email alert status at: \"$i\"")
+ }
+ if ($none > 0) {
+ &config_error($line, "invalid email alert status: " .
+ "\"$i\" specified with \"none\"");
+ }
+ }
+ return $status;
+}
sub read_config
{
@@ -1056,6 +1120,8 @@
} elsif ($rcmd =~
/^emailalertfreq\s*=\s*(\d*)/) {
$1 =~ /(\d+)/ or &config_error($line,
"invalid email alert frequency");
$vsrv{emailalertfreq} = $1;
+ } elsif ($_ =~ /^emailalertstatus\s*=\s*(.*)/)
{
+ $vsrv{emailalertstatus} =
&parse_emailalertstatus($line, $1);
} else {
&config_error($line, "Unknown command
$_");
}
@@ -1166,6 +1232,8 @@
$1 =~ /(\d+)/ or &config_error($line,
"invalid email alert frequency");
$EMAILALERTFREQ = $1;
+ } elsif ($_ =~ /^emailalertstatus\s*=\s*(.*)/) {
+ $EMAILALERTSTATUS = &parse_emailalertstatus($line, $1);
} else {
if ($_ =~ /^timeout\s*=\s*(.*)/) {
&config_error($line,
@@ -3199,6 +3267,7 @@
my $frequency;
my $virtual_str;
my $id;
+ my $statusfilter;
$virtual_str = &get_virtual($v);
$id = "$rserver ($virtual_str)";
@@ -3211,6 +3280,12 @@
$EMAILSTATUS{$id}->{alerttime} = $currenttime;
}
+ $statusfilter = defined $v->{emailalertstatus} ?
+ $v->{emailalertstatus} : $EMAILALERTSTATUS;
+ if (($DAEMON_STATUS & $statusfilter) == 0) {
+ return 0;
+ }
+
$to_addr = defined $v->{emailalert} ? $v->{emailalert} : $EMAILALERT;
if ($to_addr eq "") {
return 0;
===================================================================
RCS file: /home/cvs/linux-ha/linux-ha/ldirectord/ldirectord.cf,v
retrieving revision 1.19.2.12
retrieving revision 1.19.2.13
diff -u -3 -r1.19.2.12 -r1.19.2.13
--- ldirectord.cf 15 Aug 2006 08:30:08 -0000 1.19.2.12
+++ ldirectord.cf 15 Aug 2006 08:48:57 -0000 1.19.2.13
@@ -17,6 +17,7 @@
#logfile="local0"
#emailalert="[EMAIL PROTECTED]"
#emailalertfreq=3600
+#emailalertstatus=all
quiescent=yes
# Sample for an http virtual service
------------------------------
_______________________________________________
Linux-ha-cvs mailing list
[email protected]
http://lists.community.tummy.com/mailman/listinfo/linux-ha-cvs
End of Linux-ha-cvs Digest, Vol 33, Issue 57
********************************************