fenced: send dbus signal when node is fenced
PATCH 1/1 fenced: send dbus signal when node is fenced
This patch adds the ability to send a dbus signal when a node is fenced. This code is can reestablish a connection with dbus if necessary.
Signed-off-by Ryan O'Hara <[email protected]>
--- fence/fenced/Makefile | 7 +++++-- fence/fenced/config.c | 2 ++ fence/fenced/config.h | 3 +++ fence/fenced/fd.h | 10 ++++++++++ fence/fenced/main.c | 14 ++++++++++++-- fence/fenced/recover.c | 2 ++ 6 files changed, 34 insertions(+), 4 deletions(-)
fence/fenced/Makefile +5 -2
@@ -16,19 +16,22 @@ OBJS= config.o \ main.o \ member_cman.o \ recover.o \ - logging.o + logging.o \ + dbus.o -CFLAGS += -D_FILE_OFFSET_BITS=64 +CFLAGS += -D_FILE_OFFSET_BITS=64 -DDBUS CFLAGS += -I${ccsincdir} -I${cmanincdir} -I${logtincdir} -I${corosyncincdir} CFLAGS += -I${fenceincdir} -I${fencedincdir} CFLAGS += -I$(S) -I$(S)/../include -I$(SRCDIR)/group/lib CFLAGS += -I${incdir} +CFLAGS += $(shell pkg-config --cflags dbus-1) LDFLAGS += -L${ccslibdir} -L${cmanlibdir} -lccs -lcman LDFLAGS += -L${logtlibdir} -L${fencelibdir} -llogthread -lfence LDFLAGS += -L${corosynclibdir} -lcpg -lpthread LDFLAGS += -L../../group/lib -l group LDFLAGS += -L${libdir} +LDFLAGS += $(shell pkg-config --libs dbus-1) LDDEPS += ../../group/lib/libgroup.a
fence/fenced/config.c +2 -0
@@ -9,6 +9,7 @@ int ccs_handle;int optd_groupd_compat;int optd_debug_logfile;int optd_clean_start; +int optd_disable_dbus;int optd_skip_undefined;int optd_post_join_delay;int optd_post_fail_delay;
@@ -20,6 +21,7 @@ int optd_override_path;int cfgd_groupd_compat =DEFAULT_GROUPD_COMPAT ;int cfgd_debug_logfile =DEFAULT_DEBUG_LOGFILE ;int cfgd_clean_start =DEFAULT_CLEAN_START ; +int cfgd_disable_dbus =DEFAULT_DISABLE_DBUS ;int cfgd_skip_undefined =DEFAULT_SKIP_UNDEFINED ;int cfgd_post_join_delay =DEFAULT_POST_JOIN_DELAY ;int cfgd_post_fail_delay =DEFAULT_POST_FAIL_DELAY ;
fence/fenced/config.h +3 -0
@@ -4,6 +4,7 @@#define DEFAULT_GROUPD_COMPAT 0#define DEFAULT_DEBUG_LOGFILE 0#define DEFAULT_CLEAN_START 0 +#define DEFAULT_DISABLE_DBUS 0#define DEFAULT_SKIP_UNDEFINED 0#define DEFAULT_POST_JOIN_DELAY 6#define DEFAULT_POST_FAIL_DELAY 0
@@ -13,6 +14,7 @@extern int optd_groupd_compat;extern int optd_debug_logfile;extern int optd_clean_start; +extern int optd_disable_dbus;extern int optd_skip_undefined;extern int optd_post_join_delay;extern int optd_post_fail_delay;
@@ -22,6 +24,7 @@ extern int optd_override_path;extern int cfgd_groupd_compat;extern int cfgd_debug_logfile;extern int cfgd_clean_start; +extern int cfgd_disable_dbus;extern int cfgd_skip_undefined;extern int cfgd_post_join_delay;extern int cfgd_post_fail_delay;
fence/fenced/fd.h +10 -0
@@ -23,6 +23,10 @@#include <sys/select.h> #include <sys/time.h> +#ifdef DBUS +#include <dbus/dbus.h> +#endif +#include <openais/saAis.h> #include <corosync/cpg.h> #include <liblogthread.h>
@@ -286,5 +290,11 @@ void init_logging(void);void setup_logging (void );void close_logging (void ); +/* dbus.c */ + +void dbus_init (void ); +void dbus_exit (void ); +void dbus_send (const char *nodename,int nodeid,int result); +#endif /* __FD_DOT_H__ */
fence/fenced/main.c +12 -2
@@ -902,7 +902,7 @@ static void print_usage(void)printf (" -j <secs> Post-join fencing delay (default %d)\n" ,DEFAULT_POST_JOIN_DELAY );printf (" -f <secs> Post-fail fencing delay (default %d)\n" ,DEFAULT_POST_FAIL_DELAY );printf (" -R <secs> Override time (default %d)\n" ,DEFAULT_OVERRIDE_TIME ); - +printf (" -q Disable dbus signals\n" );printf (" -O <path> Override path (default %s)\n" ,DEFAULT_OVERRIDE_PATH );printf (" -h Print this help, then exit\n" );printf (" -V Print program version information, then exit\n" );
@@ -912,7 +912,7 @@ static void print_usage(void)printf ("\n" ); } -#define OPTION_STRING "Lg:cj:f:Dn:O:hVSse:r:" +#define OPTION_STRING "Lg:cj:f:Dn:O:hVSse:r:q"static void read_arguments (int argc,char **argv) {
@@ -970,6 +970,11 @@ static void read_arguments(int argc, char **argv) cfgd_override_path =strdup (optarg);break ; +case 'q' : + optd_disable_dbus =1 ; + cfgd_disable_dbus =1 ; +break ; +case 'r' :register_controlled_dir (optarg);break ;
@@ -1042,8 +1047,13 @@ int main(int argc, char **argv)signal (SIGTERM , sigterm_handler);set_oom_adj (-16 ); +if (!optd_disable_dbus) { +dbus_init (); + } +loop (); +dbus_exit ();unlink (LOCKFILE_NAME );return 0 ; }
fence/fenced/recover.c +2 -0
@@ -384,6 +384,8 @@ void fence_victims(struct fd *fd)log_error ("fence %s %s" , node->name, error ?"failed" :"success" ); +dbus_send (node->name, node->nodeid, error); + skip_log_message:if (!error) { node->local_victim_done =1 ;
Signature · 1 line
1.7.2.3
PATCH 1/1 fenced: send dbus signal when node is fenced
Quoted 2 lines · Ryan O'Hara
This patch adds the ability to send a dbus signal when a node is fenced. This code is can reestablish a connection with dbus if necessary.
(As discussed on IRC: missing dbus.c)
-- Lon