summaryrefslogtreecommitdiff
path: root/ovn
diff options
context:
space:
mode:
authorNuman Siddique <nusiddiq@redhat.com>2017-05-22 07:05:12 +0530
committerAndy Zhou <azhou@ovn.org>2017-05-22 16:48:45 -0700
commit52727f4858d76a0c1668a8b0d4e42c16ddfe263c (patch)
tree146b0b78de0834eaacf98d1a252c173ebeb679f8 /ovn
parent0b4f83e2dce44625daa56983c34ccd14a32bf762 (diff)
downloadopenvswitch-52727f4858d76a0c1668a8b0d4e42c16ddfe263c.tar.gz
ovn pacemaker: Fix return code errors in start/stop action
start action returns OCF_RUNNING_MASTER in certain scenarios. But as per the OCF guidelines, status code OCF_RUNNING_MASTER shoud be returned only in monitor action [1]. Whenever the start action returns OCF_RUNNING_MASTER, it is observed in the testing that, pacemaker stops the ovsdb-server ocf resource in that node. This patch fixes this issue by returning OCF_SUCESS in such cases. stop action returns OCF_RUNNING_MASTER if the ovsdb-servers are running as master. But as per the OCF guidelines [2], stop action should only return OCF_SUCCESS. If any other code is returned, pacemaker cluster would block that resource in that node. This patch fixes this issue by stopping the ovsdb-servers when they are running as masters (which is the expected case) and returns OCF_SUCCESS. [1] - http://www.linux-ha.org/doc/dev-guides/_literal_ocf_running_master_literal_8.html [2] - http://www.linux-ha.org/doc/dev-guides/_literal_stop_literal_action.html CC: Andy Zhou <azhou@ovn.org> Signed-off-by: Numan Siddique <nusiddiq@redhat.com> Signed-off-by: Andy Zhou <azhou@ovn.org>
Diffstat (limited to 'ovn')
-rwxr-xr-xovn/utilities/ovndb-servers.ocf14
1 files changed, 12 insertions, 2 deletions
diff --git a/ovn/utilities/ovndb-servers.ocf b/ovn/utilities/ovndb-servers.ocf
index 908cb3c17..ad03cc3a3 100755
--- a/ovn/utilities/ovndb-servers.ocf
+++ b/ovn/utilities/ovndb-servers.ocf
@@ -275,7 +275,18 @@ ovsdb_server_start() {
rc=$?
case $rc in
$OCF_SUCCESS) return $rc;;
- $OCF_RUNNING_MASTER) return $rc;;
+ $OCF_RUNNING_MASTER)
+ # When a slave node is promoted as master, the action would be
+ # STOP -> START -> PROMOTE.
+ # When the start action is called, it is possible for the
+ # ovsdb-server's to be started as active. This could happen
+ # if the node owns the $MASTER_IP. At this point, pacemaker
+ # has not promoted this node yet. So return OCF_SUCCESS.
+ # Let pacemaker promote it in subsequent actions.
+ # As per the OCF guidelines, only monitor action should return
+ # OCF_RUNNING_MASTER.
+ # http://www.linux-ha.org/doc/dev-guides/_literal_ocf_running_master_literal_8.html
+ return $OCF_SUCCESS;;
$OCF_ERR_GENERIC) return $rc;;
# Otherwise loop, waiting for the service to start, until
# the cluster times the operation out
@@ -288,7 +299,6 @@ ovsdb_server_stop() {
ovsdb_server_check_status
case $? in
$OCF_NOT_RUNNING) return ${OCF_SUCCESS};;
- $OCF_RUNNING_MASTER) return ${OCF_RUNNING_MASTER};;
esac
${OVN_CTL} stop_ovsdb