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 | 8 ++++- fence/fenced/config.c | 2 + fence/fenced/config.h | 3 ++ fence/fenced/dbus.c | 87 ++++++++++++++++++++++++++++++++++++++++++++++++ fence/fenced/fd.h | 6 +++ fence/fenced/main.c | 14 +++++++- fence/fenced/recover.c | 4 ++ 7 files changed, 121 insertions(+), 3 deletions(-) create mode 100644 fence/fenced/dbus.c
fence/fenced/Makefile +7 -1
@@ -16,7 +16,8 @@ OBJS= config.o \ main.o \ member_cman.o \ recover.o \ - logging.o + logging.o \ + dbus.o CFLAGS += -D_FILE_OFFSET_BITS=64 CFLAGS += -I${ccsincdir} -I${cmanincdir} -I${logtincdir} -I${corosyncincdir}
@@ -30,6 +31,11 @@ LDFLAGS += -L${corosynclibdir} -lcpg -lpthread LDFLAGS += -L../../group/lib -l group LDFLAGS += -L${libdir} +ifndef disable_dbus +CFLAGS += $(shell pkg-config --cflags dbus-1) -DDBUS +LDFLAGS += $(shell pkg-config --libs dbus-1) +endif + LDDEPS += ../../group/lib/libgroup.a ${TARGET}: ${OBJS} ${LDDEPS}
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/dbus.c new file +87 -0
87 lines not on this page · raw message
fence/fenced/fd.h +6 -0
@@ -286,5 +286,11 @@ void init_logging(void);void setup_logging (void );void close_logging (void ); +/* dbus.c */ + +void fd_dbus_init (void ); +void fd_dbus_exit (void ); +void fd_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 (!cfgd_disable_dbus) { +dbus_init (); + } +loop (); +dbus_exit ();unlink (LOCKFILE_NAME );return 0 ; }
fence/fenced/recover.c +4 -0
@@ -384,6 +384,10 @@ void fence_victims(struct fd *fd)log_error ("fence %s %s" , node->name, error ?"failed" :"success" ); +if (!cfgd_disable_dbus) { +fd_dbus_send (node->name, node->nodeid, error); + } + skip_log_message:if (!error) { node->local_victim_done =1 ;
Signature · 1 line
1.7.3.4
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.
ACK