diff options
| author | Andrew Tridgell <tridge@samba.org> | 2007-05-29 12:55:24 +1000 |
|---|---|---|
| committer | Andrew Tridgell <tridge@samba.org> | 2007-05-29 12:55:24 +1000 |
| commit | ead091449b0fec481bf361dfc8fbf68f9d6df7be (patch) | |
| tree | 1bc9477476d0d7fd791c9fa0ce28a56d3d71f687 | |
| parent | dfadb6031805d70579ddb625d1efddb70a3c2754 (diff) | |
| download | samba-ead091449b0fec481bf361dfc8fbf68f9d6df7be.tar.gz samba-ead091449b0fec481bf361dfc8fbf68f9d6df7be.tar.xz samba-ead091449b0fec481bf361dfc8fbf68f9d6df7be.zip | |
call the event script on recovery too
(This used to be ctdb commit 8c43a91cbd6e502c93bd6cc51df1272eae426709)
| -rw-r--r-- | ctdb/common/ctdb_recover.c | 1 | ||||
| -rw-r--r-- | ctdb/include/ctdb_private.h | 2 | ||||
| -rw-r--r-- | ctdb/takeover/ctdb_takeover.c | 20 | ||||
| -rw-r--r-- | ctdb/takeover/system.c | 25 |
4 files changed, 27 insertions, 21 deletions
diff --git a/ctdb/common/ctdb_recover.c b/ctdb/common/ctdb_recover.c index 604ba1fa2d..847d9e5abc 100644 --- a/ctdb/common/ctdb_recover.c +++ b/ctdb/common/ctdb_recover.c @@ -447,6 +447,7 @@ int32_t ctdb_control_set_recmode(struct ctdb_context *ctdb, TDB_DATA indata, return -1; } ctdb->recovery_mode = recmode; + ctdb_event_script(ctdb, "recovered"); return 0; } diff --git a/ctdb/include/ctdb_private.h b/ctdb/include/ctdb_private.h index a5f98b3d3f..f5d93b5301 100644 --- a/ctdb/include/ctdb_private.h +++ b/ctdb/include/ctdb_private.h @@ -945,6 +945,6 @@ int32_t ctdb_control_tcp_remove(struct ctdb_context *ctdb, TDB_DATA indata); int32_t ctdb_control_startup(struct ctdb_context *ctdb, uint32_t vnn); void ctdb_takeover_client_destructor_hook(struct ctdb_client *client); - +int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...); #endif diff --git a/ctdb/takeover/ctdb_takeover.c b/ctdb/takeover/ctdb_takeover.c index aa358c5fd3..02e2825e6b 100644 --- a/ctdb/takeover/ctdb_takeover.c +++ b/ctdb/takeover/ctdb_takeover.c @@ -93,26 +93,6 @@ static void ctdb_control_send_arp(struct event_context *ev, struct timed_event * /* - run the event script - */ -static int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...) -{ - va_list ap; - char *cmdstr; - int ret; - - va_start(ap, fmt); - cmdstr = talloc_vasprintf(ctdb, fmt, ap); - va_end(ap); - CTDB_NO_MEMORY(ctdb, cmdstr); - - ret = system(cmdstr); - talloc_free(cmdstr); - - return ret; -} - -/* take over an ip address */ int32_t ctdb_control_takeover_ip(struct ctdb_context *ctdb, TDB_DATA indata) diff --git a/ctdb/takeover/system.c b/ctdb/takeover/system.c index db55f2c209..493eddefa7 100644 --- a/ctdb/takeover/system.c +++ b/ctdb/takeover/system.c @@ -257,3 +257,28 @@ bool ctdb_sys_have_ip(const char *ip) return ret == 0; } +/* + run the event script + */ +int ctdb_event_script(struct ctdb_context *ctdb, const char *fmt, ...) +{ + va_list ap; + char *options, *cmdstr; + int ret; + + va_start(ap, fmt); + options = talloc_vasprintf(ctdb, fmt, ap); + va_end(ap); + CTDB_NO_MEMORY(ctdb, options); + + cmdstr = talloc_asprintf(ctdb, "%s %s", ctdb->takeover.event_script, options); + CTDB_NO_MEMORY(ctdb, cmdstr); + + ret = system(cmdstr); + + talloc_free(cmdstr); + talloc_free(options); + + return ret; +} + |
