summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2007-05-29 12:55:24 +1000
committerAndrew Tridgell <tridge@samba.org>2007-05-29 12:55:24 +1000
commitead091449b0fec481bf361dfc8fbf68f9d6df7be (patch)
tree1bc9477476d0d7fd791c9fa0ce28a56d3d71f687
parentdfadb6031805d70579ddb625d1efddb70a3c2754 (diff)
downloadsamba-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.c1
-rw-r--r--ctdb/include/ctdb_private.h2
-rw-r--r--ctdb/takeover/ctdb_takeover.c20
-rw-r--r--ctdb/takeover/system.c25
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;
+}
+