From f5642908728ea0b77dc55984f4c8a228f8ff1a17 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Thu, 8 Jun 2017 14:45:43 +1000 Subject: [PATCH 1/2] ctdb-scripts: NFS call-out failures should cause event failure Failures in startup/shutdown/releaseip/takeip are currently incorrectly ignored. BUG: https://bugzilla.samba.org/show_bug.cgi?id=12837 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs (cherry picked from commit 22f2068d456759612d340fdcc56276f39a710426) --- ctdb/config/events.d/60.nfs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ctdb/config/events.d/60.nfs b/ctdb/config/events.d/60.nfs index 02d6e2b..98a18c3 100755 --- a/ctdb/config/events.d/60.nfs +++ b/ctdb/config/events.d/60.nfs @@ -256,20 +256,20 @@ is_ctdb_managed_service || exit 0 case "$1" in startup) - nfs_callout "$@" + nfs_callout "$@" || exit $? ;; shutdown) - nfs_callout "$@" + nfs_callout "$@" || exit $? ;; takeip) - nfs_callout "$@" + nfs_callout "$@" || exit $? ctdb_service_set_reconfigure ;; releaseip) - nfs_callout "$@" + nfs_callout "$@" || exit $? ctdb_service_set_reconfigure ;; -- 2.9.4 From 18ba2e4a9a2ea60d47fcfe0fa6166193261ecb79 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Fri, 9 Jun 2017 10:57:28 +1000 Subject: [PATCH 2/2] ctdb-tests: Add more NFS eventscript tests for call-out failures BUG: https://bugzilla.samba.org/show_bug.cgi?id=12837 Signed-off-by: Martin Schwenke Reviewed-by: Amitay Isaacs (cherry picked from commit 323291a46e26e0493d43052550e57e2989b83b97) --- ctdb/tests/eventscripts/06.nfs.releaseip.001.sh | 12 ++++++++++++ ctdb/tests/eventscripts/06.nfs.releaseip.002.sh | 12 ++++++++++++ ctdb/tests/eventscripts/06.nfs.takeip.001.sh | 12 ++++++++++++ ctdb/tests/eventscripts/06.nfs.takeip.002.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.monitor.109.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.releaseip.001.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.releaseip.002.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.shutdown.001.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.shutdown.002.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.startup.001.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.startup.002.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.takeip.001.sh | 12 ++++++++++++ ctdb/tests/eventscripts/60.nfs.takeip.002.sh | 12 ++++++++++++ 13 files changed, 156 insertions(+) create mode 100755 ctdb/tests/eventscripts/06.nfs.releaseip.001.sh create mode 100755 ctdb/tests/eventscripts/06.nfs.releaseip.002.sh create mode 100755 ctdb/tests/eventscripts/06.nfs.takeip.001.sh create mode 100755 ctdb/tests/eventscripts/06.nfs.takeip.002.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.monitor.109.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.releaseip.001.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.releaseip.002.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.shutdown.001.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.shutdown.002.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.startup.001.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.startup.002.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.takeip.001.sh create mode 100755 ctdb/tests/eventscripts/60.nfs.takeip.002.sh diff --git a/ctdb/tests/eventscripts/06.nfs.releaseip.001.sh b/ctdb/tests/eventscripts/06.nfs.releaseip.001.sh new file mode 100755 index 0000000..8f590b0 --- /dev/null +++ b/ctdb/tests/eventscripts/06.nfs.releaseip.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'true'" + +setup_nfs + +export CTDB_NFS_CALLOUT="true" + +ok_null +simple_test diff --git a/ctdb/tests/eventscripts/06.nfs.releaseip.002.sh b/ctdb/tests/eventscripts/06.nfs.releaseip.002.sh new file mode 100755 index 0000000..c0b8939 --- /dev/null +++ b/ctdb/tests/eventscripts/06.nfs.releaseip.002.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes releaseip-pre to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo releaseip-pre ; false" + +required_result 1 "releaseip-pre" +simple_test diff --git a/ctdb/tests/eventscripts/06.nfs.takeip.001.sh b/ctdb/tests/eventscripts/06.nfs.takeip.001.sh new file mode 100755 index 0000000..8f590b0 --- /dev/null +++ b/ctdb/tests/eventscripts/06.nfs.takeip.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'true'" + +setup_nfs + +export CTDB_NFS_CALLOUT="true" + +ok_null +simple_test diff --git a/ctdb/tests/eventscripts/06.nfs.takeip.002.sh b/ctdb/tests/eventscripts/06.nfs.takeip.002.sh new file mode 100755 index 0000000..1baf351 --- /dev/null +++ b/ctdb/tests/eventscripts/06.nfs.takeip.002.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes takeip-pre to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo takeip-pre ; false" + +required_result 1 "takeip-pre" +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.monitor.109.sh b/ctdb/tests/eventscripts/60.nfs.monitor.109.sh new file mode 100755 index 0000000..a86f6d9 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.monitor.109.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes monitor-post to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo monitor-post ; false" + +required_result 1 "monitor-post" +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.releaseip.001.sh b/ctdb/tests/eventscripts/60.nfs.releaseip.001.sh new file mode 100755 index 0000000..8f590b0 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.releaseip.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'true'" + +setup_nfs + +export CTDB_NFS_CALLOUT="true" + +ok_null +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.releaseip.002.sh b/ctdb/tests/eventscripts/60.nfs.releaseip.002.sh new file mode 100755 index 0000000..68f636f --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.releaseip.002.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes releaseip to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo releaseip ; false" + +required_result 1 "releaseip" +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.shutdown.001.sh b/ctdb/tests/eventscripts/60.nfs.shutdown.001.sh new file mode 100755 index 0000000..8f590b0 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.shutdown.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'true'" + +setup_nfs + +export CTDB_NFS_CALLOUT="true" + +ok_null +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.shutdown.002.sh b/ctdb/tests/eventscripts/60.nfs.shutdown.002.sh new file mode 100755 index 0000000..b8bb560 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.shutdown.002.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes shutdown to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo shutdown ; false" + +required_result 1 "shutdown" +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.startup.001.sh b/ctdb/tests/eventscripts/60.nfs.startup.001.sh new file mode 100755 index 0000000..8f590b0 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.startup.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'true'" + +setup_nfs + +export CTDB_NFS_CALLOUT="true" + +ok_null +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.startup.002.sh b/ctdb/tests/eventscripts/60.nfs.startup.002.sh new file mode 100755 index 0000000..e020c9d --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.startup.002.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes startup to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo startup ; false" + +required_result 1 "startup" +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.takeip.001.sh b/ctdb/tests/eventscripts/60.nfs.takeip.001.sh new file mode 100755 index 0000000..8f590b0 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.takeip.001.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'true'" + +setup_nfs + +export CTDB_NFS_CALLOUT="true" + +ok_null +simple_test diff --git a/ctdb/tests/eventscripts/60.nfs.takeip.002.sh b/ctdb/tests/eventscripts/60.nfs.takeip.002.sh new file mode 100755 index 0000000..4fc3f72 --- /dev/null +++ b/ctdb/tests/eventscripts/60.nfs.takeip.002.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +. "${TEST_SCRIPTS_DIR}/unit.sh" + +define_test "callout is 'false', causes takeip to fail" + +setup_nfs + +export CTDB_NFS_CALLOUT="echo takeip ; false" + +required_result 1 "takeip" +simple_test -- 2.9.4